/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.telephony; import android.os.ServiceManager; import android.test.suitebuilder.annotation.Suppress; import com.android.internal.telephony.uicc.AdnRecord; import com.android.internal.telephony.uicc.IccConstants; import java.util.List; import junit.framework.TestCase; @Suppress public class SimPhoneBookTest extends TestCase { public void testBasic() throws Exception { IIccPhoneBook simPhoneBook = IIccPhoneBook.Stub.asInterface(ServiceManager.getService("simphonebook")); assertNotNull(simPhoneBook); int size[] = simPhoneBook.getAdnRecordsSize(IccConstants.EF_ADN); assertNotNull(size); assertEquals(3, size.length); assertEquals(size[0] * size[2], size[1]); assertTrue(size[2] >= 100); List adnRecordList = simPhoneBook.getAdnRecordsInEf(IccConstants.EF_ADN); // do it twice cause the second time shall read from cache only adnRecordList = simPhoneBook.getAdnRecordsInEf(IccConstants.EF_ADN); assertNotNull(adnRecordList); // Test for phone book update int adnIndex, listIndex = 0; AdnRecord originalAdn = null; // We need to maintain the state of the SIM before and after the test. // Since this test doesn't mock the SIM we try to get a valid ADN record, // for 3 tries and if this fails, we bail out. for (adnIndex = 3 ; adnIndex >= 1; adnIndex--) { listIndex = adnIndex - 1; // listIndex is zero based. originalAdn = adnRecordList.get(listIndex); assertNotNull("Original Adn is Null.", originalAdn); assertNotNull("Original Adn alpha tag is null.", originalAdn.getAlphaTag()); assertNotNull("Original Adn number is null.", originalAdn.getNumber()); if (originalAdn.getNumber().length() > 0 && originalAdn.getAlphaTag().length() > 0) { break; } } if (adnIndex == 0) return; AdnRecord emptyAdn = new AdnRecord("", ""); AdnRecord firstAdn = new AdnRecord("John", "4085550101"); AdnRecord secondAdn = new AdnRecord("Andy", "6505550102"); String pin2 = null; // udpate by index boolean success = simPhoneBook.updateAdnRecordsInEfByIndex(IccConstants.EF_ADN, firstAdn.getAlphaTag(), firstAdn.getNumber(), adnIndex, pin2); adnRecordList = simPhoneBook.getAdnRecordsInEf(IccConstants.EF_ADN); AdnRecord tmpAdn = adnRecordList.get(listIndex); assertTrue(success); assertTrue(firstAdn.isEqual(tmpAdn)); // replace by search success = simPhoneBook.updateAdnRecordsInEfBySearch(IccConstants.EF_ADN, firstAdn.getAlphaTag(), firstAdn.getNumber(), secondAdn.getAlphaTag(), secondAdn.getNumber(), pin2); adnRecordList = simPhoneBook.getAdnRecordsInEf(IccConstants.EF_ADN); tmpAdn = adnRecordList.get(listIndex); assertTrue(success); assertFalse(firstAdn.isEqual(tmpAdn)); assertTrue(secondAdn.isEqual(tmpAdn)); // erase be search success = simPhoneBook.updateAdnRecordsInEfBySearch(IccConstants.EF_ADN, secondAdn.getAlphaTag(), secondAdn.getNumber(), emptyAdn.getAlphaTag(), emptyAdn.getNumber(), pin2); adnRecordList = simPhoneBook.getAdnRecordsInEf(IccConstants.EF_ADN); tmpAdn = adnRecordList.get(listIndex); assertTrue(success); assertTrue(tmpAdn.isEmpty()); // restore the orginial adn success = simPhoneBook.updateAdnRecordsInEfByIndex(IccConstants.EF_ADN, originalAdn.getAlphaTag(), originalAdn.getNumber(), adnIndex, pin2); adnRecordList = simPhoneBook.getAdnRecordsInEf(IccConstants.EF_ADN); tmpAdn = adnRecordList.get(listIndex); assertTrue(success); assertTrue(originalAdn.isEqual(tmpAdn)); } }