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