FeatureFlagUtilsTest.java revision 93d87e6964e754b5a18326a89d1d5fbf2928f786
1690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang/*
2690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang * Copyright (C) 2017 The Android Open Source Project
3690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang *
4690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License");
5690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang * you may not use this file except in compliance with the License.
6690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang * You may obtain a copy of the License at
7690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang *
8690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang *      http://www.apache.org/licenses/LICENSE-2.0
9690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang *
10690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang * Unless required by applicable law or agreed to in writing, software
11690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS,
12690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang * See the License for the specific language governing permissions and
14690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang * limitations under the License.
15690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang */
16690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
17690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangpackage android.util;
18690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
19cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhangimport static junit.framework.Assert.assertEquals;
20690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangimport static junit.framework.Assert.assertFalse;
21690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangimport static junit.framework.Assert.assertTrue;
22690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
2393d87e6964e754b5a18326a89d1d5fbf2928f786Fan Zhangimport android.content.Context;
24690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangimport android.os.SystemProperties;
2593d87e6964e754b5a18326a89d1d5fbf2928f786Fan Zhangimport android.support.test.InstrumentationRegistry;
26690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangimport android.support.test.runner.AndroidJUnit4;
27690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangimport android.test.suitebuilder.annotation.SmallTest;
28690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
29690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangimport org.junit.After;
30690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangimport org.junit.Before;
31690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangimport org.junit.Test;
32690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangimport org.junit.runner.RunWith;
33690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
34690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang@RunWith(AndroidJUnit4.class)
35690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang@SmallTest
36690986d37052eecf60d38c7d21697ecd28150c39Fan Zhangpublic class FeatureFlagUtilsTest {
37690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
38690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    private static final String TEST_FEATURE_NAME = "feature_foobar";
39690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
4093d87e6964e754b5a18326a89d1d5fbf2928f786Fan Zhang    private Context mContext;
4193d87e6964e754b5a18326a89d1d5fbf2928f786Fan Zhang
42690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    @Before
43690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    public void setUp() {
4493d87e6964e754b5a18326a89d1d5fbf2928f786Fan Zhang        mContext = InstrumentationRegistry.getTargetContext();
45690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang        cleanup();
46690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    }
47690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
48690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    @After
49690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    public void tearDown() {
50690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang        cleanup();
51690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    }
52690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
53690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    private void cleanup() {
54690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang        SystemProperties.set(FeatureFlagUtils.FFLAG_PREFIX + TEST_FEATURE_NAME, "");
55690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang        SystemProperties.set(FeatureFlagUtils.FFLAG_OVERRIDE_PREFIX + TEST_FEATURE_NAME, "");
56690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    }
57690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
58690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    @Test
59690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    public void testGetFlag_enabled_shouldReturnTrue() {
60690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang        SystemProperties.set(FeatureFlagUtils.FFLAG_PREFIX + TEST_FEATURE_NAME, "true");
61690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
6293d87e6964e754b5a18326a89d1d5fbf2928f786Fan Zhang        assertTrue(FeatureFlagUtils.isEnabled(mContext, TEST_FEATURE_NAME));
63690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    }
64690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
65690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    @Test
66690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    public void testGetFlag_override_shouldReturnTrue() {
67690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang        SystemProperties.set(FeatureFlagUtils.FFLAG_PREFIX + TEST_FEATURE_NAME, "false");
68690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang        SystemProperties.set(FeatureFlagUtils.FFLAG_OVERRIDE_PREFIX + TEST_FEATURE_NAME, "true");
69690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
7093d87e6964e754b5a18326a89d1d5fbf2928f786Fan Zhang        assertTrue(FeatureFlagUtils.isEnabled(mContext, TEST_FEATURE_NAME));
71690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    }
72690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
73690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    @Test
74cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang    public void testSetEnabled_shouldSetOverrideFlag() {
7593d87e6964e754b5a18326a89d1d5fbf2928f786Fan Zhang        assertFalse(FeatureFlagUtils.isEnabled(mContext, TEST_FEATURE_NAME));
76cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang
77cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang        FeatureFlagUtils.setEnabled(TEST_FEATURE_NAME, true);
78cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang
79cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang        assertEquals(SystemProperties.get(FeatureFlagUtils.FFLAG_PREFIX + TEST_FEATURE_NAME, null),
80cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang                "");
81cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang        assertTrue(Boolean.parseBoolean(SystemProperties.get(
82cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang                FeatureFlagUtils.FFLAG_OVERRIDE_PREFIX + TEST_FEATURE_NAME, "")));
83cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang    }
84cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang
85cfd02742e46c069c5d700756b0fcbf502c90c7a5Fan Zhang    @Test
86690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    public void testGetFlag_notSet_shouldReturnFalse() {
8793d87e6964e754b5a18326a89d1d5fbf2928f786Fan Zhang        assertFalse(FeatureFlagUtils.isEnabled(mContext, TEST_FEATURE_NAME));
88690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang    }
89690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang
90690986d37052eecf60d38c7d21697ecd28150c39Fan Zhang}
91