10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2007 The Android Open Source Project
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.test.suitebuilder.annotation.MediumTest;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.TestPhoneNotifier;
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SmsMessage;
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.test.SimulatedCommands;
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.test.SimulatedRadioControl;
24d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccUtils;
25d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenka
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.test.AndroidTestCase;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.test.suitebuilder.annotation.Suppress;
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.Iterator;
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide}
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class SMSDispatcherTest extends AndroidTestCase {
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @MediumTest
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void testCMT1() throws Exception {
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SmsMessage sms;
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SmsHeader header;
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        String[] lines = new String[2];
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        lines[0] = "+CMT: ,158";
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        lines[1] = "07914140279510F6440A8111110301003BF56080426101748A8C0B05040B"
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "8423F000035502010106276170706C69636174696F6E2F766E642E776170"
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "2E6D6D732D6D65737361676500AF848D0185B4848C8298524F347839776F"
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "7547514D4141424C3641414141536741415A4B554141414141008D908918"
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "802B31363530323438363137392F545950453D504C4D4E008A808E028000"
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "88058103093A8083687474703A2F2F36";
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        sms = SmsMessage.newFromCMT(lines);
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        header = sms.getUserDataHeader();
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertNotNull(header);
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertNotNull(sms.getUserData());
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertNotNull(header.concatRef);
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.concatRef.refNumber, 85);
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.concatRef.msgCount, 2);
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.concatRef.seqNumber, 1);
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.concatRef.isEightBits, true);
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertNotNull(header.portAddrs);
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.portAddrs.destPort, 2948);
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.portAddrs.origPort, 9200);
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.portAddrs.areEightBits, false);
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @MediumTest
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void testCMT2() throws Exception {
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SmsMessage sms;
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SmsHeader header;
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        String[] lines = new String[2];
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        lines[0] = "+CMT: ,77";
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        lines[1] = "07914140279510F6440A8111110301003BF56080426101848A3B0B05040B8423F"
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "00003550202362E3130322E3137312E3135302F524F347839776F7547514D4141"
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "424C3641414141536741415A4B55414141414100";
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        sms = SmsMessage.newFromCMT(lines);
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        header = sms.getUserDataHeader();
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertNotNull(header);
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertNotNull(sms.getUserData());
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertNotNull(header.concatRef);
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.concatRef.refNumber, 85);
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.concatRef.msgCount, 2);
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.concatRef.seqNumber, 2);
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.concatRef.isEightBits, true);
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertNotNull(header.portAddrs);
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.portAddrs.destPort, 2948);
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.portAddrs.origPort, 9200);
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        assertEquals(header.portAddrs.areEightBits, false);
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @MediumTest
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void testEfRecord() throws Exception {
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SmsMessage sms;
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        String s = "03029111000c9194981492631000f269206190022000a053e4534a05358bd3"
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "69f05804259da0219418a40641536a110a0aea408080604028180e888462c1"
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "50341c0f484432a1542c174c46b3e1743c9f9068442a994ea8946ac56ab95e"
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "b0986c46abd96eb89c6ec7ebf97ec0a070482c1a8fc8a472c96c3a9fd0a874"
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "4aad5aafd8ac76cbed7abfe0b0784c2e9bcfe8b47acd6ebbdff0b87c4eafdb"
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                 + "eff8bc7ecfeffbffffffffffffffffffffffffffff";
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville       byte[] data = IccUtils.hexStringToBytes(s);
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville       sms = SmsMessage.createFromEfRecord(1, data);
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville       assertNotNull(sms.getMessageBody());
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
108