blob: 47a969bd071907df2310ba2b950e9a28dbbe52fc [file] [log] [blame]
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -04001/*
2 * Copyright (C) 2016 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
17package com.android.systemui.power;
18
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -040019import static junit.framework.Assert.assertFalse;
20import static junit.framework.Assert.assertTrue;
Jason Monke9789282016-11-09 08:59:56 -050021
Chris Wren5e6c0ff2017-01-05 12:57:06 -050022import static org.mockito.Matchers.eq;
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -040023import static org.mockito.Mockito.any;
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -040024import static org.mockito.Mockito.anyString;
25import static org.mockito.Mockito.mock;
26import static org.mockito.Mockito.times;
27import static org.mockito.Mockito.verify;
28
29import android.app.Notification;
30import android.app.NotificationManager;
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -040031import android.test.suitebuilder.annotation.SmallTest;
Jason Monke9789282016-11-09 08:59:56 -050032
Brett Chabot8091d9e2019-02-26 14:52:33 -080033import androidx.test.runner.AndroidJUnit4;
34
Chris Wren5e6c0ff2017-01-05 12:57:06 -050035import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
Jason Monke9789282016-11-09 08:59:56 -050036import com.android.systemui.SysuiTestCase;
Beverly334bc5f2017-07-31 10:37:17 -040037import com.android.systemui.util.NotificationChannels;
Jason Monke9789282016-11-09 08:59:56 -050038
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -040039import org.junit.Before;
40import org.junit.Test;
41import org.junit.runner.RunWith;
42import org.mockito.ArgumentCaptor;
43
44@SmallTest
45@RunWith(AndroidJUnit4.class)
Jason Monke9789282016-11-09 08:59:56 -050046public class PowerNotificationWarningsTest extends SysuiTestCase {
Salvador Martinezf9e47502018-01-04 13:45:48 -080047
48 public static final String FORMATTED_45M = "0h 45m";
49 public static final String FORMATTED_HOUR = "1h 0m";
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -040050 private final NotificationManager mMockNotificationManager = mock(NotificationManager.class);
51 private PowerNotificationWarnings mPowerNotificationWarnings;
52
53 @Before
54 public void setUp() throws Exception {
55 // Test Instance.
Jason Monkd819c312017-08-11 12:53:36 -040056 mContext.addMockSystemService(NotificationManager.class, mMockNotificationManager);
57 mPowerNotificationWarnings = new PowerNotificationWarnings(mContext);
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -040058 }
59
60 @Test
61 public void testIsInvalidChargerWarningShowing_DefaultsToFalse() {
62 assertFalse(mPowerNotificationWarnings.isInvalidChargerWarningShowing());
63 }
64
65 @Test
66 public void testIsInvalidChargerWarningShowing_TrueAfterShow() {
67 mPowerNotificationWarnings.showInvalidChargerWarning();
68 assertTrue(mPowerNotificationWarnings.isInvalidChargerWarningShowing());
69 }
70
71 @Test
72 public void testIsInvalidChargerWarningShowing_FalseAfterDismiss() {
73 mPowerNotificationWarnings.showInvalidChargerWarning();
74 mPowerNotificationWarnings.dismissInvalidChargerWarning();
75 assertFalse(mPowerNotificationWarnings.isInvalidChargerWarningShowing());
76 }
77
78 @Test
79 public void testShowInvalidChargerNotification_NotifyAsUser() {
80 mPowerNotificationWarnings.showInvalidChargerWarning();
81 verify(mMockNotificationManager, times(1))
Chris Wren5e6c0ff2017-01-05 12:57:06 -050082 .notifyAsUser(anyString(), eq(SystemMessage.NOTE_BAD_CHARGER), any(), any());
83 verify(mMockNotificationManager, times(1)).cancelAsUser(anyString(),
84 eq(SystemMessage.NOTE_POWER_LOW), any());
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -040085 }
86
87 @Test
88 public void testDismissInvalidChargerNotification_CancelAsUser() {
89 mPowerNotificationWarnings.showInvalidChargerWarning();
90 mPowerNotificationWarnings.dismissInvalidChargerWarning();
Chris Wren5e6c0ff2017-01-05 12:57:06 -050091 verify(mMockNotificationManager, times(1)).cancelAsUser(anyString(),
92 eq(SystemMessage.NOTE_BAD_CHARGER), any());
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -040093 }
94
95 @Test
96 public void testShowLowBatteryNotification_NotifyAsUser() {
97 mPowerNotificationWarnings.showLowBatteryWarning(false);
98 verify(mMockNotificationManager, times(1))
Chris Wren5e6c0ff2017-01-05 12:57:06 -050099 .notifyAsUser(anyString(), eq(SystemMessage.NOTE_POWER_LOW), any(), any());
100 verify(mMockNotificationManager, times(1)).cancelAsUser(anyString(),
101 eq(SystemMessage.NOTE_BAD_CHARGER), any());
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -0400102 }
103
104 @Test
105 public void testDismissLowBatteryNotification_CancelAsUser() {
106 mPowerNotificationWarnings.showLowBatteryWarning(false);
107 mPowerNotificationWarnings.dismissLowBatteryWarning();
Chris Wren5e6c0ff2017-01-05 12:57:06 -0500108 verify(mMockNotificationManager, times(1)).cancelAsUser(anyString(),
109 eq(SystemMessage.NOTE_POWER_LOW), any());
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -0400110 }
111
112 @Test
Beverly334bc5f2017-07-31 10:37:17 -0400113 public void testShowLowBatteryNotification_BatteryChannel() {
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -0400114 mPowerNotificationWarnings.showLowBatteryWarning(true);
115 ArgumentCaptor<Notification> captor = ArgumentCaptor.forClass(Notification.class);
116 verify(mMockNotificationManager)
Chris Wren5e6c0ff2017-01-05 12:57:06 -0500117 .notifyAsUser(anyString(), eq(SystemMessage.NOTE_POWER_LOW),
118 captor.capture(), any());
Beverly334bc5f2017-07-31 10:37:17 -0400119 assertTrue(captor.getValue().getChannelId() == NotificationChannels.BATTERY);
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -0400120 }
Andrew Sappersteinb7caf1d2016-12-14 15:39:20 -0800121
122 @Test
Salvador Martineza6f7b252017-04-10 10:46:15 -0700123 public void testShowHighTemperatureWarning_NotifyAsUser() {
124 mPowerNotificationWarnings.showHighTemperatureWarning();
Andrew Sappersteinb7caf1d2016-12-14 15:39:20 -0800125 verify(mMockNotificationManager, times(1))
Chris Wren5e6c0ff2017-01-05 12:57:06 -0500126 .notifyAsUser(anyString(), eq(SystemMessage.NOTE_HIGH_TEMP), any(), any());
Andrew Sappersteinb7caf1d2016-12-14 15:39:20 -0800127 }
128
129 @Test
Salvador Martineza6f7b252017-04-10 10:46:15 -0700130 public void testDismissHighTemperatureWarning_CancelAsUser() {
131 mPowerNotificationWarnings.showHighTemperatureWarning();
132 mPowerNotificationWarnings.dismissHighTemperatureWarning();
Chris Wren5e6c0ff2017-01-05 12:57:06 -0500133 verify(mMockNotificationManager, times(1)).cancelAsUser(anyString(),
134 eq(SystemMessage.NOTE_HIGH_TEMP), any());
Andrew Sappersteinb7caf1d2016-12-14 15:39:20 -0800135 }
Salvador Martineza6f7b252017-04-10 10:46:15 -0700136
137 @Test
138 public void testShowThermalShutdownWarning_NotifyAsUser() {
139 mPowerNotificationWarnings.showThermalShutdownWarning();
140 verify(mMockNotificationManager, times(1))
141 .notifyAsUser(anyString(), eq(SystemMessage.NOTE_THERMAL_SHUTDOWN), any(), any());
142 }
143
144 @Test
145 public void testDismissThermalShutdownWarning_CancelAsUser() {
146 mPowerNotificationWarnings.showThermalShutdownWarning();
147 mPowerNotificationWarnings.dismissThermalShutdownWarning();
148 verify(mMockNotificationManager, times(1)).cancelAsUser(anyString(),
149 eq(SystemMessage.NOTE_THERMAL_SHUTDOWN), any());
150 }
Geoffrey Pitsch4a7931d2016-09-15 13:11:47 -0400151}