| /* |
| * Copyright (C) 2019 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.systemui.util; |
| |
| import static android.provider.DeviceConfig.Properties; |
| |
| import static com.google.common.truth.Truth.assertThat; |
| |
| import android.provider.DeviceConfig.OnPropertiesChangedListener; |
| |
| import androidx.annotation.NonNull; |
| import androidx.test.filters.SmallTest; |
| import androidx.test.runner.AndroidJUnit4; |
| |
| import com.android.systemui.SysuiTestCase; |
| import com.android.systemui.util.concurrency.FakeExecutor; |
| import com.android.systemui.util.time.FakeSystemClock; |
| |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| |
| @SmallTest |
| @RunWith(AndroidJUnit4.class) |
| public class DeviceConfigProxyFakeTest extends SysuiTestCase { |
| private static final String NAMESPACE = "foobar"; |
| |
| private FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); |
| |
| private DeviceConfigProxyFake mDeviceConfigProxyFake; |
| |
| @Before |
| public void setup() { |
| mDeviceConfigProxyFake = new DeviceConfigProxyFake(); |
| } |
| |
| @Test |
| public void testOnPropertiesChanged() { |
| TestableListener onPropertiesChangedListener = new TestableListener(); |
| String key = "foo"; |
| String value = "bar"; |
| |
| mDeviceConfigProxyFake.addOnPropertiesChangedListener( |
| NAMESPACE, mFakeExecutor, onPropertiesChangedListener); |
| |
| mDeviceConfigProxyFake.setProperty(NAMESPACE, key, value, false); |
| mFakeExecutor.runAllReady(); |
| assertThat(onPropertiesChangedListener.mProperties).isNotNull(); |
| assertThat(onPropertiesChangedListener.mProperties.getKeyset().size()).isEqualTo(1); |
| assertThat(onPropertiesChangedListener.mProperties.getString(key, "")).isEqualTo(value); |
| } |
| |
| @Test |
| public void testOnMultiplePropertiesChanged() { |
| TestableListener onPropertiesChangedListener = new TestableListener(); |
| String keyA = "foo"; |
| String valueA = "bar"; |
| String keyB = "bada"; |
| String valueB = "boom"; |
| |
| mDeviceConfigProxyFake.addOnPropertiesChangedListener( |
| NAMESPACE, mFakeExecutor, onPropertiesChangedListener); |
| mDeviceConfigProxyFake.setProperty(NAMESPACE, keyA, valueA, false); |
| mFakeExecutor.runAllReady(); |
| assertThat(onPropertiesChangedListener.mProperties).isNotNull(); |
| assertThat(onPropertiesChangedListener.mProperties.getKeyset().size()).isEqualTo(1); |
| assertThat(onPropertiesChangedListener.mProperties.getString(keyA, "")).isEqualTo(valueA); |
| |
| mDeviceConfigProxyFake.setProperty(NAMESPACE, keyB, valueB, false); |
| mFakeExecutor.runAllReady(); |
| assertThat(onPropertiesChangedListener.mProperties).isNotNull(); |
| assertThat(onPropertiesChangedListener.mProperties.getKeyset().size()).isEqualTo(1); |
| assertThat(onPropertiesChangedListener.mProperties.getString(keyB, "")).isEqualTo(valueB); |
| } |
| |
| private static class TestableListener implements OnPropertiesChangedListener { |
| Properties mProperties; |
| |
| TestableListener() { |
| } |
| @Override |
| public void onPropertiesChanged(@NonNull Properties properties) { |
| mProperties = properties; |
| } |
| } |
| } |