GoogleAccountType.java revision e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845
1e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar/*
2e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * Copyright (C) 2009 The Android Open Source Project
3e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar *
4e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * Licensed under the Apache License, Version 2.0 (the "License");
5e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * you may not use this file except in compliance with the License.
6e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * You may obtain a copy of the License at
7e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar *
8e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar *      http://www.apache.org/licenses/LICENSE-2.0
9e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar *
10e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * Unless required by applicable law or agreed to in writing, software
11e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * distributed under the License is distributed on an "AS IS" BASIS,
12e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * See the License for the specific language governing permissions and
14e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * limitations under the License.
15e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar */
16e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
17e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarpackage com.android.contacts;
18e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
19e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarimport android.content.Context;
20e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarimport android.graphics.Bitmap;
21e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarimport android.graphics.BitmapFactory;
22e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarimport android.test.AndroidTestCase;
23e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarimport android.test.suitebuilder.annotation.LargeTest;
24e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
25e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarimport java.util.Arrays;
26e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
27e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarimport com.android.contacts.StyleManager;
28e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarimport com.android.contacts.tests.R;
29e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
30e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar/**
31e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar * Tests for the StyleManager class.
32e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar */
33e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar@LargeTest
34e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millarpublic class StyleManagerTests extends AndroidTestCase {
35e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
36e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    public static final String LOG_TAG = "StyleManagerTests";
37e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
38e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    private StyleManager mStyleManager;
39e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    private static final String PACKAGE_NAME = "com.android.contacts.tests";
40e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    private static final String PHONE_MIMETYPE = "vnd.android.cursor.item/phone";
41e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    private Context mContext;
42e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
43e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    public StyleManagerTests() {
44e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        super();
45e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    }
46e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
47e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    @Override
48e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    public void setUp() {
49e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        mContext = getContext();
50e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        mStyleManager = StyleManager.getInstance(mContext);
51e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    }
52e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
53e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    public void testGetMimetypeIcon() {
54e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        Bitmap phoneIconFromSm = mStyleManager.getMimetypeIcon(PACKAGE_NAME, PHONE_MIMETYPE);
55e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int smHeight = phoneIconFromSm.getHeight();
56e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int smWidth = phoneIconFromSm.getWidth();
57e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
58e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        Bitmap phoneIconFromRes = BitmapFactory.decodeResource(mContext.getResources(),
59e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar                R.drawable.phone_icon, null);
60e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int resHeight = phoneIconFromRes.getHeight();
61e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int resWidth = phoneIconFromRes.getWidth();
62e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
63e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int[] smPixels = new int[smWidth*smHeight];
64e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        phoneIconFromSm.getPixels(smPixels, 0, smWidth, 0, 0, smWidth, smHeight);
65e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
66e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int[] resPixels = new int[resWidth*resHeight];
67e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        phoneIconFromRes.getPixels(resPixels, 0, resWidth, 0, 0, resWidth, resHeight);
68e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
69e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(Arrays.equals(smPixels, resPixels));
70e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    }
71e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
72e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    public void testGetMissingMimetypeIcon() {
73e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        Bitmap postalIconFromSm = mStyleManager.getMimetypeIcon(PACKAGE_NAME,
74e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar                "vnd.android.cursor.item/postal-address");
75e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
76e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertNull(postalIconFromSm);
77e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    }
78e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
79e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    public void testGetDefaultIcon() {
80e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        Bitmap defaultIconFromSm = mStyleManager.getDefaultIcon(PACKAGE_NAME);
81e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
82e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int smHeight = defaultIconFromSm.getHeight();
83e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int smWidth = defaultIconFromSm.getWidth();
84e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
85e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        Bitmap defaultIconFromRes = BitmapFactory.decodeResource(mContext.getResources(),
86e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar                R.drawable.default_icon, null);
87e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int resHeight = defaultIconFromRes.getHeight();
88e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int resWidth = defaultIconFromRes.getWidth();
89e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
90e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int[] smPixels = new int[smWidth*smHeight];
91e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        defaultIconFromSm.getPixels(smPixels, 0, smWidth, 0, 0, smWidth, smHeight);
92e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
93e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        int[] resPixels = new int[resWidth*resHeight];
94e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        defaultIconFromRes.getPixels(resPixels, 0, resWidth, 0, 0, resWidth, resHeight);
95e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
96e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(Arrays.equals(smPixels, resPixels));
97e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    }
98e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
99e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    public void testCaching() {
100e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        // Clear cache
101e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        mStyleManager.onPackageChange(PACKAGE_NAME);
102e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.getIconCacheSize() == 0);
103e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.getStyleSetCacheSize() == 0);
104e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
105e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        // Getting the icon should add it to the cache.
106e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        mStyleManager.getDefaultIcon(PACKAGE_NAME);
107e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.getIconCacheSize() == 1);
108e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.getStyleSetCacheSize() == 1);
109e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.isIconCacheHit(PACKAGE_NAME, StyleManager.DEFAULT_MIMETYPE));
110e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertFalse(mStyleManager.isIconCacheHit(PACKAGE_NAME, PHONE_MIMETYPE));
111e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.isStyleSetCacheHit(PACKAGE_NAME));
112e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
113e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        mStyleManager.getMimetypeIcon(PACKAGE_NAME, PHONE_MIMETYPE);
114e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.getIconCacheSize() == 2);
115e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.getStyleSetCacheSize() == 1);
116e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.isIconCacheHit(PACKAGE_NAME, StyleManager.DEFAULT_MIMETYPE));
117e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.isIconCacheHit(PACKAGE_NAME, PHONE_MIMETYPE));
118e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.isStyleSetCacheHit(PACKAGE_NAME));
119e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
120e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        // Clear cache
121e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        mStyleManager.onPackageChange(PACKAGE_NAME);
122e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.getIconCacheSize() == 0);
123e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertTrue(mStyleManager.getStyleSetCacheSize() == 0);
124e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertFalse(mStyleManager.isIconCacheHit(PACKAGE_NAME, StyleManager.DEFAULT_MIMETYPE));
125e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertFalse(mStyleManager.isIconCacheHit(PACKAGE_NAME, PHONE_MIMETYPE));
126e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar        assertFalse(mStyleManager.isStyleSetCacheHit(PACKAGE_NAME));
127e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar    }
128e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar
129e49dfacf0b7b1c327b82bf1bef3c1d4c8c56c845Evan Millar}
130