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