15d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan/*
29c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yu * Copyright (C) 2016 The Android Open Source Project
35d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan *
45d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan * Licensed under the Apache License, Version 2.0 (the "License");
55d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan * you may not use this file except in compliance with the License.
65d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan * You may obtain a copy of the License at
75d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan *
85d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan *      http://www.apache.org/licenses/LICENSE-2.0
95d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan *
105d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan * Unless required by applicable law or agreed to in writing, software
115d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan * distributed under the License is distributed on an "AS IS" BASIS,
125d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan * See the License for the specific language governing permissions and
145d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan * limitations under the License.
155d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan */
165d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
175d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanpackage com.android.internal.telephony.cdma;
185d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
195d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport android.os.HandlerThread;
205d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport android.os.Message;
215d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport android.test.suitebuilder.annotation.SmallTest;
225d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
235d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport com.android.internal.telephony.ImsSMSDispatcher;
245d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport com.android.internal.telephony.SMSDispatcher;
2532b5fbb1a340fa16e2c37c276517ef10a4934500Amit Mahajanimport com.android.internal.telephony.TelephonyTest;
265d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
275d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport static org.mockito.Mockito.*;
285d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
295d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport org.junit.After;
305d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport org.junit.Before;
315d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport org.junit.Test;
325d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajanimport org.mockito.Mock;
335d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
3432b5fbb1a340fa16e2c37c276517ef10a4934500Amit Mahajanpublic class CdmaSmsDispatcherTest extends TelephonyTest {
355d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    @Mock
365d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    private android.telephony.SmsMessage mSmsMessage;
375d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    @Mock
385d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    private SmsMessage mCdmaSmsMessage;
395d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    @Mock
405d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    private ImsSMSDispatcher mImsSmsDispatcher;
415d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    @Mock
425d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    private SMSDispatcher.SmsTracker mSmsTracker;
435d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
445d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    private CdmaSMSDispatcher mCdmaSmsDispatcher;
457e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan    private CdmaSmsDispatcherTestHandler mCdmaSmsDispatcherTestHandler;
465d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
475d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    private class CdmaSmsDispatcherTestHandler extends HandlerThread {
485d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
495d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan        private CdmaSmsDispatcherTestHandler(String name) {
505d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan            super(name);
515d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan        }
525d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
535d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan        @Override
545d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan        public void onLooperPrepared() {
5532b5fbb1a340fa16e2c37c276517ef10a4934500Amit Mahajan            mCdmaSmsDispatcher = new CdmaSMSDispatcher(mPhone, mSmsUsageMonitor,
5632b5fbb1a340fa16e2c37c276517ef10a4934500Amit Mahajan                    mImsSmsDispatcher);
5732b5fbb1a340fa16e2c37c276517ef10a4934500Amit Mahajan            setReady(true);
585d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan        }
595d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    }
605d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
615d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    @Before
625d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    public void setUp() throws Exception {
636ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu        super.setUp(this.getClass().getSimpleName());
645d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
656ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu        setupMockPackagePermissionChecks();
665d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
677e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan        mCdmaSmsDispatcherTestHandler = new CdmaSmsDispatcherTestHandler(TAG);
687e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan        mCdmaSmsDispatcherTestHandler.start();
695d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan        waitUntilReady();
705d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    }
715d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
725d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    @After
735d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    public void tearDown() throws Exception {
745d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan        mCdmaSmsDispatcher = null;
75ae6e8f99bdb297f906d6dcdc0a385ba27eee47fdJack Yu        mCdmaSmsDispatcherTestHandler.quit();
76f152b32a20be664788536a223b9ac7a52f69e4ddAmit Mahajan        super.tearDown();
775d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    }
785d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan
795d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    @Test @SmallTest
805d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    public void testSendSms() {
815d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan        doReturn(mServiceState).when(mPhone).getServiceState();
825d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan        mCdmaSmsDispatcher.sendSms(mSmsTracker);
83b1fdcf01045090315c5b91d7539007d79f34c9ecAmit Mahajan        verify(mSimulatedCommandsVerifier).sendCdmaSms(nullable(byte[].class), any(Message.class));
845d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan    }
856ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu
866ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu    @Test @SmallTest
876ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu    public void testSendText() {
886ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu        mCdmaSmsDispatcher.sendText("111"/* desAddr*/, "222" /*scAddr*/, TAG,
896ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu                null, null, null, null, false);
906ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu        verify(mSimulatedCommandsVerifier).sendCdmaSms(any(byte[].class), any(Message.class));
916ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu    }
926ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu
936ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu    @Test @SmallTest
946ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu    public void testSendTextWithOutDesAddr() {
956ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu        mCdmaSmsDispatcher.sendText(null, "222" /*scAddr*/, TAG,
966ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu                null, null, null, null, false);
976ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu        verify(mSimulatedCommandsVerifier, times(0)).sendImsGsmSms(anyString(), anyString(),
986ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu                anyInt(), anyInt(), any(Message.class));
996ba18ef5f3733709f16ef03b3d2b2de076b63c3efionaxu    }
1005d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan}
101