1 /*
2  * Copyright (C) 2024 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 @file:OptIn(ExperimentalCoroutinesApi::class)
18 
19 package com.android.systemui.deviceconfig.data.repository
20 
21 import androidx.test.ext.junit.runners.AndroidJUnit4
22 import androidx.test.filters.SmallTest
23 import com.android.systemui.SysuiTestCase
24 import com.android.systemui.concurrency.fakeExecutor
25 import com.android.systemui.coroutines.collectLastValue
26 import com.android.systemui.kosmos.testScope
27 import com.android.systemui.testKosmos
28 import com.android.systemui.util.fakeDeviceConfigProxy
29 import com.google.common.truth.Truth.assertThat
30 import kotlinx.coroutines.ExperimentalCoroutinesApi
31 import kotlinx.coroutines.test.runTest
32 import org.junit.Test
33 import org.junit.runner.RunWith
34 
35 @SmallTest
36 @RunWith(AndroidJUnit4::class)
37 class DeviceConfigRepositoryTest : SysuiTestCase() {
38 
39     private val kosmos = testKosmos()
40     private val testScope = kosmos.testScope
41     private val dataSource = kosmos.fakeDeviceConfigProxy
42 
43     private val underTest = kosmos.deviceConfigRepository
44 
45     @Test
booleanPropertynull46     fun booleanProperty() =
47         testScope.runTest {
48             val property by collectLastValue(underTest.property("namespace", "name", false))
49             assertThat(property).isFalse()
50 
51             dataSource.setProperty("namespace", "name", "true", /* makeDefault= */ false)
52             kosmos.fakeExecutor.runAllReady()
53             assertThat(property).isTrue()
54 
55             dataSource.setProperty("namespace", "name", "false", /* makeDefault= */ false)
56             kosmos.fakeExecutor.runAllReady()
57             assertThat(property).isFalse()
58         }
59 }
60