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