1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.exchange.eas; 18 19 import android.content.ContentValues; 20 import android.provider.ContactsContract.CommonDataKinds.Email; 21 import android.provider.ContactsContract.CommonDataKinds.StructuredName; 22 import android.test.suitebuilder.annotation.SmallTest; 23 24 import com.android.exchange.utility.ExchangeTestCase; 25 26 import java.io.IOException; 27 import java.util.ArrayList; 28 29 /** 30 * You can run this entire test case with: 31 * runtest -c com.android.exchange.eas.EasSyncContactsTests exchange 32 */ 33 @SmallTest 34 public class EasSyncContactsTests extends ExchangeTestCase { 35 36 // Return null. testTryGetStringDataEverythingNull()37 public void testTryGetStringDataEverythingNull() throws IOException { 38 final String result = EasSyncContacts.tryGetStringData(null, null); 39 assertNull(result); 40 } 41 42 // Return null. testTryGetStringDataNullContentValues()43 public void testTryGetStringDataNullContentValues() throws IOException { 44 final String result = EasSyncContacts.tryGetStringData(null, "TestColumn"); 45 assertNull(result); 46 } 47 48 // Return null. testTryGetStringDataNullColumnName()49 public void testTryGetStringDataNullColumnName() throws IOException { 50 final ContentValues contentValues = new ContentValues(); 51 contentValues.put("test_column", "test_value"); 52 final String result = EasSyncContacts.tryGetStringData(contentValues, null); 53 assertNull(result); 54 } 55 56 // Return null. testTryGetStringDataDoesNotContainColumn()57 public void testTryGetStringDataDoesNotContainColumn() throws IOException { 58 final ContentValues contentValues = new ContentValues(); 59 contentValues.put("test_column", "test_value"); 60 final String result = EasSyncContacts.tryGetStringData(contentValues, "does_not_exist"); 61 assertNull(result); 62 } 63 64 // Return null. testTryGetStringDataEmptyColumnValue()65 public void testTryGetStringDataEmptyColumnValue() throws IOException { 66 final String columnName = "test_column"; 67 final ContentValues contentValues = new ContentValues(); 68 contentValues.put(columnName, ""); 69 final String result = EasSyncContacts.tryGetStringData(contentValues, columnName); 70 assertNull(result); 71 } 72 73 // Return the data type forced to be a string. 74 // TODO: Test other data types. testTryGetStringDataWrongType()75 public void testTryGetStringDataWrongType() throws IOException { 76 final String columnName = "test_column"; 77 final Integer columnValue = new Integer(10); 78 final String columnValueAsString = columnValue.toString(); 79 final ContentValues contentValues = new ContentValues(); 80 contentValues.put(columnName, columnValue); 81 final String result = EasSyncContacts.tryGetStringData(contentValues, columnName); 82 assert(result.equals(columnValueAsString)); 83 } 84 85 // Return the value as a string. testTryGetStringDataSuccess()86 public void testTryGetStringDataSuccess() throws IOException { 87 final String columnName = "test_column"; 88 final String columnValue = "test_value"; 89 final ContentValues contentValues = new ContentValues(); 90 contentValues.put(columnName, columnValue); 91 final String result = EasSyncContacts.tryGetStringData(contentValues, columnName); 92 assertTrue(result.equals(columnValue)); 93 } 94 95 // Return null. testGenerateFileAsNullParameters()96 public void testGenerateFileAsNullParameters() throws IOException { 97 final String result = EasSyncContacts.generateFileAs(null, null); 98 assertNull(result); 99 } 100 101 // Should still return null because there is no name and no email. testGenerateFileAsNullNameValuesAndEmptyList()102 public void testGenerateFileAsNullNameValuesAndEmptyList() throws IOException { 103 final ArrayList<ContentValues> emailList = new ArrayList<ContentValues>(); 104 final String result = EasSyncContacts.generateFileAs(null, emailList); 105 assertNull(result); 106 } 107 108 // Just return the first email address that was passed in. testGenerateFileAsNullNameValues()109 public void testGenerateFileAsNullNameValues() throws IOException { 110 final ArrayList<ContentValues> emailList = new ArrayList<ContentValues>(); 111 final ContentValues emailValue = new ContentValues(); 112 final String emailString = "anthonylee@google.com"; 113 emailValue.put(Email.DATA, emailString); 114 emailList.add(emailValue); 115 final String result = EasSyncContacts.generateFileAs(null, emailList); 116 assertTrue(result.equals(emailString)); 117 } 118 119 // Just return the formatted name. testGenerateFileAsNullEmailValues()120 public void testGenerateFileAsNullEmailValues() throws IOException { 121 final ContentValues nameValues = new ContentValues(); 122 final String firstName = "Joe"; 123 final String middleName = "Bob"; 124 final String lastName = "Smith"; 125 final String suffix = "Jr."; 126 nameValues.put(StructuredName.GIVEN_NAME, firstName); 127 nameValues.put(StructuredName.FAMILY_NAME, lastName); 128 nameValues.put(StructuredName.MIDDLE_NAME, middleName); 129 nameValues.put(StructuredName.SUFFIX, suffix); 130 final String result = EasSyncContacts.generateFileAs(nameValues, null); 131 final String generatedName = lastName + " " + suffix + ", " + firstName + " " + middleName; 132 assertTrue(generatedName.equals(result)); 133 } 134 135 // This will generate a string that is similar to the full string but with no first name. testGenerateFileAsNullFirstName()136 public void testGenerateFileAsNullFirstName() throws IOException { 137 final ContentValues nameValues = new ContentValues(); 138 final String middleName = "Bob"; 139 final String lastName = "Smith"; 140 final String suffix = "Jr."; 141 nameValues.put(StructuredName.FAMILY_NAME, lastName); 142 nameValues.put(StructuredName.MIDDLE_NAME, middleName); 143 nameValues.put(StructuredName.SUFFIX, suffix); 144 final String result = EasSyncContacts.generateFileAs(nameValues, null); 145 final String generatedName = lastName + " " + suffix + ", " + middleName; 146 assertTrue(generatedName.equals(result)); 147 } 148 149 // This will generate a string that is missing both the last name and the suffix. testGenerateFileAsNullLastName()150 public void testGenerateFileAsNullLastName() throws IOException { 151 final ContentValues nameValues = new ContentValues(); 152 final String firstName = "Joe"; 153 final String middleName = "Bob"; 154 final String suffix = "Jr."; 155 nameValues.put(StructuredName.GIVEN_NAME, firstName); 156 nameValues.put(StructuredName.MIDDLE_NAME, middleName); 157 nameValues.put(StructuredName.SUFFIX, suffix); 158 final String result = EasSyncContacts.generateFileAs(nameValues, null); 159 final String generatedName = firstName + " " + middleName; 160 assertTrue(generatedName.equals(result)); 161 } 162 163 // This will generate a string that is similar to the full name but missing the middle name. testGenerateFileAsNullMiddleName()164 public void testGenerateFileAsNullMiddleName() throws IOException { 165 final ContentValues nameValues = new ContentValues(); 166 final String firstName = "Joe"; 167 final String lastName = "Smith"; 168 final String suffix = "Jr."; 169 nameValues.put(StructuredName.GIVEN_NAME, firstName); 170 nameValues.put(StructuredName.FAMILY_NAME, lastName); 171 nameValues.put(StructuredName.SUFFIX, suffix); 172 final String result = EasSyncContacts.generateFileAs(nameValues, null); 173 final String generatedName = lastName + " " + suffix + ", " + firstName; 174 assertTrue(generatedName.equals(result)); 175 } 176 177 // Similar to the full name but no suffix. testGenerateFileAsNullSuffix()178 public void testGenerateFileAsNullSuffix() throws IOException { 179 final ContentValues nameValues = new ContentValues(); 180 final String firstName = "Joe"; 181 final String middleName = "Bob"; 182 final String lastName = "Smith"; 183 nameValues.put(StructuredName.GIVEN_NAME, firstName); 184 nameValues.put(StructuredName.FAMILY_NAME, lastName); 185 nameValues.put(StructuredName.MIDDLE_NAME, middleName); 186 final String result = EasSyncContacts.generateFileAs(nameValues, null); 187 final String generatedName = lastName + ", " + firstName + " " + middleName; 188 assertTrue(generatedName.equals(result)); 189 } 190 } 191