• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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.cellbroadcastservice.tests;
18 
19 import static com.android.cellbroadcastservice.CellBroadcastServiceMetrics.FeatureMetrics.ADDITIONAL_CBR_PACKAGES;
20 import static com.android.cellbroadcastservice.CellBroadcastServiceMetrics.FeatureMetrics.AREA_INFO_PACKAGES;
21 import static com.android.cellbroadcastservice.CellBroadcastServiceMetrics.FeatureMetrics.RESET_AREA_INFO;
22 
23 import static org.mockito.ArgumentMatchers.anyBoolean;
24 import static org.mockito.ArgumentMatchers.anyInt;
25 import static org.mockito.ArgumentMatchers.anyString;
26 import static org.mockito.ArgumentMatchers.eq;
27 import static org.mockito.Mockito.doReturn;
28 import static org.mockito.Mockito.mock;
29 import static org.mockito.Mockito.times;
30 import static org.mockito.Mockito.verify;
31 
32 import android.testing.AndroidTestingRunner;
33 import android.testing.TestableLooper;
34 
35 import com.android.cellbroadcastservice.CellBroadcastServiceMetrics;
36 
37 import org.junit.After;
38 import org.junit.Before;
39 import org.junit.Test;
40 import org.junit.runner.RunWith;
41 
42 import java.util.Arrays;
43 
44 @RunWith(AndroidTestingRunner.class)
45 @TestableLooper.RunWithLooper
46 public class CellBroadcastServiceMetricsTest extends CellBroadcastServiceTestBase {
47 
48     @Before
setUp()49     public void setUp() throws Exception {
50         super.setUp();
51 
52         doReturn(mSharedPreference).when(mMockedContext)
53                 .getSharedPreferences(anyString(), anyInt());
54         doReturn(false).when(mSharedPreference).getBoolean(anyString(), anyBoolean());
55     }
56 
57     @After
tearDown()58     public void tearDown() throws Exception {
59         super.tearDown();
60     }
61 
62     @Test
testGetInstance()63     public void testGetInstance() {
64         CellBroadcastServiceMetrics test1 = CellBroadcastServiceMetrics.getInstance();
65         CellBroadcastServiceMetrics test2 = CellBroadcastServiceMetrics.getInstance();
66 
67         assertSame(test1, test2);
68     }
69 
70     @Test
testGetFeatureMetrics()71     public void testGetFeatureMetrics() {
72         CellBroadcastServiceMetrics.FeatureMetrics test1 =
73                 CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext);
74         CellBroadcastServiceMetrics.FeatureMetrics test2 =
75                 CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext);
76 
77         assertSame(test1, test2);
78 
79         assertFalse(test1.isOverrideCbrPkgs());
80         assertFalse(test1.isOverrideAreaInfoPkgs());
81         assertFalse(test1.isResetAreaInfo());
82 
83         doReturn(true).when(mSharedPreference)
84                 .getBoolean(eq(ADDITIONAL_CBR_PACKAGES), anyBoolean());
85         doReturn(false).when(mSharedPreference)
86                 .getBoolean(eq(AREA_INFO_PACKAGES), anyBoolean());
87         doReturn(true).when(mSharedPreference)
88                 .getBoolean(eq(RESET_AREA_INFO), anyBoolean());
89 
90         CellBroadcastServiceMetrics.getInstance().setFeatureMetrics(null);
91         CellBroadcastServiceMetrics.getInstance().setFeatureMetricsSharedPreferences(null);
92 
93         test1 = CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext);
94 
95         assertTrue(test1.isOverrideCbrPkgs());
96         assertFalse(test1.isOverrideAreaInfoPkgs());
97         assertTrue(test1.isResetAreaInfo());
98 
99         CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext)
100                 .onChangedAdditionalCbrPackage(false);
101         CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext)
102                 .onChangedAreaInfoPackage(Arrays.asList(new String[]{"com.google.android"}));
103         CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext)
104                 .onChangedResetAreaInfo(false);
105 
106         test1 = CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext);
107 
108         assertFalse(test1.isOverrideCbrPkgs());
109         assertTrue(test1.isOverrideAreaInfoPkgs());
110         assertFalse(test1.isResetAreaInfo());
111     }
112 
113     @Test
testEquals()114     public void testEquals() {
115         CellBroadcastServiceMetrics.getInstance().setFeatureMetrics(null);
116         CellBroadcastServiceMetrics.FeatureMetrics testFeatureMetrics =
117                 CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext);
118         CellBroadcastServiceMetrics.FeatureMetrics testSharedPreferenceFeatureMetrics =
119                 CellBroadcastServiceMetrics.getInstance().getFeatureMetricsSharedPreferences();
120 
121         assertTrue(testFeatureMetrics.equals(testSharedPreferenceFeatureMetrics));
122         assertNotSame(testFeatureMetrics, testSharedPreferenceFeatureMetrics);
123 
124         testFeatureMetrics.onChangedAdditionalCbrPackage(false);
125         testFeatureMetrics.onChangedAreaInfoPackage(Arrays.asList(new String[]{"test.com"}));
126         testFeatureMetrics.onChangedResetAreaInfo(false);
127 
128         assertFalse(testFeatureMetrics.equals(testSharedPreferenceFeatureMetrics));
129 
130         testSharedPreferenceFeatureMetrics
131                 .onChangedAdditionalCbrPackage(false);
132         testSharedPreferenceFeatureMetrics
133                 .onChangedAreaInfoPackage(Arrays.asList(new String[]{"test.com"}));
134         testSharedPreferenceFeatureMetrics
135                 .onChangedResetAreaInfo(false);
136 
137         assertTrue(testFeatureMetrics.equals(testSharedPreferenceFeatureMetrics));
138     }
139 
140     @Test
testClone()141     public void testClone() throws CloneNotSupportedException {
142         CellBroadcastServiceMetrics.getInstance().setFeatureMetrics(null);
143         CellBroadcastServiceMetrics.FeatureMetrics testFeatureMetrics =
144                 CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext);
145         CellBroadcastServiceMetrics.FeatureMetrics testSharedPreferenceFeatureMetrics =
146                 CellBroadcastServiceMetrics.getInstance().getFeatureMetricsSharedPreferences();
147 
148         assertTrue(testFeatureMetrics.equals(testSharedPreferenceFeatureMetrics));
149 
150         testFeatureMetrics.onChangedAdditionalCbrPackage(false);
151         testFeatureMetrics.onChangedAreaInfoPackage(Arrays.asList(new String[]{"test.com"}));
152         testFeatureMetrics.onChangedResetAreaInfo(false);
153 
154         assertFalse(testFeatureMetrics.equals(testSharedPreferenceFeatureMetrics));
155 
156         testSharedPreferenceFeatureMetrics =
157                 (CellBroadcastServiceMetrics.FeatureMetrics) testFeatureMetrics.clone();
158 
159         assertTrue(testFeatureMetrics.equals(testSharedPreferenceFeatureMetrics));
160         assertNotSame(testFeatureMetrics, testSharedPreferenceFeatureMetrics);
161     }
162 
163     @Test
testLogFeatureChangedAsNeeded()164     public void testLogFeatureChangedAsNeeded() throws CloneNotSupportedException {
165         CellBroadcastServiceMetrics.getInstance().setFeatureMetrics(null);
166         CellBroadcastServiceMetrics.FeatureMetrics testFeatureMetrics =
167                 CellBroadcastServiceMetrics.getInstance().getFeatureMetrics(mMockedContext);
168         CellBroadcastServiceMetrics.FeatureMetrics testSharedPreferenceFeatureMetrics =
169                 CellBroadcastServiceMetrics.getInstance().getFeatureMetricsSharedPreferences();
170 
171         assertTrue(testFeatureMetrics.equals(testSharedPreferenceFeatureMetrics));
172 
173         testFeatureMetrics.onChangedAdditionalCbrPackage(true);
174         testFeatureMetrics.onChangedAreaInfoPackage(Arrays.asList(new String[]{"test.com"}));
175         testFeatureMetrics.onChangedResetAreaInfo(true);
176 
177         assertFalse(testFeatureMetrics.equals(testSharedPreferenceFeatureMetrics));
178 
179         CellBroadcastServiceMetrics.getInstance().logFeatureChangedAsNeeded(mMockedContext);
180 
181         CellBroadcastServiceMetrics.FeatureMetrics mockedFeatureMetrics =
182                 mock(CellBroadcastServiceMetrics.FeatureMetrics.class);
183 
184         CellBroadcastServiceMetrics.getInstance()
185                 .setFeatureMetricsSharedPreferences(mockedFeatureMetrics);
186 
187         assertFalse(mockedFeatureMetrics.equals(testFeatureMetrics));
188 
189         CellBroadcastServiceMetrics.getInstance().logFeatureChangedAsNeeded(mMockedContext);
190 
191         CellBroadcastServiceMetrics.getInstance().setFeatureMetrics(mockedFeatureMetrics);
192 
193         assertTrue(testFeatureMetrics.equals(CellBroadcastServiceMetrics.getInstance()
194                 .getFeatureMetricsSharedPreferences()));
195 
196         CellBroadcastServiceMetrics.getInstance().logFeatureChangedAsNeeded(mMockedContext);
197 
198         verify(mockedFeatureMetrics, times(1)).logFeatureChanged();
199         verify(mockedFeatureMetrics, times(1)).updateSharedPreferences();
200         verify(mockedFeatureMetrics, times(1)).clone();
201     }
202 }
203