1 /* 2 * Copyright (C) 2023 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.pipeline.mobile.ui.model 18 19 import androidx.test.filters.SmallTest 20 import com.android.settingslib.graph.SignalDrawable 21 import com.android.systemui.SysuiTestCase 22 import com.android.systemui.statusbar.pipeline.mobile.domain.model.SignalIconModel 23 import com.google.common.truth.Truth.assertThat 24 import platform.test.runner.parameterized.ParameterizedAndroidJunit4 25 import platform.test.runner.parameterized.Parameters 26 import org.junit.Test 27 import org.junit.runner.RunWith 28 29 @SmallTest 30 @RunWith(ParameterizedAndroidJunit4::class) 31 internal class SignalIconModelParameterizedTest(private val testCase: TestCase) : SysuiTestCase() { 32 @Test drawableFromModel_level0_numLevels4_noExclamation_notCarrierNetworkChangenull33 fun drawableFromModel_level0_numLevels4_noExclamation_notCarrierNetworkChange() { 34 val model = 35 SignalIconModel.Cellular( 36 level = 0, 37 numberOfLevels = 4, 38 showExclamationMark = false, 39 carrierNetworkChange = false 40 ) 41 42 val expected = 43 SignalDrawable.getState(/* level = */ 0, /* numLevels = */ 4, /* cutOut = */ false) 44 45 assertThat(model.toSignalDrawableState()).isEqualTo(expected) 46 } 47 48 @Test runTestnull49 fun runTest() { 50 val model = testCase.toSignalIconModel() 51 assertThat(model.toSignalDrawableState()).isEqualTo(testCase.expected) 52 } 53 54 internal data class TestCase( 55 val level: Int, 56 val numberOfLevels: Int, 57 val showExclamation: Boolean, 58 val carrierNetworkChange: Boolean, 59 val expected: Int, 60 ) { toSignalIconModelnull61 fun toSignalIconModel() = 62 SignalIconModel.Cellular( 63 level = level, 64 numberOfLevels = numberOfLevels, 65 showExclamationMark = showExclamation, 66 carrierNetworkChange = carrierNetworkChange, 67 ) 68 69 override fun toString(): String = 70 "INPUT(level=$level," + 71 "numberOfLevels=$numberOfLevels," + 72 "showExclamation=$showExclamation," + 73 "carrierNetworkChange=$carrierNetworkChange)" 74 } 75 76 companion object { 77 @Parameters(name = "{0}") @JvmStatic fun data() = testData() 78 79 private fun testData(): Collection<TestCase> = 80 listOf( 81 TestCase( 82 level = 0, 83 numberOfLevels = 4, 84 showExclamation = false, 85 carrierNetworkChange = false, 86 expected = SignalDrawable.getState(0, 4, false) 87 ), 88 TestCase( 89 level = 0, 90 numberOfLevels = 4, 91 showExclamation = false, 92 carrierNetworkChange = true, 93 expected = SignalDrawable.getCarrierChangeState(4) 94 ), 95 TestCase( 96 level = 2, 97 numberOfLevels = 5, 98 showExclamation = false, 99 carrierNetworkChange = false, 100 expected = SignalDrawable.getState(2, 5, false) 101 ), 102 TestCase( 103 level = 2, 104 numberOfLevels = 5, 105 showExclamation = true, 106 carrierNetworkChange = false, 107 expected = SignalDrawable.getState(2, 5, true) 108 ), 109 TestCase( 110 level = 2, 111 numberOfLevels = 5, 112 showExclamation = true, 113 carrierNetworkChange = true, 114 expected = SignalDrawable.getCarrierChangeState(5) 115 ), 116 ) 117 } 118 } 119