1 /* 2 * Copyright (C) 2021 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.systemui.statusbar.disableflags 18 19 import androidx.test.filters.SmallTest 20 import com.android.systemui.SysuiTestCase 21 import com.google.common.truth.Truth.assertThat 22 import org.junit.Assert.assertThrows 23 import org.junit.Test 24 25 @SmallTest 26 class DisableFlagsLoggerTest : SysuiTestCase() { 27 private val disable1Flags = listOf( 28 DisableFlagsLogger.DisableFlag(0b100, 'A', 'a'), 29 DisableFlagsLogger.DisableFlag(0b010, 'B', 'b'), 30 DisableFlagsLogger.DisableFlag(0b001, 'C', 'c'), 31 ) 32 private val disable2Flags = listOf( 33 DisableFlagsLogger.DisableFlag(0b10, 'M', 'm'), 34 DisableFlagsLogger.DisableFlag(0b01, 'N', 'n'), 35 ) 36 37 private val disableFlagsLogger = DisableFlagsLogger(disable1Flags, disable2Flags) 38 39 @Test 40 fun getDisableFlagsString_nullLocalModification_localModNotLogged() { 41 val result = disableFlagsLogger.getDisableFlagsString( 42 DisableFlagsLogger.DisableState(1, 1), 43 newAfterLocalModification = null 44 ) 45 46 assertThat(result).doesNotContain("local modification") 47 } 48 49 @Test 50 fun getDisableFlagsString_newAfterLocalModificationSameAsNew_localModNotLogged() { 51 val newState = DisableFlagsLogger.DisableState( 52 0b001, // abC 53 0b10 // mn 54 ) 55 56 val result = disableFlagsLogger.getDisableFlagsString(newState, newState) 57 58 assertThat(result).doesNotContain("local modification") 59 } 60 61 @Test 62 fun getDisableFlagsString_newAfterLocalModificationDifferent_localModAndDiffLogged() { 63 val result = disableFlagsLogger.getDisableFlagsString( 64 new = DisableFlagsLogger.DisableState( 65 0b000, // abc 66 0b00 // mn 67 ), 68 newAfterLocalModification = DisableFlagsLogger.DisableState( 69 0b100, // Abc 70 0b10 // Mn 71 ) 72 ) 73 74 assertThat(result).contains("local modification: Abc.Mn (changed: A.M)") 75 } 76 77 @Test 78 fun getDisableFlagsString_onlyDisable2Different_diffLoggedCorrectly() { 79 val result = disableFlagsLogger.getDisableFlagsString( 80 DisableFlagsLogger.DisableState( 81 0b001, // abC 82 0b01, // mN 83 ), 84 DisableFlagsLogger.DisableState( 85 0b001, // abC 86 0b00 // mn 87 ) 88 ) 89 90 assertThat(result).contains("(changed: .n)") 91 } 92 93 @Test 94 fun constructor_defaultDisableFlags_noException() { 95 // Just creating the logger with the default params will trigger the exception if there 96 // is one. 97 DisableFlagsLogger() 98 } 99 100 @Test 101 fun constructor_disable1_FlagIsSetSymbolNotUnique_exception() { 102 assertThrows(IllegalArgumentException::class.java) { 103 DisableFlagsLogger( 104 disable1FlagsList = listOf( 105 DisableFlagsLogger.DisableFlag(0b100, 'A', 'a'), 106 DisableFlagsLogger.DisableFlag(0b010, 'A', 'b'), 107 ), 108 listOf() 109 ) 110 } 111 } 112 113 @Test 114 fun constructor_disable1_FlagNotSetSymbolNotUnique_exception() { 115 assertThrows(IllegalArgumentException::class.java) { 116 DisableFlagsLogger( 117 disable1FlagsList = listOf( 118 DisableFlagsLogger.DisableFlag(0b100, 'A', 'a'), 119 DisableFlagsLogger.DisableFlag(0b010, 'B', 'a'), 120 ), 121 listOf() 122 ) 123 } 124 } 125 126 @Test 127 fun constructor_disable2_FlagIsSetSymbolNotUnique_exception() { 128 assertThrows(IllegalArgumentException::class.java) { 129 DisableFlagsLogger( 130 disable1FlagsList = listOf(), 131 disable2FlagsList = listOf( 132 DisableFlagsLogger.DisableFlag(0b100, 'A', 'a'), 133 DisableFlagsLogger.DisableFlag(0b010, 'A', 'b'), 134 ), 135 ) 136 } 137 } 138 139 @Test 140 fun constructor_disable2_FlagNotSetSymbolNotUnique_exception() { 141 assertThrows(IllegalArgumentException::class.java) { 142 DisableFlagsLogger( 143 disable1FlagsList = listOf(), 144 disable2FlagsList = listOf( 145 DisableFlagsLogger.DisableFlag(0b100, 'A', 'a'), 146 DisableFlagsLogger.DisableFlag(0b010, 'B', 'a'), 147 ), 148 ) 149 } 150 } 151 } 152