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