1 /* 2 * Copyright (C) 2019 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.util; 18 19 import static android.provider.DeviceConfig.Properties; 20 21 import static com.google.common.truth.Truth.assertThat; 22 23 import android.provider.DeviceConfig.OnPropertiesChangedListener; 24 25 import androidx.annotation.NonNull; 26 import androidx.test.filters.SmallTest; 27 import androidx.test.runner.AndroidJUnit4; 28 29 import com.android.systemui.SysuiTestCase; 30 import com.android.systemui.util.concurrency.FakeExecutor; 31 import com.android.systemui.util.time.FakeSystemClock; 32 33 import org.junit.Before; 34 import org.junit.Test; 35 import org.junit.runner.RunWith; 36 37 @SmallTest 38 @RunWith(AndroidJUnit4.class) 39 public class DeviceConfigProxyFakeTest extends SysuiTestCase { 40 private static final String NAMESPACE = "foobar"; 41 42 private FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); 43 44 private DeviceConfigProxyFake mDeviceConfigProxyFake; 45 46 @Before setup()47 public void setup() { 48 mDeviceConfigProxyFake = new DeviceConfigProxyFake(); 49 } 50 51 @Test testOnPropertiesChanged()52 public void testOnPropertiesChanged() { 53 TestableListener onPropertiesChangedListener = new TestableListener(); 54 String key = "foo"; 55 String value = "bar"; 56 57 mDeviceConfigProxyFake.addOnPropertiesChangedListener( 58 NAMESPACE, mFakeExecutor, onPropertiesChangedListener); 59 60 mDeviceConfigProxyFake.setProperty(NAMESPACE, key, value, false); 61 mFakeExecutor.runAllReady(); 62 assertThat(onPropertiesChangedListener.mProperties).isNotNull(); 63 assertThat(onPropertiesChangedListener.mProperties.getKeyset().size()).isEqualTo(1); 64 assertThat(onPropertiesChangedListener.mProperties.getString(key, "")).isEqualTo(value); 65 } 66 67 @Test testOnMultiplePropertiesChanged()68 public void testOnMultiplePropertiesChanged() { 69 TestableListener onPropertiesChangedListener = new TestableListener(); 70 String keyA = "foo"; 71 String valueA = "bar"; 72 String keyB = "bada"; 73 String valueB = "boom"; 74 75 mDeviceConfigProxyFake.addOnPropertiesChangedListener( 76 NAMESPACE, mFakeExecutor, onPropertiesChangedListener); 77 mDeviceConfigProxyFake.setProperty(NAMESPACE, keyA, valueA, false); 78 mFakeExecutor.runAllReady(); 79 assertThat(onPropertiesChangedListener.mProperties).isNotNull(); 80 assertThat(onPropertiesChangedListener.mProperties.getKeyset().size()).isEqualTo(1); 81 assertThat(onPropertiesChangedListener.mProperties.getString(keyA, "")).isEqualTo(valueA); 82 83 mDeviceConfigProxyFake.setProperty(NAMESPACE, keyB, valueB, false); 84 mFakeExecutor.runAllReady(); 85 assertThat(onPropertiesChangedListener.mProperties).isNotNull(); 86 assertThat(onPropertiesChangedListener.mProperties.getKeyset().size()).isEqualTo(1); 87 assertThat(onPropertiesChangedListener.mProperties.getString(keyB, "")).isEqualTo(valueB); 88 } 89 90 private static class TestableListener implements OnPropertiesChangedListener { 91 Properties mProperties; 92 TestableListener()93 TestableListener() { 94 } 95 @Override onPropertiesChanged(@onNull Properties properties)96 public void onPropertiesChanged(@NonNull Properties properties) { 97 mProperties = properties; 98 } 99 } 100 } 101