• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 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 package android.support.test.metricshelper;
17 
18 import android.metrics.LogMaker;
19 import android.metrics.MetricsReader;
20 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
21 
22 import android.test.suitebuilder.annotation.SmallTest;
23 
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27 
28 import org.mockito.Mock;
29 import org.mockito.MockitoAnnotations;
30 
31 import android.support.test.runner.AndroidJUnit4;
32 
33 import static junit.framework.Assert.assertEquals;
34 import static org.mockito.Mockito.when;
35 import static org.junit.Assert.fail;
36 
37 @SmallTest
38 @RunWith(AndroidJUnit4.class)
39 public class MetricsAssertsTest {
40     @Mock MetricsReader mReader;
41 
42     private LogMaker a;
43     private LogMaker b;
44     private LogMaker c;
45     private LogMaker d;
46 
47     private int mActionView = MetricsEvent.ACTION_WIFI_ON;
48     private int mOpenView = MetricsEvent.MAIN_SETTINGS;
49     private int mCloseView = MetricsEvent.NOTIFICATION_PANEL;
50     private int mSubtype = 4;
51 
52     @Before
setUp()53     public void setUp() {
54         MockitoAnnotations.initMocks(this);
55 
56         a = new LogMaker(MetricsEvent.SCREEN)
57                 .setType(MetricsEvent.TYPE_OPEN)
58                 .setTimestamp(1000);
59         b = new LogMaker(mOpenView)
60                 .setType(MetricsEvent.TYPE_OPEN)
61                 .setTimestamp(2000);
62         c = new LogMaker(mActionView)
63                 .setType(MetricsEvent.TYPE_ACTION)
64                 .setSubtype(mSubtype)
65                 .setTimestamp(3000);
66         d = new LogMaker(mCloseView)
67                 .setType(MetricsEvent.TYPE_CLOSE)
68                 .setTimestamp(4000);
69 
70         when(mReader.hasNext())
71             .thenReturn(true)
72             .thenReturn(true)
73             .thenReturn(true)
74             .thenReturn(true)
75             .thenReturn(false);
76         when(mReader.next())
77             .thenReturn(a)
78             .thenReturn(b)
79             .thenReturn(c)
80             .thenReturn(d)
81             .thenReturn(null);
82     }
83 
84     @Test
testHasActionLogTrue()85     public void testHasActionLogTrue() {
86         MetricsAsserts.assertHasActionLog("foo", mReader, mActionView);
87     }
88 
89     @Test
testHasActionLogFalse()90     public void testHasActionLogFalse() {
91         final String message = "foo";
92         try {
93             MetricsAsserts.assertHasActionLog(message, mReader, mOpenView);
94         } catch (AssertionError e) {
95             assertEquals(message, e.getMessage());
96             return; // success!
97         }
98     }
99 
100     @Test
testHasVisibileLogTrue()101     public void testHasVisibileLogTrue() {
102         MetricsAsserts.assertHasVisibilityLog("foo", mReader, mOpenView, true);
103     }
104 
105     @Test
testHasVisibleLogFalse()106     public void testHasVisibleLogFalse() {
107         final String message = "foo";
108         try {
109             MetricsAsserts.assertHasVisibilityLog(message, mReader, mActionView, true);
110         } catch (AssertionError e) {
111             assertEquals(message, e.getMessage());
112             return; // success!
113         }
114     }
115 
116     @Test
testHasHiddenLogTrue()117     public void testHasHiddenLogTrue() {
118         MetricsAsserts.assertHasVisibilityLog("foo", mReader, mCloseView, false);
119     }
120 
121     @Test
testHasHiddenLogFalse()122     public void testHasHiddenLogFalse() {
123         final String message = "foo";
124         try {
125             MetricsAsserts.assertHasVisibilityLog(message, mReader, mOpenView, false);
126         } catch (AssertionError e) {
127             assertEquals(message, e.getMessage());
128             return; // success!
129         }
130     }
131 
132     @Test
testHasTemplateLogCategoryOnly()133     public void testHasTemplateLogCategoryOnly() {
134         MetricsAsserts.assertHasLog("didn't find existing log", mReader,
135                 new LogMaker(mActionView));
136     }
137 
138     @Test
testHasTemplateLogCategoryAndType()139     public void testHasTemplateLogCategoryAndType() {
140         MetricsAsserts.assertHasLog("didn't find existing log", mReader,
141                 new LogMaker(mActionView)
142                         .setType(MetricsEvent.TYPE_ACTION));
143     }
144 
145     @Test
testHasTemplateLogCategoryTypeAndSubtype()146     public void testHasTemplateLogCategoryTypeAndSubtype() {
147         MetricsAsserts.assertHasLog("didn't find existing log", mReader,
148                 new LogMaker(mActionView)
149                         .setType(MetricsEvent.TYPE_ACTION)
150                         .setSubtype(mSubtype));
151     }
152 
153     @Test
testDoesNotHaveTemplateLog()154     public void testDoesNotHaveTemplateLog() {
155         final String message = "foo";
156         try {
157             MetricsAsserts.assertHasLog(message, mReader,
158                     new LogMaker(mActionView)
159                             .setType(MetricsEvent.TYPE_ACTION)
160                             .setSubtype(mSubtype));
161         } catch (AssertionError e) {
162             assertEquals(message, e.getMessage());
163             return; // success!
164         }
165 
166     }
167 }
168