Home | History | Annotate | Download | only in telephony
      1 /*
      2  * Copyright (C) 2016 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.internal.telephony;
     18 
     19 import android.content.Intent;
     20 import android.os.HandlerThread;
     21 import android.os.Message;
     22 import android.provider.Telephony;
     23 import android.test.suitebuilder.annotation.SmallTest;
     24 import android.util.Log;
     25 
     26 import com.android.internal.telephony.test.SimulatedCommands;
     27 import com.android.internal.telephony.test.SimulatedCommandsVerifier;
     28 
     29 import org.junit.After;
     30 import org.junit.Before;
     31 import org.junit.Test;
     32 import org.mockito.ArgumentCaptor;
     33 import org.mockito.Mock;
     34 import org.mockito.MockitoAnnotations;
     35 
     36 import java.lang.reflect.Field;
     37 
     38 import static org.junit.Assert.*;
     39 import static org.mockito.Mockito.*;
     40 
     41 public class SmsStorageMonitorTest extends TelephonyTest {
     42 
     43     private SmsStorageMonitor mSmsStorageMonitor;
     44     private SmsStorageMonitorTestHandler mSmsStorageMonitorTestHandler;
     45 
     46     private class SmsStorageMonitorTestHandler extends HandlerThread {
     47 
     48         private SmsStorageMonitorTestHandler(String name) {
     49             super(name);
     50         }
     51 
     52         @Override
     53         public void onLooperPrepared() {
     54             mSmsStorageMonitor = new SmsStorageMonitor(mPhone);
     55             setReady(true);
     56         }
     57     }
     58 
     59     @Before
     60     public void setUp() throws Exception {
     61         super.setUp(getClass().getSimpleName());
     62         mSmsStorageMonitorTestHandler = new SmsStorageMonitorTestHandler(TAG);
     63         mSmsStorageMonitorTestHandler.start();
     64         waitUntilReady();
     65     }
     66 
     67     @After
     68     public void tearDown() throws Exception {
     69         mSmsStorageMonitor = null;
     70         mSmsStorageMonitorTestHandler.quitSafely();
     71         super.tearDown();
     72     }
     73 
     74     @Test @SmallTest
     75     public void testEventIccFull() {
     76         // Notify icc sms full
     77         mSimulatedCommands.notifyIccSmsFull();
     78         TelephonyTestUtils.waitForMs(50);
     79 
     80         // SIM_FULL_ACTION intent should be broadcast
     81         ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
     82         verify(mContextFixture.getTestDouble()).sendBroadcast(intentArgumentCaptor.capture());
     83         assertEquals(Telephony.Sms.Intents.SIM_FULL_ACTION,
     84                 intentArgumentCaptor.getValue().getAction());
     85     }
     86 
     87     @Test @SmallTest
     88     public void testSmsMemoryStatus() {
     89         // Notify radio on
     90         mSimulatedCommands.notifyRadioOn();
     91         TelephonyTestUtils.waitForMs(50);
     92 
     93         verify(mSimulatedCommandsVerifier, never()).reportSmsMemoryStatus(anyBoolean(),
     94                 any(Message.class));
     95 
     96         // Send DEVICE_STORAGE_FULL
     97         mContextFixture.getTestDouble().sendBroadcast(
     98                 new Intent(Intent.ACTION_DEVICE_STORAGE_FULL));
     99         TelephonyTestUtils.waitForMs(50);
    100 
    101         verify(mSimulatedCommandsVerifier).reportSmsMemoryStatus(eq(false), any(Message.class));
    102         assertFalse(mSmsStorageMonitor.isStorageAvailable());
    103 
    104         mSimulatedCommands.notifyRadioOn();
    105         TelephonyTestUtils.waitForMs(50);
    106 
    107         verify(mSimulatedCommandsVerifier).reportSmsMemoryStatus(eq(false), any(Message.class));
    108 
    109         // Send DEVICE_STORAGE_NOT_FULL
    110         mContextFixture.getTestDouble().sendBroadcast(
    111                 new Intent(Intent.ACTION_DEVICE_STORAGE_NOT_FULL));
    112         TelephonyTestUtils.waitForMs(50);
    113 
    114         verify(mSimulatedCommandsVerifier).reportSmsMemoryStatus(eq(true), any(Message.class));
    115         assertTrue(mSmsStorageMonitor.isStorageAvailable());
    116 
    117         mSimulatedCommands.notifyRadioOn();
    118         TelephonyTestUtils.waitForMs(50);
    119 
    120         verify(mSimulatedCommandsVerifier).reportSmsMemoryStatus(eq(true), any(Message.class));
    121     }
    122 }