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