1273399bf829133a8385332ad43add3c34c889102Chiao Cheng/* 2273399bf829133a8385332ad43add3c34c889102Chiao Cheng * Copyright (C) 2011 The Android Open Source Project 3273399bf829133a8385332ad43add3c34c889102Chiao Cheng * 4273399bf829133a8385332ad43add3c34c889102Chiao Cheng * Licensed under the Apache License, Version 2.0 (the "License"); 5273399bf829133a8385332ad43add3c34c889102Chiao Cheng * you may not use this file except in compliance with the License. 6273399bf829133a8385332ad43add3c34c889102Chiao Cheng * You may obtain a copy of the License at 7273399bf829133a8385332ad43add3c34c889102Chiao Cheng * 8273399bf829133a8385332ad43add3c34c889102Chiao Cheng * http://www.apache.org/licenses/LICENSE-2.0 9273399bf829133a8385332ad43add3c34c889102Chiao Cheng * 10273399bf829133a8385332ad43add3c34c889102Chiao Cheng * Unless required by applicable law or agreed to in writing, software 11273399bf829133a8385332ad43add3c34c889102Chiao Cheng * distributed under the License is distributed on an "AS IS" BASIS, 12273399bf829133a8385332ad43add3c34c889102Chiao Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13273399bf829133a8385332ad43add3c34c889102Chiao Cheng * See the License for the specific language governing permissions and 14273399bf829133a8385332ad43add3c34c889102Chiao Cheng * limitations under the License. 15273399bf829133a8385332ad43add3c34c889102Chiao Cheng */ 16273399bf829133a8385332ad43add3c34c889102Chiao Cheng 17273399bf829133a8385332ad43add3c34c889102Chiao Chengpackage com.android.contacts.common.model.account; 18273399bf829133a8385332ad43add3c34c889102Chiao Cheng 19273399bf829133a8385332ad43add3c34c889102Chiao Chengimport android.content.Context; 205c59ffa9423c49fe149719510dbc2bb3bed946fbJay Shraunerimport android.test.InstrumentationTestCase; 21273399bf829133a8385332ad43add3c34c889102Chiao Chengimport android.test.suitebuilder.annotation.SmallTest; 22273399bf829133a8385332ad43add3c34c889102Chiao Cheng 23a841e83d7b513e31181fd7e9b01aabeedacfeceaYorke Leeimport com.android.contacts.common.tests.R; 24273399bf829133a8385332ad43add3c34c889102Chiao Cheng 25273399bf829133a8385332ad43add3c34c889102Chiao Cheng/** 26273399bf829133a8385332ad43add3c34c889102Chiao Cheng * Test case for {@link AccountType}. 27273399bf829133a8385332ad43add3c34c889102Chiao Cheng * 28273399bf829133a8385332ad43add3c34c889102Chiao Cheng * adb shell am instrument -w -e class com.android.contacts.model.AccountTypeTest \ 29273399bf829133a8385332ad43add3c34c889102Chiao Cheng com.android.contacts.tests/android.test.InstrumentationTestRunner 30273399bf829133a8385332ad43add3c34c889102Chiao Cheng */ 31273399bf829133a8385332ad43add3c34c889102Chiao Cheng@SmallTest 325c59ffa9423c49fe149719510dbc2bb3bed946fbJay Shraunerpublic class AccountTypeTest extends InstrumentationTestCase { 33273399bf829133a8385332ad43add3c34c889102Chiao Cheng public void testGetResourceText() { 34273399bf829133a8385332ad43add3c34c889102Chiao Cheng // In this test we use the test package itself as an external package. 355c59ffa9423c49fe149719510dbc2bb3bed946fbJay Shrauner final String packageName = getInstrumentation().getContext().getPackageName(); 36273399bf829133a8385332ad43add3c34c889102Chiao Cheng 373b1f640c9b2c0c98de0719af79fc02c022833883Jay Shrauner final Context c = getInstrumentation().getTargetContext(); 38273399bf829133a8385332ad43add3c34c889102Chiao Cheng final String DEFAULT = "ABC"; 39273399bf829133a8385332ad43add3c34c889102Chiao Cheng 40273399bf829133a8385332ad43add3c34c889102Chiao Cheng // Package name null, resId -1, use the default 41273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertEquals(DEFAULT, AccountType.getResourceText(c, null, -1, DEFAULT)); 42273399bf829133a8385332ad43add3c34c889102Chiao Cheng 43273399bf829133a8385332ad43add3c34c889102Chiao Cheng // Resource ID -1, use the default 44273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertEquals(DEFAULT, AccountType.getResourceText(c, packageName, -1, DEFAULT)); 45273399bf829133a8385332ad43add3c34c889102Chiao Cheng 46273399bf829133a8385332ad43add3c34c889102Chiao Cheng // Load from an external package. (here, we use this test package itself) 47273399bf829133a8385332ad43add3c34c889102Chiao Cheng final int externalResID = R.string.test_string; 485c59ffa9423c49fe149719510dbc2bb3bed946fbJay Shrauner assertEquals(getInstrumentation().getContext().getString(externalResID), 49273399bf829133a8385332ad43add3c34c889102Chiao Cheng AccountType.getResourceText(c, packageName, externalResID, DEFAULT)); 50273399bf829133a8385332ad43add3c34c889102Chiao Cheng 51273399bf829133a8385332ad43add3c34c889102Chiao Cheng // Load from the contacts package itself. 52273399bf829133a8385332ad43add3c34c889102Chiao Cheng final int internalResId = com.android.contacts.common.R.string.contactsList; 53273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertEquals(c.getString(internalResId), 54273399bf829133a8385332ad43add3c34c889102Chiao Cheng AccountType.getResourceText(c, null, internalResId, DEFAULT)); 55273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 56273399bf829133a8385332ad43add3c34c889102Chiao Cheng 57273399bf829133a8385332ad43add3c34c889102Chiao Cheng /** 58273399bf829133a8385332ad43add3c34c889102Chiao Cheng * Verify if {@link AccountType#getInviteContactActionLabel} correctly gets the resource ID 59273399bf829133a8385332ad43add3c34c889102Chiao Cheng * from {@link AccountType#getInviteContactActionResId} 60273399bf829133a8385332ad43add3c34c889102Chiao Cheng */ 61273399bf829133a8385332ad43add3c34c889102Chiao Cheng public void testGetInviteContactActionLabel() { 625c59ffa9423c49fe149719510dbc2bb3bed946fbJay Shrauner final String packageName = getInstrumentation().getContext().getPackageName(); 633b1f640c9b2c0c98de0719af79fc02c022833883Jay Shrauner final Context c = getInstrumentation().getTargetContext(); 64273399bf829133a8385332ad43add3c34c889102Chiao Cheng 65273399bf829133a8385332ad43add3c34c889102Chiao Cheng final int externalResID = R.string.test_string; 66273399bf829133a8385332ad43add3c34c889102Chiao Cheng 67273399bf829133a8385332ad43add3c34c889102Chiao Cheng AccountType accountType = new AccountType() { 68273399bf829133a8385332ad43add3c34c889102Chiao Cheng { 69273399bf829133a8385332ad43add3c34c889102Chiao Cheng resourcePackageName = packageName; 70273399bf829133a8385332ad43add3c34c889102Chiao Cheng syncAdapterPackageName = packageName; 71273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 72273399bf829133a8385332ad43add3c34c889102Chiao Cheng @Override protected int getInviteContactActionResId() { 73273399bf829133a8385332ad43add3c34c889102Chiao Cheng return externalResID; 74273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 75273399bf829133a8385332ad43add3c34c889102Chiao Cheng 76273399bf829133a8385332ad43add3c34c889102Chiao Cheng @Override public boolean isGroupMembershipEditable() { 77273399bf829133a8385332ad43add3c34c889102Chiao Cheng return false; 78273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 79273399bf829133a8385332ad43add3c34c889102Chiao Cheng 80273399bf829133a8385332ad43add3c34c889102Chiao Cheng @Override public boolean areContactsWritable() { 81273399bf829133a8385332ad43add3c34c889102Chiao Cheng return false; 82273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 83273399bf829133a8385332ad43add3c34c889102Chiao Cheng }; 84273399bf829133a8385332ad43add3c34c889102Chiao Cheng 855c59ffa9423c49fe149719510dbc2bb3bed946fbJay Shrauner assertEquals(getInstrumentation().getContext().getString(externalResID), 86273399bf829133a8385332ad43add3c34c889102Chiao Cheng accountType.getInviteContactActionLabel(c)); 87273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 88273399bf829133a8385332ad43add3c34c889102Chiao Cheng 89273399bf829133a8385332ad43add3c34c889102Chiao Cheng public void testDisplayLabelComparator() { 90273399bf829133a8385332ad43add3c34c889102Chiao Cheng final AccountTypeForDisplayLabelTest EMPTY = new AccountTypeForDisplayLabelTest(""); 91273399bf829133a8385332ad43add3c34c889102Chiao Cheng final AccountTypeForDisplayLabelTest NULL = new AccountTypeForDisplayLabelTest(null); 92273399bf829133a8385332ad43add3c34c889102Chiao Cheng final AccountTypeForDisplayLabelTest AA = new AccountTypeForDisplayLabelTest("aa"); 93273399bf829133a8385332ad43add3c34c889102Chiao Cheng final AccountTypeForDisplayLabelTest BBB = new AccountTypeForDisplayLabelTest("bbb"); 94273399bf829133a8385332ad43add3c34c889102Chiao Cheng final AccountTypeForDisplayLabelTest C = new AccountTypeForDisplayLabelTest("c"); 95273399bf829133a8385332ad43add3c34c889102Chiao Cheng 96273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertTrue(compareDisplayLabel(AA, BBB) < 0); 97273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertTrue(compareDisplayLabel(BBB, C) < 0); 98273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertTrue(compareDisplayLabel(AA, C) < 0); 99273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertTrue(compareDisplayLabel(AA, AA) == 0); 100273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertTrue(compareDisplayLabel(BBB, AA) > 0); 101273399bf829133a8385332ad43add3c34c889102Chiao Cheng 102273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertTrue(compareDisplayLabel(EMPTY, AA) < 0); 103273399bf829133a8385332ad43add3c34c889102Chiao Cheng assertTrue(compareDisplayLabel(EMPTY, NULL) == 0); 104273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 105273399bf829133a8385332ad43add3c34c889102Chiao Cheng 106273399bf829133a8385332ad43add3c34c889102Chiao Cheng private int compareDisplayLabel(AccountType lhs, AccountType rhs) { 1073b1f640c9b2c0c98de0719af79fc02c022833883Jay Shrauner return new AccountType.DisplayLabelComparator( 1083b1f640c9b2c0c98de0719af79fc02c022833883Jay Shrauner getInstrumentation().getTargetContext()).compare(lhs, rhs); 109273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 110273399bf829133a8385332ad43add3c34c889102Chiao Cheng 111273399bf829133a8385332ad43add3c34c889102Chiao Cheng private class AccountTypeForDisplayLabelTest extends AccountType { 112273399bf829133a8385332ad43add3c34c889102Chiao Cheng private final String mDisplayLabel; 113273399bf829133a8385332ad43add3c34c889102Chiao Cheng 114273399bf829133a8385332ad43add3c34c889102Chiao Cheng public AccountTypeForDisplayLabelTest(String displayLabel) { 115273399bf829133a8385332ad43add3c34c889102Chiao Cheng mDisplayLabel = displayLabel; 116273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 117273399bf829133a8385332ad43add3c34c889102Chiao Cheng 118273399bf829133a8385332ad43add3c34c889102Chiao Cheng @Override 119273399bf829133a8385332ad43add3c34c889102Chiao Cheng public CharSequence getDisplayLabel(Context context) { 120273399bf829133a8385332ad43add3c34c889102Chiao Cheng return mDisplayLabel; 121273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 122273399bf829133a8385332ad43add3c34c889102Chiao Cheng 123273399bf829133a8385332ad43add3c34c889102Chiao Cheng @Override 124273399bf829133a8385332ad43add3c34c889102Chiao Cheng public boolean isGroupMembershipEditable() { 125273399bf829133a8385332ad43add3c34c889102Chiao Cheng return false; 126273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 127273399bf829133a8385332ad43add3c34c889102Chiao Cheng 128273399bf829133a8385332ad43add3c34c889102Chiao Cheng @Override 129273399bf829133a8385332ad43add3c34c889102Chiao Cheng public boolean areContactsWritable() { 130273399bf829133a8385332ad43add3c34c889102Chiao Cheng return false; 131273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 132273399bf829133a8385332ad43add3c34c889102Chiao Cheng } 133273399bf829133a8385332ad43add3c34c889102Chiao Cheng} 134