1e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen/* 2e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * Copyright (C) 2016 The Android Open Source Project 3e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * 4e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * Licensed under the Apache License, Version 2.0 (the "License"); 5e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * you may not use this file except in compliance with the License. 6e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * You may obtain a copy of the License at 7e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * 8e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * http://www.apache.org/licenses/LICENSE-2.0 9e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * 10e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * Unless required by applicable law or agreed to in writing, software 11e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * distributed under the License is distributed on an "AS IS" BASIS, 12e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * See the License for the specific language governing permissions and 14e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen * limitations under the License 15e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen */ 16e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 17e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yenpackage com.android.phone.vvm.omtp; 18e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 19e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yenimport android.content.Context; 20e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yenimport android.content.Intent; 21e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yenimport android.preference.PreferenceManager; 22e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yenimport android.test.AndroidTestCase; 23e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yenimport android.util.ArraySet; 24e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 25e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yenimport com.android.phone.vvm.omtp.OmtpBootCompletedReceiver.SubIdProcessor; 26e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 27e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yenimport java.util.Set; 28e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 29e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yenpublic class OmtpBootCompletedReceiverTests extends AndroidTestCase { 30e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen OmtpBootCompletedReceiver mReceiver = new OmtpBootCompletedReceiver(); 31e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen @Override 32e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen public void setUp() { 33e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 34e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 35e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen @Override 36e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen public void tearDown() { 37e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen PreferenceManager 381ce834e2cb579fb0973186703c4f5f245202c793Jeff Sharkey .getDefaultSharedPreferences(getContext().createDeviceProtectedStorageContext()) 39e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen .edit().clear().apply(); 40e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 41e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 42e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen public void testReadWriteList() { 43e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen readWriteList(new int[] {1}); 44e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 45e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 46e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen public void testReadWriteList_Multiple() { 47e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen readWriteList(new int[] {1, 2}); 48e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 49e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 50e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen public void testReadWriteList_Duplicate() { 51e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen readWriteList(new int[] {1, 1}); 52e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 53e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 54e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen private void readWriteList(int[] values) { 55e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen for (int value : values) { 56e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen OmtpBootCompletedReceiver.addDeferredSubId(getContext(), value); 57e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 58e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen TestSubIdProcessor processor = new TestSubIdProcessor(values); 59e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen mReceiver.setSubIdProcessorForTest(processor); 60e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen Intent intent = new Intent(Intent.ACTION_BOOT_COMPLETED); 61e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen mReceiver.onReceive(getContext(), intent); 62e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen processor.assertMatch(); 63e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen // after onReceive() is called the list should be empty 64e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen TestSubIdProcessor emptyProcessor = new TestSubIdProcessor(new int[] {}); 65e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen mReceiver.setSubIdProcessorForTest(processor); 66e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen mReceiver.onReceive(getContext(), intent); 67e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen processor.assertMatch(); 68e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 69e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 70e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen private static class TestSubIdProcessor implements SubIdProcessor { 71e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen private final Set<Integer> mExpectedSubIds; 72e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 73e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen public TestSubIdProcessor(int[] expectedSubIds) { 74e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen mExpectedSubIds = new ArraySet<>(); 75e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen for(int subId : expectedSubIds){ 76e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen mExpectedSubIds.add(subId); 77e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 78e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 79e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 80e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen @Override 81e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen public void process(Context context, int subId){ 82e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen assertTrue(mExpectedSubIds.contains(subId)); 83e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen mExpectedSubIds.remove(subId); 84e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 85e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen 86e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen public void assertMatch(){ 87e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen assertTrue(mExpectedSubIds.isEmpty()); 88e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 89e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen } 90e80368d449950c0d13ba78f5b8fa6eb62eafa384Ta-wei Yen} 91