1/* 2 * Copyright (C) 2006 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 17package com.android.internal.telephony; 18 19import junit.framework.TestCase; 20import android.test.suitebuilder.annotation.SmallTest; 21 22import com.android.internal.telephony.uicc.AdnRecord; 23import com.android.internal.telephony.uicc.IccUtils; 24 25/** 26 * {@hide} 27 */ 28public class AdnRecordTest extends TestCase { 29 30 @SmallTest 31 public void testBasic() throws Exception { 32 AdnRecord adn; 33 34 // 35 // Typical record 36 // 37 adn = new AdnRecord( 38 IccUtils.hexStringToBytes("566F696365204D61696C07918150367742F3FFFFFFFFFFFF")); 39 40 assertEquals("Voice Mail", adn.getAlphaTag()); 41 assertEquals("+18056377243", adn.getNumber()); 42 assertFalse(adn.isEmpty()); 43 44 // 45 // Empty records, empty strings 46 // 47 adn = new AdnRecord( 48 IccUtils.hexStringToBytes("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")); 49 50 assertEquals("", adn.getAlphaTag()); 51 assertEquals("", adn.getNumber()); 52 assertTrue(adn.isEmpty()); 53 54 // 55 // Record too short 56 // 57 adn = new AdnRecord(IccUtils.hexStringToBytes( "FF")); 58 59 assertEquals("", adn.getAlphaTag()); 60 assertEquals("", adn.getNumber()); 61 assertTrue(adn.isEmpty()); 62 63 // 64 // TOA = 0xff ("control string") 65 // 66 adn = new AdnRecord( 67 IccUtils.hexStringToBytes("566F696365204D61696C07FF8150367742F3FFFFFFFFFFFF")); 68 69 assertEquals("Voice Mail", adn.getAlphaTag()); 70 assertEquals("18056377243", adn.getNumber()); 71 assertFalse(adn.isEmpty()); 72 73 // 74 // TOA = 0x81 (unknown) 75 // 76 adn = new AdnRecord( 77 IccUtils.hexStringToBytes("566F696365204D61696C07818150367742F3FFFFFFFFFFFF")); 78 79 assertEquals("Voice Mail", adn.getAlphaTag()); 80 assertEquals("18056377243", adn.getNumber()); 81 assertFalse(adn.isEmpty()); 82 83 // 84 // Number Length is too long 85 // 86 adn = new AdnRecord( 87 IccUtils.hexStringToBytes("566F696365204D61696C0F918150367742F3FFFFFFFFFFFF")); 88 89 assertEquals("Voice Mail", adn.getAlphaTag()); 90 assertEquals("", adn.getNumber()); 91 assertFalse(adn.isEmpty()); 92 93 // 94 // Number Length is zero (invalid) 95 // 96 adn = new AdnRecord( 97 IccUtils.hexStringToBytes("566F696365204D61696C00918150367742F3FFFFFFFFFFFF")); 98 99 assertEquals("Voice Mail", adn.getAlphaTag()); 100 assertEquals("", adn.getNumber()); 101 assertFalse(adn.isEmpty()); 102 103 // 104 // Number Length is 2, first number byte is FF, TOA is international 105 // 106 adn = new AdnRecord( 107 IccUtils.hexStringToBytes("566F696365204D61696C0291FF50367742F3FFFFFFFFFFFF")); 108 109 assertEquals("Voice Mail", adn.getAlphaTag()); 110 assertEquals("", adn.getNumber()); 111 assertFalse(adn.isEmpty()); 112 113 // 114 // Number Length is 2, first number digit is valid, TOA is international 115 // 116 adn = new AdnRecord( 117 IccUtils.hexStringToBytes("566F696365204D61696C0291F150367742F3FFFFFFFFFFFF")); 118 119 assertEquals("Voice Mail", adn.getAlphaTag()); 120 assertEquals("+1", adn.getNumber()); 121 assertFalse(adn.isEmpty()); 122 123 // 124 // An extended record 125 // 126 adn = new AdnRecord( 127 IccUtils.hexStringToBytes( 128 "4164676A6DFFFFFFFFFFFFFFFFFFFFFF0B918188551512C221436587FF01")); 129 130 assertEquals("Adgjm", adn.getAlphaTag()); 131 assertEquals("+18885551212,12345678", adn.getNumber()); 132 assertFalse(adn.isEmpty()); 133 assertTrue(adn.hasExtendedRecord()); 134 135 adn.appendExtRecord(IccUtils.hexStringToBytes("0206092143658709ffffffffff")); 136 137 assertEquals("Adgjm", adn.getAlphaTag()); 138 assertEquals("+18885551212,12345678901234567890", adn.getNumber()); 139 assertFalse(adn.isEmpty()); 140 141 // 142 // An extended record with an invalid extension 143 // 144 adn = new AdnRecord( 145 IccUtils.hexStringToBytes( 146 "4164676A6DFFFFFFFFFFFFFFFFFFFFFF0B918188551512C221436587FF01")); 147 148 assertEquals("Adgjm", adn.getAlphaTag()); 149 assertEquals("+18885551212,12345678", adn.getNumber()); 150 assertFalse(adn.isEmpty()); 151 assertTrue(adn.hasExtendedRecord()); 152 153 adn.appendExtRecord(IccUtils.hexStringToBytes("0106092143658709ffffffffff")); 154 155 assertEquals("Adgjm", adn.getAlphaTag()); 156 assertEquals("+18885551212,12345678", adn.getNumber()); 157 assertFalse(adn.isEmpty()); 158 159 // 160 // An extended record with an invalid extension 161 // 162 adn = new AdnRecord( 163 IccUtils.hexStringToBytes( 164 "4164676A6DFFFFFFFFFFFFFFFFFFFFFF0B918188551512C221436587FF01")); 165 166 assertEquals("Adgjm", adn.getAlphaTag()); 167 assertEquals("+18885551212,12345678", adn.getNumber()); 168 assertFalse(adn.isEmpty()); 169 assertTrue(adn.hasExtendedRecord()); 170 171 adn.appendExtRecord(IccUtils.hexStringToBytes("020B092143658709ffffffffff")); 172 173 assertEquals("Adgjm", adn.getAlphaTag()); 174 assertEquals("+18885551212,12345678", adn.getNumber()); 175 assertFalse(adn.isEmpty()); 176 } 177} 178 179 180