183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink/*
283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * Copyright (C) 2006 The Android Open Source Project
383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink *
483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * Licensed under the Apache License, Version 2.0 (the "License");
583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * you may not use this file except in compliance with the License.
683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * You may obtain a copy of the License at
783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink *
883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink *      http://www.apache.org/licenses/LICENSE-2.0
983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink *
1083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * Unless required by applicable law or agreed to in writing, software
1183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * distributed under the License is distributed on an "AS IS" BASIS,
1283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * See the License for the specific language governing permissions and
1483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink * limitations under the License.
1583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink */
1683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage com.android.internal.telephony.cdma.sms;
1883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
19af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalinkimport android.telephony.TelephonyManager;
20af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink
2183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.telephony.GsmAlphabet;
2283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.telephony.SmsHeader;
23e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalinkimport com.android.internal.telephony.cdma.SmsMessage;
2483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.telephony.cdma.sms.BearerData;
2583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.telephony.cdma.sms.UserData;
2683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.telephony.cdma.sms.CdmaSmsAddress;
27e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalinkimport com.android.internal.telephony.SmsMessageBase.TextEncodingDetails;
2883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.util.BitwiseInputStream;
2983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.util.BitwiseOutputStream;
3083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport com.android.internal.util.HexDump;
3183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
3283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport android.test.AndroidTestCase;
3383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkimport android.test.suitebuilder.annotation.SmallTest;
3483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
35e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalinkimport android.util.Log;
36e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink
3795434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalinkimport java.util.ArrayList;
3895434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink
3983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalinkpublic class CdmaSmsTest extends AndroidTestCase {
40f73dc54541f546fb966e94e73a925bbc259f9befTammo Spalink    private final static String LOG_TAG = "XXX CdmaSmsTest XXX";
4183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
4283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    @SmallTest
431424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink    public void testCdmaSmsAddrParsing() throws Exception {
441424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        CdmaSmsAddress addr = CdmaSmsAddress.parse("6502531000");
451424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.ton, CdmaSmsAddress.TON_UNKNOWN);
461424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.digitMode, CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF);
471424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberMode, CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK);
481424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberOfDigits, 10);
491424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.origBytes.length, 10);
501424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        byte[] data = {6, 5, 10, 2, 5, 3, 1, 10, 10, 10};
511424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        for (int i = 0; i < data.length; i++) {
521424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink            assertEquals(addr.origBytes[i], data[i]);
531424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        }
541424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        addr = CdmaSmsAddress.parse("(650) 253-1000");
551424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.ton, CdmaSmsAddress.TON_UNKNOWN);
561424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.digitMode, CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF);
571424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberMode, CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK);
581424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberOfDigits, 10);
591424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.origBytes.length, 10);
601424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        byte[] data2 = {6, 5, 10, 2, 5, 3, 1, 10, 10, 10};
611424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        for (int i = 0; i < data2.length; i++) {
621424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink            assertEquals(addr.origBytes[i], data2[i]);
631424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        }
6461aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink        addr = CdmaSmsAddress.parse("650.253.1000");
6561aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink        assertEquals(addr.ton, CdmaSmsAddress.TON_UNKNOWN);
6661aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink        assertEquals(addr.digitMode, CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF);
6761aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink        assertEquals(addr.numberMode, CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK);
6861aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink        assertEquals(addr.numberOfDigits, 10);
6961aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink        assertEquals(addr.origBytes.length, 10);
7061aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink        byte[] data5 = {6, 5, 10, 2, 5, 3, 1, 10, 10, 10};
7161aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink        for (int i = 0; i < data2.length; i++) {
7261aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink            assertEquals(addr.origBytes[i], data5[i]);
7361aac7b377ac4878a5778457cad239fe3a50604aTammo Spalink        }
741424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        addr = CdmaSmsAddress.parse("(+886) 917 222 555");
751424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.ton, CdmaSmsAddress.TON_INTERNATIONAL_OR_IP);
761424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.digitMode, CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF);
771424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberMode, CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK);
781424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberOfDigits, 12);
791424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.origBytes.length, 12);
801424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        byte[] data3 = {8, 8, 6, 9, 1, 7, 2, 2, 2, 5, 5, 5};
811424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        for (int i = 0; i < data3.length; i++) {
821424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink            assertEquals(addr.origBytes[i], data3[i]);
831424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        }
841424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        addr = CdmaSmsAddress.parse("(650) *253-1000 #600");
851424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        byte[] data4 = {6, 5, 10, 11, 2, 5, 3, 1, 10, 10, 10, 12, 6, 10, 10};
861424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        for (int i = 0; i < data4.length; i++) {
871424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink            assertEquals(addr.origBytes[i], data4[i]);
881424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        }
891424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        String input = "x@y.com,a@b.com";
901424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        addr = CdmaSmsAddress.parse(input);
911424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.ton, CdmaSmsAddress.TON_NATIONAL_OR_EMAIL);
921424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.digitMode, CdmaSmsAddress.DIGIT_MODE_8BIT_CHAR);
931424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberMode, CdmaSmsAddress.NUMBER_MODE_DATA_NETWORK);
941424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberOfDigits, 15);
951424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.origBytes.length, 15);
961424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(new String(addr.origBytes), input);
971424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        addr = CdmaSmsAddress.parse("foo bar");
981424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.ton, CdmaSmsAddress.TON_UNKNOWN);
991424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.digitMode, CdmaSmsAddress.DIGIT_MODE_8BIT_CHAR);
1001424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberMode, CdmaSmsAddress.NUMBER_MODE_DATA_NETWORK);
1011424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.numberOfDigits, 6);
1021424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(addr.origBytes.length, 6);
1031424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(new String(addr.origBytes), "foobar");
1041424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        addr = CdmaSmsAddress.parse("f\noo\tb   a\rr");
1051424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(new String(addr.origBytes), "foobar");
1061424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(CdmaSmsAddress.parse("f\u0000oo bar"), null);
1071424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(CdmaSmsAddress.parse("f\u0007oo bar"), null);
1081424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(CdmaSmsAddress.parse("f\u0080oo bar"), null);
1091424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(CdmaSmsAddress.parse("f\u1ECFboo\u001fbar"), null);
1101424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink        assertEquals(CdmaSmsAddress.parse("f\u0080oo bar"), null);
1111424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink    }
1121424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink
1131424fe0059a3fe163fb98bad807a1eb635b0a161Tammo Spalink    @SmallTest
114d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    public void testUserData7bitGsm() throws Exception {
11583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        String pdu = "00031040900112488ea794e074d69e1b7392c270326cde9e98";
11683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bearerData = BearerData.decode(HexDump.hexStringToByteArray(pdu));
11783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals("Test standard SMS", bearerData.userData.payloadStr);
11883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    }
11983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
12083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    @SmallTest
1218478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink    public void testUserData7bitAscii() throws Exception {
1228478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        String pdu = "0003100160010610262d5ab500";
1238478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        BearerData bearerData = BearerData.decode(HexDump.hexStringToByteArray(pdu));
1248478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals("bjjj", bearerData.userData.payloadStr);
1258478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink    }
1268478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink
1278478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink    @SmallTest
128d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    public void testUserData7bitAsciiTwo() throws Exception {
129d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        String pdu = "00031001d00109104539b4d052ebb3d0";
130d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        BearerData bearerData = BearerData.decode(HexDump.hexStringToByteArray(pdu));
131d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals("SMS Rulz", bearerData.userData.payloadStr);
132d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    }
133d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink
134d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    @SmallTest
135d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    public void testUserDataIa5() throws Exception {
136d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        String pdu = "00031002100109184539b4d052ebb3d0";
137d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        BearerData bearerData = BearerData.decode(HexDump.hexStringToByteArray(pdu));
138d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals("SMS Rulz", bearerData.userData.payloadStr);
139d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    }
140d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink
141d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    @SmallTest
1428478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink    public void testUserData7bitAsciiFeedback() throws Exception {
14383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bearerData = new BearerData();
14483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
14583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.messageId = 0;
14683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.hasUserDataHeader = false;
1478478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        UserData userData = new UserData();
1488478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.payloadStr = "Test standard SMS";
1498478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.msgEncoding = UserData.ENCODING_7BIT_ASCII;
1508478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.msgEncodingSet = true;
1518478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.userData = userData;
1528478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        byte []encodedSms = BearerData.encode(bearerData);
1538478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
1548478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(BearerData.MESSAGE_TYPE_DELIVER, revBearerData.messageType);
1558478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(0, revBearerData.messageId);
1568478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(false, revBearerData.hasUserDataHeader);
1578478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.msgEncoding, revBearerData.userData.msgEncoding);
1588478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.payloadStr.length(), revBearerData.userData.numFields);
1598478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
1602d65082b158564819404e556db6492272111b5b3Tammo Spalink        userData.payloadStr = "Test \u007f standard \u0000 SMS";
1612d65082b158564819404e556db6492272111b5b3Tammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
1622d65082b158564819404e556db6492272111b5b3Tammo Spalink        assertEquals("Test   standard   SMS", revBearerData.userData.payloadStr);
1632d65082b158564819404e556db6492272111b5b3Tammo Spalink        userData.payloadStr = "Test \n standard \r SMS";
1642d65082b158564819404e556db6492272111b5b3Tammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
1652d65082b158564819404e556db6492272111b5b3Tammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
166e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        userData.payloadStr = "";
167e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
168e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
1698478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink    }
1708478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink
1718478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink    @SmallTest
1728478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink    public void testUserData7bitGsmFeedback() throws Exception {
1738478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        BearerData bearerData = new BearerData();
1748478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
1758478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.messageId = 0;
1768478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.hasUserDataHeader = false;
1778478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        UserData userData = new UserData();
1788478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.payloadStr = "Test standard SMS";
1798478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.msgEncoding = UserData.ENCODING_GSM_7BIT_ALPHABET;
1808478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.msgEncodingSet = true;
1818478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.userData = userData;
18283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        byte []encodedSms = BearerData.encode(bearerData);
18383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
18483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(BearerData.MESSAGE_TYPE_DELIVER, revBearerData.messageType);
18583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(0, revBearerData.messageId);
18683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.hasUserDataHeader);
1878478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.msgEncoding, revBearerData.userData.msgEncoding);
1888478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.payloadStr.length(), revBearerData.userData.numFields);
1898478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
190e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        userData.payloadStr = "1234567";
191e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
192e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
193e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        userData.payloadStr = "";
194e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
195e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
196e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        userData.payloadStr = "12345678901234567890123456789012345678901234567890" +
197e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink                "12345678901234567890123456789012345678901234567890" +
198e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink                "12345678901234567890123456789012345678901234567890" +
199e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink                "1234567890";
200e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
201e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
202e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        userData.payloadStr = "Test \u007f illegal \u0000 SMS chars";
203e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
204e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        assertEquals("Test   illegal   SMS chars", revBearerData.userData.payloadStr);
2050ff946e7b5abf51ebb0a6fb335bb3f141214c76eTammo Spalink        userData.payloadStr = "More @ testing\nis great^|^~woohoo";
2060ff946e7b5abf51ebb0a6fb335bb3f141214c76eTammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
2070ff946e7b5abf51ebb0a6fb335bb3f141214c76eTammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
2080fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
2090fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        concatRef.refNumber = 0xEE;
2100fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        concatRef.msgCount = 2;
2110fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        concatRef.seqNumber = 2;
2120fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        concatRef.isEightBits = true;
2130fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        SmsHeader smsHeader = new SmsHeader();
2140fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        smsHeader.concatRef = concatRef;
2150fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        byte[] encodedHeader = SmsHeader.toByteArray(smsHeader);
2160fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        userData.userDataHeader = smsHeader;
2170fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
2180fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
2190fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        SmsHeader decodedHeader = revBearerData.userData.userDataHeader;
2200fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
2210fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
2220fd833a50f43239e619fa383045374459f42ca49Tammo Spalink        assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
22383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    }
22483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
22583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    @SmallTest
2268478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink    public void testUserDataUtf16Feedback() throws Exception {
2278478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        BearerData bearerData = new BearerData();
2288478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
2298478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.messageId = 0;
2308478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.hasUserDataHeader = false;
2318478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        UserData userData = new UserData();
2328478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.payloadStr = "\u0160u\u1E5B\u0301r\u1ECFg\uD835\uDC1At\u00E9\u4E002\u3042";
2338478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.msgEncoding = UserData.ENCODING_UNICODE_16;
2348478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.msgEncodingSet = true;
2358478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.userData = userData;
2368478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        byte []encodedSms = BearerData.encode(bearerData);
2378478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
2388478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(BearerData.MESSAGE_TYPE_DELIVER, revBearerData.messageType);
2398478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(0, revBearerData.messageId);
2408478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(false, revBearerData.hasUserDataHeader);
2418478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.msgEncoding, revBearerData.userData.msgEncoding);
2428478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.payloadStr.length(), revBearerData.userData.numFields);
2438478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
2448478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.msgEncoding = UserData.ENCODING_OCTET;
2458478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.msgEncodingSet = false;
2468478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
2478478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(BearerData.MESSAGE_TYPE_DELIVER, revBearerData.messageType);
2488478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(0, revBearerData.messageId);
2498478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(false, revBearerData.hasUserDataHeader);
2508478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.msgEncoding, revBearerData.userData.msgEncoding);
2518478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.payloadStr.length(), revBearerData.userData.numFields);
2528478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
253e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        userData.payloadStr = "1234567";
254e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
255e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
256e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        userData.payloadStr = "";
257e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        revBearerData = BearerData.decode(BearerData.encode(bearerData));
258e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
25983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    }
26083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
26183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    @SmallTest
262baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink    public void testMonolithicOne() throws Exception {
263baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        String pdu = "0003200010010410168d2002010503060812011101590501c706069706180000000701c108" +
264baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink                "01c00901800a01e00b01030c01c00d01070e05039acc13880f018011020566";
265baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        BearerData bearerData = BearerData.decode(HexDump.hexStringToByteArray(pdu));
266baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.messageType, BearerData.MESSAGE_TYPE_SUBMIT);
267baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.messageId, 1);
268baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.priority, BearerData.PRIORITY_EMERGENCY);
269baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.privacy, BearerData.PRIVACY_CONFIDENTIAL);
270baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userAckReq, true);
271baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.readAckReq, true);
272baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deliveryAckReq, true);
273baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.reportReq, false);
274baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.numberOfMessages, 3);
275baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.alert, BearerData.ALERT_HIGH_PRIO);
276baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.language, BearerData.LANGUAGE_HEBREW);
277baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.digitMode, CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF);
278baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.numberMode,
279baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink                     CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK);
280baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.ton, CdmaSmsAddress.TON_UNKNOWN);
281baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.numberPlan, CdmaSmsAddress.NUMBERING_PLAN_UNKNOWN);
282baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.numberOfDigits, 7);
283baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.address, "3598271");
284baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.displayMode, BearerData.DISPLAY_MODE_USER);
285baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.depositIndex, 1382);
286baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userResponseCode, 5);
287baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.year, 2008);
288baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.month, 11);
289baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.monthDay, 1);
290baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.hour, 11);
291baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.minute, 1);
292baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.second, 59);
293baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.validityPeriodAbsolute, null);
294326c66d888f9b3ce82af93fe63e4828a4a4e3fbeTammo Spalink        assertEquals(bearerData.validityPeriodRelative, 193);
295baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.year, 1997);
296baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.month, 5);
297baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.monthDay, 18);
298baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.hour, 0);
299baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.minute, 0);
300baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.second, 0);
301326c66d888f9b3ce82af93fe63e4828a4a4e3fbeTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeRelative, 199);
302baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.hasUserDataHeader, false);
303baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userData.msgEncoding, UserData.ENCODING_7BIT_ASCII);
304baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userData.numFields, 2);
305baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userData.payloadStr, "hi");
306baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink    }
307baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink
308baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink    @SmallTest
309baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink    public void testMonolithicTwo() throws Exception {
310baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        String pdu = "0003200010010410168d200201050306081201110159050192060697061800000007013d0" +
311baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink                "801c00901800a01e00b01030c01c00d01070e05039acc13880f018011020566";
312baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        BearerData bearerData = BearerData.decode(HexDump.hexStringToByteArray(pdu));
313baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.messageType, BearerData.MESSAGE_TYPE_SUBMIT);
314baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.messageId, 1);
315baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.priority, BearerData.PRIORITY_EMERGENCY);
316baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.privacy, BearerData.PRIVACY_CONFIDENTIAL);
317baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userAckReq, true);
318baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.readAckReq, true);
319baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deliveryAckReq, true);
320baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.reportReq, false);
321baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.numberOfMessages, 3);
322baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.alert, BearerData.ALERT_HIGH_PRIO);
323baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.language, BearerData.LANGUAGE_HEBREW);
324baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.digitMode, CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF);
325baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.numberMode,
326baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink                     CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK);
327baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.ton, CdmaSmsAddress.TON_UNKNOWN);
328baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.numberPlan, CdmaSmsAddress.NUMBERING_PLAN_UNKNOWN);
329baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.numberOfDigits, 7);
330baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.callbackNumber.address, "3598271");
331baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.displayMode, BearerData.DISPLAY_MODE_USER);
332baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.depositIndex, 1382);
333baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userResponseCode, 5);
334baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.year, 2008);
335baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.month, 11);
336baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.monthDay, 1);
337baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.hour, 11);
338baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.minute, 1);
339baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.msgCenterTimeStamp.second, 59);
340baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.validityPeriodAbsolute, null);
341baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.validityPeriodRelative, 61);
342baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.year, 1997);
343baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.month, 5);
344baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.monthDay, 18);
345baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.hour, 0);
346baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.minute, 0);
347baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeAbsolute.second, 0);
348326c66d888f9b3ce82af93fe63e4828a4a4e3fbeTammo Spalink        assertEquals(bearerData.deferredDeliveryTimeRelative, 146);
349baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.hasUserDataHeader, false);
350baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userData.msgEncoding, UserData.ENCODING_7BIT_ASCII);
351baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userData.numFields, 2);
352baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink        assertEquals(bearerData.userData.payloadStr, "hi");
353baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink    }
354baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink
355baae313f896d8048f23e4acc76e554c8aa4667bdTammo Spalink    @SmallTest
35664c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink    public void testUserDataHeaderConcatRefFeedback() throws Exception {
35764c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        BearerData bearerData = new BearerData();
35864c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
35964c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        bearerData.messageId = 55;
36064c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
36164c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        concatRef.refNumber = 0xEE;
36264c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        concatRef.msgCount = 2;
36364c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        concatRef.seqNumber = 2;
36464c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        concatRef.isEightBits = true;
36564c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        SmsHeader smsHeader = new SmsHeader();
36664c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        smsHeader.concatRef = concatRef;
36764c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        byte[] encodedHeader = SmsHeader.toByteArray(smsHeader);
36864c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        SmsHeader decodedHeader = SmsHeader.fromByteArray(encodedHeader);
36964c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
37064c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
37164c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
37264c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.isEightBits, concatRef.isEightBits);
37364c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.portAddrs, null);
37464c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        UserData userData = new UserData();
37564c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        userData.payloadStr = "User Data Header (UDH) feedback test";
37664c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        userData.userDataHeader = smsHeader;
37764c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        bearerData.userData = userData;
37864c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        byte[] encodedSms = BearerData.encode(bearerData);
37964c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
38064c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        decodedHeader = revBearerData.userData.userDataHeader;
38164c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
38264c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
38364c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
38464c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.isEightBits, concatRef.isEightBits);
38564c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.portAddrs, null);
38664c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink    }
38764c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink
38864c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink    @SmallTest
389550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink    public void testUserDataHeaderIllegalConcatRef() throws Exception {
390550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        BearerData bearerData = new BearerData();
391550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
392550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        bearerData.messageId = 55;
393550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
394550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.refNumber = 0x10;
395550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.msgCount = 0;
396550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.seqNumber = 2;
397550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.isEightBits = true;
398550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        SmsHeader smsHeader = new SmsHeader();
399550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        smsHeader.concatRef = concatRef;
400550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        byte[] encodedHeader = SmsHeader.toByteArray(smsHeader);
401550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        SmsHeader decodedHeader = SmsHeader.fromByteArray(encodedHeader);
402550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        assertEquals(decodedHeader.concatRef, null);
403550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.isEightBits = false;
404550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        encodedHeader = SmsHeader.toByteArray(smsHeader);
405550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        decodedHeader = SmsHeader.fromByteArray(encodedHeader);
406550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        assertEquals(decodedHeader.concatRef, null);
407550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.msgCount = 1;
408550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.seqNumber = 2;
409550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        encodedHeader = SmsHeader.toByteArray(smsHeader);
410550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        decodedHeader = SmsHeader.fromByteArray(encodedHeader);
411550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        assertEquals(decodedHeader.concatRef, null);
412550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.msgCount = 1;
413550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.seqNumber = 0;
414550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        encodedHeader = SmsHeader.toByteArray(smsHeader);
415550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        decodedHeader = SmsHeader.fromByteArray(encodedHeader);
416550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        assertEquals(decodedHeader.concatRef, null);
417550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.msgCount = 2;
418550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        concatRef.seqNumber = 1;
419550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        encodedHeader = SmsHeader.toByteArray(smsHeader);
420550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        decodedHeader = SmsHeader.fromByteArray(encodedHeader);
421550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        assertEquals(decodedHeader.concatRef.msgCount, 2);
422550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink        assertEquals(decodedHeader.concatRef.seqNumber, 1);
423550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink    }
424550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink
425550885d158f5371cb207228eb1b7fb06aac32ea3Tammo Spalink    @SmallTest
42664c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink    public void testUserDataHeaderMixedFeedback() throws Exception {
42764c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        BearerData bearerData = new BearerData();
42864c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
42964c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        bearerData.messageId = 42;
43064c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
43164c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        concatRef.refNumber = 0x34;
43264c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        concatRef.msgCount = 5;
43364c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        concatRef.seqNumber = 2;
43464c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        concatRef.isEightBits = false;
43564c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        SmsHeader.PortAddrs portAddrs = new SmsHeader.PortAddrs();
43664c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        portAddrs.destPort = 88;
43764c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        portAddrs.origPort = 66;
43864c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        portAddrs.areEightBits = false;
43964c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        SmsHeader smsHeader = new SmsHeader();
44064c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        smsHeader.concatRef = concatRef;
44164c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        smsHeader.portAddrs = portAddrs;
44264c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        byte[] encodedHeader = SmsHeader.toByteArray(smsHeader);
44364c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        SmsHeader decodedHeader = SmsHeader.fromByteArray(encodedHeader);
44464c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
44564c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
44664c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
44764c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.isEightBits, concatRef.isEightBits);
44864c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.portAddrs.destPort, portAddrs.destPort);
44964c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.portAddrs.origPort, portAddrs.origPort);
45064c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.portAddrs.areEightBits, portAddrs.areEightBits);
45164c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        UserData userData = new UserData();
45264c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        userData.payloadStr = "User Data Header (UDH) feedback test";
45364c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        userData.userDataHeader = smsHeader;
45464c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        bearerData.userData = userData;
45564c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        byte[] encodedSms = BearerData.encode(bearerData);
45664c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
45764c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        decodedHeader = revBearerData.userData.userDataHeader;
45864c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.refNumber, concatRef.refNumber);
45964c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.msgCount, concatRef.msgCount);
46064c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.seqNumber, concatRef.seqNumber);
46164c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.concatRef.isEightBits, concatRef.isEightBits);
46264c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.portAddrs.destPort, portAddrs.destPort);
46364c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.portAddrs.origPort, portAddrs.origPort);
46464c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink        assertEquals(decodedHeader.portAddrs.areEightBits, portAddrs.areEightBits);
46564c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink    }
46664c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink
46764c499113a758cf80cddfd4d0183f944a1a6645aTammo Spalink    @SmallTest
46883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    public void testReplyOption() throws Exception {
46983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        String pdu1 = "0003104090011648b6a794e0705476bf77bceae934fe5f6d94d87450080a0180";
47083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
47183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals("Test Acknowledgement 1", bd1.userData.payloadStr);
47283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(true, bd1.userAckReq);
47383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd1.deliveryAckReq);
47483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd1.readAckReq);
47583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd1.reportReq);
47683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        String pdu2 = "0003104090011648b6a794e0705476bf77bceae934fe5f6d94d87490080a0140";
47783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bd2 = BearerData.decode(HexDump.hexStringToByteArray(pdu2));
47883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals("Test Acknowledgement 2", bd2.userData.payloadStr);
47983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd2.userAckReq);
48083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(true, bd2.deliveryAckReq);
48183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd2.readAckReq);
48283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd2.reportReq);
48383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        String pdu3 = "0003104090011648b6a794e0705476bf77bceae934fe5f6d94d874d0080a0120";
48483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bd3 = BearerData.decode(HexDump.hexStringToByteArray(pdu3));
48583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals("Test Acknowledgement 3", bd3.userData.payloadStr);
48683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd3.userAckReq);
48783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd3.deliveryAckReq);
48883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(true, bd3.readAckReq);
48983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd3.reportReq);
49083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        String pdu4 = "0003104090011648b6a794e0705476bf77bceae934fe5f6d94d87510080a0110";
49183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bd4 = BearerData.decode(HexDump.hexStringToByteArray(pdu4));
49283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals("Test Acknowledgement 4", bd4.userData.payloadStr);
49383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd4.userAckReq);
49483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd4.deliveryAckReq);
49583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, bd4.readAckReq);
49683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(true, bd4.reportReq);
49783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    }
49883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
49983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    @SmallTest
50083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    public void testReplyOptionFeedback() throws Exception {
50183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bearerData = new BearerData();
50283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
50383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.messageId = 0;
50483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.hasUserDataHeader = false;
5058478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        UserData userData = new UserData();
5068478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.payloadStr = "test reply option";
5078478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.userData = userData;
50883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.userAckReq = true;
50983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        byte []encodedSms = BearerData.encode(bearerData);
51083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
51183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(true, revBearerData.userAckReq);
51283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.deliveryAckReq);
51383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.readAckReq);
51483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.reportReq);
51583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.userAckReq = false;
51683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.deliveryAckReq = true;
51783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        encodedSms = BearerData.encode(bearerData);
51883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        revBearerData = BearerData.decode(encodedSms);
51983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.userAckReq);
52083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(true, revBearerData.deliveryAckReq);
52183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.readAckReq);
52283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.reportReq);
52383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.deliveryAckReq = false;
52483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.readAckReq = true;
52583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        encodedSms = BearerData.encode(bearerData);
52683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        revBearerData = BearerData.decode(encodedSms);
52783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.userAckReq);
52883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.deliveryAckReq);
52983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(true, revBearerData.readAckReq);
53083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.reportReq);
53183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.readAckReq = false;
53283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.reportReq = true;
53383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        encodedSms = BearerData.encode(bearerData);
53483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        revBearerData = BearerData.decode(encodedSms);
53583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.userAckReq);
53683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.deliveryAckReq);
53783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(false, revBearerData.readAckReq);
53883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(true, revBearerData.reportReq);
53983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    }
54083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
54183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    @SmallTest
54283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    public void testNumberOfMessages() throws Exception {
543f73dc54541f546fb966e94e73a925bbc259f9befTammo Spalink        // Note that the message text below does not properly reflect
544f73dc54541f546fb966e94e73a925bbc259f9befTammo Spalink        // the message count.  The author of these messages was
545f73dc54541f546fb966e94e73a925bbc259f9befTammo Spalink        // apparently unaware that the values are bcd encoded, and the
546f73dc54541f546fb966e94e73a925bbc259f9befTammo Spalink        // values being tested against (not the ones in the message
547f73dc54541f546fb966e94e73a925bbc259f9befTammo Spalink        // text) are actually correct.
54883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        String pdu1 = "000310409001124896a794e07595f69f199540ea759a0dc8e00b0163";
54983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
55083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals("Test Voice mail 99", bd1.userData.payloadStr);
551f73dc54541f546fb966e94e73a925bbc259f9befTammo Spalink        assertEquals(63, bd1.numberOfMessages);
55283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        String pdu2 = "00031040900113489ea794e07595f69f199540ea759a0988c0600b0164";
55383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bd2 = BearerData.decode(HexDump.hexStringToByteArray(pdu2));
55483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals("Test Voice mail 100", bd2.userData.payloadStr);
555f73dc54541f546fb966e94e73a925bbc259f9befTammo Spalink        assertEquals(64, bd2.numberOfMessages);
55683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    }
55783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
55883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    @SmallTest
55983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    public void testCallbackNum() throws Exception {
56083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        String pdu1 = "00031040900112488ea794e070d436cb638bc5e035ce2f97900e06910431323334";
56183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
56283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals("Test Callback nbr", bd1.userData.payloadStr);
56383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(CdmaSmsAddress.DIGIT_MODE_8BIT_CHAR, bd1.callbackNumber.digitMode);
56483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(CdmaSmsAddress.TON_INTERNATIONAL_OR_IP, bd1.callbackNumber.ton);
56583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK, bd1.callbackNumber.numberMode);
56683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(CdmaSmsAddress.NUMBERING_PLAN_ISDN_TELEPHONY, bd1.callbackNumber.numberPlan);
56783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals("1234", bd1.callbackNumber.address);
56883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    }
56983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
57083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    @SmallTest
571d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    public void testCallbackNumDtmf() throws Exception {
572d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        String pdu1 = "00031002300109104539b4d052ebb3d00e07052d4c90a55080";
573d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
574d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals("SMS Rulz", bd1.userData.payloadStr);
575d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF, bd1.callbackNumber.digitMode);
576d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(CdmaSmsAddress.TON_UNKNOWN, bd1.callbackNumber.ton);
577d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK, bd1.callbackNumber.numberMode);
578d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(CdmaSmsAddress.NUMBERING_PLAN_UNKNOWN, bd1.callbackNumber.numberPlan);
579d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals("5099214001", bd1.callbackNumber.address);
580d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    }
581d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink
582d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    @SmallTest
58383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    public void testCallbackNumFeedback() throws Exception {
58483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData bearerData = new BearerData();
58583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
58683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.messageId = 0;
58783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.hasUserDataHeader = false;
5888478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        UserData userData = new UserData();
5898478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.payloadStr = "test callback number";
5908478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.userData = userData;
59183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        CdmaSmsAddress addr = new CdmaSmsAddress();
59283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        addr.digitMode = CdmaSmsAddress.DIGIT_MODE_8BIT_CHAR;
59383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        addr.ton = CdmaSmsAddress.TON_NATIONAL_OR_EMAIL;
59483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        addr.numberMode = CdmaSmsAddress.NUMBER_MODE_NOT_DATA_NETWORK;
59583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        addr.numberPlan = CdmaSmsAddress.NUMBERING_PLAN_UNKNOWN;
59683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        addr.address = "8005551212";
59783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        addr.numberOfDigits = (byte)addr.address.length();
59883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        bearerData.callbackNumber = addr;
59983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        byte []encodedSms = BearerData.encode(bearerData);
60083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
60183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        CdmaSmsAddress revAddr = revBearerData.callbackNumber;
60283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(addr.digitMode, revAddr.digitMode);
60383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(addr.ton, revAddr.ton);
60483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(addr.numberMode, revAddr.numberMode);
60583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(addr.numberPlan, revAddr.numberPlan);
60683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(addr.numberOfDigits, revAddr.numberOfDigits);
60783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(addr.address, revAddr.address);
60883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        addr.address = "8*55#1012";
60983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        addr.numberOfDigits = (byte)addr.address.length();
61083917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        addr.digitMode = CdmaSmsAddress.DIGIT_MODE_4BIT_DTMF;
61183917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        encodedSms = BearerData.encode(bearerData);
61283917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        revBearerData = BearerData.decode(encodedSms);
61383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        revAddr = revBearerData.callbackNumber;
61483917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(addr.digitMode, revAddr.digitMode);
61583917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(addr.numberOfDigits, revAddr.numberOfDigits);
61683917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink        assertEquals(addr.address, revAddr.address);
61783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    }
61883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
61983917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink    @SmallTest
6208c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    public void testPrivacyIndicator() throws Exception {
6218c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu1 = "0003104090010c485f4194dfea34becf61b840090140";
6228c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
6238c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd1.privacy, BearerData.PRIVACY_RESTRICTED);
6248c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu2 = "0003104090010c485f4194dfea34becf61b840090180";
6258c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd2 = BearerData.decode(HexDump.hexStringToByteArray(pdu2));
6268c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd2.privacy, BearerData.PRIVACY_CONFIDENTIAL);
6278c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu3 = "0003104090010c485f4194dfea34becf61b8400901c0";
6288c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd3 = BearerData.decode(HexDump.hexStringToByteArray(pdu3));
6298c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd3.privacy, BearerData.PRIVACY_SECRET);
6308c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    }
6318c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink
6328c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    @SmallTest
6338c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    public void testPrivacyIndicatorFeedback() throws Exception {
6348c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bearerData = new BearerData();
6358c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
6368c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.messageId = 0;
6378c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.hasUserDataHeader = false;
6388478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        UserData userData = new UserData();
6398478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.payloadStr = "test privacy indicator";
6408478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.userData = userData;
6418c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.privacy = BearerData.PRIVACY_SECRET;
6428c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.privacyIndicatorSet = true;
6438c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        byte []encodedSms = BearerData.encode(bearerData);
6448c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
6458478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(revBearerData.userData.payloadStr, userData.payloadStr);
6468c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.privacyIndicatorSet, true);
6478c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.privacy, BearerData.PRIVACY_SECRET);
6488c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.privacy = BearerData.PRIVACY_RESTRICTED;
6498c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        encodedSms = BearerData.encode(bearerData);
6508c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        revBearerData = BearerData.decode(encodedSms);
6518c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.privacy, BearerData.PRIVACY_RESTRICTED);
6528c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    }
65383917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
6548c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    @SmallTest
6558c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    public void testMsgDeliveryAlert() throws Exception {
6568c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu1 = "0003104090010d4866a794e07055965b91d040300c0100";
6578c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
6588c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd1.alert, 0);
6598c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd1.userData.payloadStr, "Test Alert 0");
6608c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu2 = "0003104090010d4866a794e07055965b91d140300c0140";
6618c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd2 = BearerData.decode(HexDump.hexStringToByteArray(pdu2));
6628c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd2.alert, 1);
6638c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd2.userData.payloadStr, "Test Alert 1");
6648c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu3 = "0003104090010d4866a794e07055965b91d240300c0180";
6658c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd3 = BearerData.decode(HexDump.hexStringToByteArray(pdu3));
6668c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd3.alert, 2);
6678c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd3.userData.payloadStr, "Test Alert 2");
6688c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu4 = "0003104090010d4866a794e07055965b91d340300c01c0";
6698c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd4 = BearerData.decode(HexDump.hexStringToByteArray(pdu4));
6708c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd4.alert, 3);
6718c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd4.userData.payloadStr, "Test Alert 3");
672f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink        String pdu5 = "00031000000126114F4CBCFA20DB979F3C39F2A0C9976" +
673f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink            "69ED979794187665E5D1028EFA7A6840E1062D3D39A900C028000";
674f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink        BearerData bd5 = BearerData.decode(HexDump.hexStringToByteArray(pdu5));
675f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink        assertEquals(bd5.alert, BearerData.ALERT_MEDIUM_PRIO);
676f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink        assertEquals(bd5.userData.payloadStr, "test message delivery alert (with 8 bits)");
677f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink        String pdu6 = "00031000000126114F4CBCFA20DB979F3C39F2A0C9976" +
678f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink            "69ED979794187665E5D1028EFA7A6840C1062D3D39A900C00";
679f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink        BearerData bd6 = BearerData.decode(HexDump.hexStringToByteArray(pdu6));
680f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink        assertEquals(bd6.userData.payloadStr, "test message delivery alert (with 0 bits)");
681f62a2bf29a6cf87be03b290b8b660db245022881Tammo Spalink        assertEquals(bd6.alertIndicatorSet, false);
6828c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    }
6838c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink
6848c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    @SmallTest
685d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    public void testMiscParams() throws Exception {
686d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        String pdu1 = "00031002400109104539b4d052ebb3d00c0180";
687d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
688d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd1.alert, BearerData.ALERT_MEDIUM_PRIO);
689d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd1.userData.payloadStr, "SMS Rulz");
690d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        String pdu2 = "00031002500109104539b4d052ebb3d00801800901c0";
691d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        BearerData bd2 = BearerData.decode(HexDump.hexStringToByteArray(pdu2));
692d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd2.priority, BearerData.PRIORITY_URGENT);
693d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd2.privacy, BearerData.PRIVACY_SECRET);
694d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd2.userData.payloadStr, "SMS Rulz");
695d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        String pdu3 = "00031002600109104539b4d052ebb3d00901400c01c0";
696d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        BearerData bd3 = BearerData.decode(HexDump.hexStringToByteArray(pdu3));
697d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd3.privacy, BearerData.PRIVACY_RESTRICTED);
698d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd3.alert, BearerData.ALERT_HIGH_PRIO);
699d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd3.userData.payloadStr, "SMS Rulz");
700d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        String pdu4 = "00031002700109104539b4d052ebb3d00f0105";
701d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        BearerData bd4 = BearerData.decode(HexDump.hexStringToByteArray(pdu4));
702d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd4.displayMode, BearerData.DISPLAY_MODE_IMMEDIATE);
703d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink        assertEquals(bd4.userData.payloadStr, "SMS Rulz");
704d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink    }
705d2b124f97c52c566b68aff9fa58306f461686af0Tammo Spalink   @SmallTest
7068c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    public void testMsgDeliveryAlertFeedback() throws Exception {
7078c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bearerData = new BearerData();
7088c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
7098c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.messageId = 0;
7108c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.hasUserDataHeader = false;
7118478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        UserData userData = new UserData();
7128478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.payloadStr = "test message delivery alert";
7138478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.userData = userData;
7148c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.alert = BearerData.ALERT_MEDIUM_PRIO;
7158c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.alertIndicatorSet = true;
7168c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        byte []encodedSms = BearerData.encode(bearerData);
7178c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
7188478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(revBearerData.userData.payloadStr, userData.payloadStr);
7198c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.alertIndicatorSet, true);
7208c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.alert, bearerData.alert);
7218c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.alert = BearerData.ALERT_HIGH_PRIO;
7228c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        encodedSms = BearerData.encode(bearerData);
7238c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        revBearerData = BearerData.decode(encodedSms);
7248478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(revBearerData.userData.payloadStr, userData.payloadStr);
7258c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.alertIndicatorSet, true);
7268c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.alert, bearerData.alert);
7278c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    }
72883917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink
7298c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    @SmallTest
7308c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    public void testLanguageIndicator() throws Exception {
7318c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu1 = "0003104090011748bea794e0731436ef3bd7c2e0352eef27a1c263fe58080d0101";
7328c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
7338c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd1.userData.payloadStr, "Test Language indicator");
7348c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd1.language, BearerData.LANGUAGE_ENGLISH);
7358c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu2 = "0003104090011748bea794e0731436ef3bd7c2e0352eef27a1c263fe58080d0106";
7368c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd2 = BearerData.decode(HexDump.hexStringToByteArray(pdu2));
7378c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd2.userData.payloadStr, "Test Language indicator");
7388c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd2.language, BearerData.LANGUAGE_CHINESE);
7398c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    }
7408c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink
7418c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    @SmallTest
7428c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    public void testLanguageIndicatorFeedback() throws Exception {
7438c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bearerData = new BearerData();
7448c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
7458c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.messageId = 0;
7468c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.hasUserDataHeader = false;
7478478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        UserData userData = new UserData();
7488478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.payloadStr = "test language indicator";
7498478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.userData = userData;
7508c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.language = BearerData.LANGUAGE_ENGLISH;
7518c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.languageIndicatorSet = true;
7528c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        byte []encodedSms = BearerData.encode(bearerData);
7538c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
7548478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(revBearerData.userData.payloadStr, userData.payloadStr);
7558c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.languageIndicatorSet, true);
7568c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.language, bearerData.language);
7578c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.language = BearerData.LANGUAGE_KOREAN;
7588c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        encodedSms = BearerData.encode(bearerData);
7598c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        revBearerData = BearerData.decode(encodedSms);
7608478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(revBearerData.userData.payloadStr, userData.payloadStr);
7618c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.languageIndicatorSet, true);
7628c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.language, bearerData.language);
7638c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    }
7648c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink
7658c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    @SmallTest
7668c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    public void testDisplayMode() throws Exception {
7678c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu1 = "0003104090010c485f4194dfea34becf61b8400f0100";
7688c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
7698c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd1.displayMode, BearerData.DISPLAY_MODE_IMMEDIATE);
7708c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu2 = "0003104090010c485f4194dfea34becf61b8400f0140";
7718c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd2 = BearerData.decode(HexDump.hexStringToByteArray(pdu2));
7728c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd2.displayMode, BearerData.DISPLAY_MODE_DEFAULT);
7738c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        String pdu3 = "0003104090010c485f4194dfea34becf61b8400f0180";
7748c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bd3 = BearerData.decode(HexDump.hexStringToByteArray(pdu3));
7758c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(bd3.displayMode, BearerData.DISPLAY_MODE_USER);
7768c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    }
7778c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink
7788c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    @SmallTest
7798c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    public void testDisplayModeFeedback() throws Exception {
7808c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData bearerData = new BearerData();
7818c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
7828c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.messageId = 0;
7838c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.hasUserDataHeader = false;
7848478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        UserData userData = new UserData();
7858478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        userData.payloadStr = "test display mode";
7868478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        bearerData.userData = userData;
7878c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.displayMode = BearerData.DISPLAY_MODE_IMMEDIATE;
7888c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.displayModeSet = true;
7898c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        byte []encodedSms = BearerData.encode(bearerData);
7908c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
7918478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(revBearerData.userData.payloadStr, userData.payloadStr);
7928c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.displayModeSet, true);
7938c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.displayMode, bearerData.displayMode);
7948c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        bearerData.displayMode = BearerData.DISPLAY_MODE_USER;
7958c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        encodedSms = BearerData.encode(bearerData);
7968c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        revBearerData = BearerData.decode(encodedSms);
7978478b59f177ec97a9996b71f7fac1509ba9ef493Tammo Spalink        assertEquals(revBearerData.userData.payloadStr, userData.payloadStr);
7988c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.displayModeSet, true);
7998c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink        assertEquals(revBearerData.displayMode, bearerData.displayMode);
8008c49d32cb9980959c402eaa243fd5129cd9942fcTammo Spalink    }
8018203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink
8028203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink    @SmallTest
8038203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink    public void testIs91() throws Exception {
8048203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink        String pdu1 = "000320001001070c2039acc13880";
8058203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink        BearerData bd1 = BearerData.decode(HexDump.hexStringToByteArray(pdu1));
8068203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink        assertEquals(bd1.callbackNumber.address, "3598271");
8078203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink        String pdu4 = "000320001001080c283c314724b34e";
8088203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink        BearerData bd4 = BearerData.decode(HexDump.hexStringToByteArray(pdu4));
8098203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink        assertEquals(bd4.userData.payloadStr, "ABCDEFG");
8108203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink    }
8118203dc1bc8d99e2fe430a1a3026983e2e440e6d5Tammo Spalink
812e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink    @SmallTest
813e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink    public void testUserDataHeaderWithEightCharMsg() throws Exception {
814e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        BearerData bearerData = new BearerData();
815e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        bearerData.messageType = BearerData.MESSAGE_TYPE_DELIVER;
816e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        bearerData.messageId = 55;
817e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        SmsHeader.ConcatRef concatRef = new SmsHeader.ConcatRef();
818e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        concatRef.refNumber = 0xEE;
819e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        concatRef.msgCount = 2;
820e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        concatRef.seqNumber = 2;
821e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        concatRef.isEightBits = true;
822e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        SmsHeader smsHeader = new SmsHeader();
823e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        smsHeader.concatRef = concatRef;
824e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        UserData userData = new UserData();
825e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        userData.payloadStr = "01234567";
826e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        userData.userDataHeader = smsHeader;
827e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        bearerData.userData = userData;
828e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        byte[] encodedSms = BearerData.encode(bearerData);
829e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        BearerData revBearerData = BearerData.decode(encodedSms);
830e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink        assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
831e00dd1e5a37bed0de964b353d47a4bd7cdff532fTammo Spalink    }
83295434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink
83395434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink    @SmallTest
83495434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink    public void testFragmentText() throws Exception {
835af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink        boolean isCdmaPhone = (TelephonyManager.getDefault().getPhoneType() ==
836af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink                TelephonyManager.PHONE_TYPE_CDMA);
83795434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        // Valid 160 character ASCII text.
83895434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        String text1 = "123456789012345678901234567890123456789012345678901234567890" +
83995434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink                "1234567890123456789012345678901234567890123456789012345678901234567890" +
84095434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink                "12345678901234567890123456789[";
84195434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        TextEncodingDetails ted = SmsMessage.calculateLength(text1, false);
84295434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        assertEquals(ted.msgCount, 1);
84395434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        assertEquals(ted.codeUnitCount, 160);
84495434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        assertEquals(ted.codeUnitSize, 1);
845af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink        if (isCdmaPhone) {
846af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink            ArrayList<String> fragments = android.telephony.SmsMessage.fragmentText(text1);
847af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink            assertEquals(fragments.size(), 1);
848af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink        }
8491e1c24bed274471e40b5bc2af00a56c56b9e8635jsh
8501e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        /*
8511e1c24bed274471e40b5bc2af00a56c56b9e8635jsh           This is not a valid test: we will never encode a single-segment
8521e1c24bed274471e40b5bc2af00a56c56b9e8635jsh           EMS message.  Leaving this here, since we may try to support
8531e1c24bed274471e40b5bc2af00a56c56b9e8635jsh           this in the future.
8541e1c24bed274471e40b5bc2af00a56c56b9e8635jsh
85595434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        // Valid 160 character GSM text -- the last character is
85695434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        // non-ASCII, and so this will currently generate a singleton
85795434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        // EMS message, which is not necessarily supported by Verizon.
85895434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        String text2 = "123456789012345678901234567890123456789012345678901234567890" +
85995434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink                "1234567890123456789012345678901234567890123456789012345678901234567890" +
86095434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink                "12345678901234567890123456789\u00a3";  // Trailing pound-currency sign.
86195434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        ted = SmsMessage.calculateLength(text2, false);
86295434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        assertEquals(ted.msgCount, 1);
86395434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        assertEquals(ted.codeUnitCount, 160);
86495434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink        assertEquals(ted.codeUnitSize, 1);
865af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink        if (isCdmaPhone) {
866af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink            ArrayList<String> fragments = android.telephony.SmsMessage.fragmentText(text2);
867af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink            assertEquals(fragments.size(), 1);
868af8e23fe9ebc160ad370d3cb4d960d154316930eTammo Spalink        }
8691e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        */
8701e1c24bed274471e40b5bc2af00a56c56b9e8635jsh
8711e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        // *IF* we supported single-segment EMS, this text would result in a
8721e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        // single fragment with 7-bit encoding. But we don't, so this text
8731e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        // results in three fragments of 16-bit encoding.
8741e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        String text2 = "123456789012345678901234567890123456789012345678901234567890" +
8751e1c24bed274471e40b5bc2af00a56c56b9e8635jsh                "1234567890123456789012345678901234567890123456789012345678901234567890" +
8761e1c24bed274471e40b5bc2af00a56c56b9e8635jsh                "12345678901234567890123456789\u00a3";  // Trailing pound-currency sign.
8771e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        ted = SmsMessage.calculateLength(text2, false);
8781e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        assertEquals(3, ted.msgCount);
8791e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        assertEquals(160, ted.codeUnitCount);
8801e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        assertEquals(3, ted.codeUnitSize);
8811e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        if (isCdmaPhone) {
8821e1c24bed274471e40b5bc2af00a56c56b9e8635jsh            ArrayList<String> fragments = android.telephony.SmsMessage.fragmentText(text2);
8831e1c24bed274471e40b5bc2af00a56c56b9e8635jsh            assertEquals(3, fragments.size());
8841e1c24bed274471e40b5bc2af00a56c56b9e8635jsh        }
8851e1c24bed274471e40b5bc2af00a56c56b9e8635jsh
88695434bfaee62161ce02012c6424f0c0c8fffccb5Tammo Spalink    }
88783917db040bd7498ebca3b74f879dc1c9e223d8eTammo Spalink}
888