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