• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "extensions/common/feature_switch.h"
6 
7 #include "base/command_line.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 
11 using extensions::FeatureSwitch;
12 
13 namespace {
14 
15 const char kSwitchName[] = "test-switch";
16 
17 template<FeatureSwitch::DefaultValue T>
18 class FeatureSwitchTest : public testing::Test {
19  public:
FeatureSwitchTest()20   FeatureSwitchTest()
21       : command_line_(CommandLine::NO_PROGRAM),
22         feature_(&command_line_, kSwitchName, T) {
23   }
24  protected:
25   CommandLine command_line_;
26   FeatureSwitch feature_;
27 };
28 
29 typedef FeatureSwitchTest<FeatureSwitch::DEFAULT_DISABLED>
30     FeatureSwitchDisabledTest;
31 typedef FeatureSwitchTest<FeatureSwitch::DEFAULT_ENABLED>
32     FeatureSwitchEnabledTest;
33 
34 }  // namespace
35 
TEST_F(FeatureSwitchDisabledTest,NoSwitchValue)36 TEST_F(FeatureSwitchDisabledTest, NoSwitchValue) {
37   EXPECT_FALSE(feature_.IsEnabled());
38 }
39 
TEST_F(FeatureSwitchDisabledTest,FalseSwitchValue)40 TEST_F(FeatureSwitchDisabledTest, FalseSwitchValue) {
41   command_line_.AppendSwitchASCII(kSwitchName, "0");
42   EXPECT_FALSE(feature_.IsEnabled());
43 }
44 
TEST_F(FeatureSwitchDisabledTest,GibberishSwitchValue)45 TEST_F(FeatureSwitchDisabledTest, GibberishSwitchValue) {
46   command_line_.AppendSwitchASCII(kSwitchName, "monkey");
47   EXPECT_FALSE(feature_.IsEnabled());
48 }
49 
TEST_F(FeatureSwitchDisabledTest,Override)50 TEST_F(FeatureSwitchDisabledTest, Override) {
51   {
52     FeatureSwitch::ScopedOverride override(&feature_, false);
53     EXPECT_FALSE(feature_.IsEnabled());
54   }
55   EXPECT_FALSE(feature_.IsEnabled());
56 
57   {
58     FeatureSwitch::ScopedOverride override(&feature_, true);
59     EXPECT_TRUE(feature_.IsEnabled());
60   }
61   EXPECT_FALSE(feature_.IsEnabled());
62 }
63 
TEST_F(FeatureSwitchDisabledTest,TrueSwitchValue)64 TEST_F(FeatureSwitchDisabledTest, TrueSwitchValue) {
65   command_line_.AppendSwitchASCII(kSwitchName, "1");
66   EXPECT_TRUE(feature_.IsEnabled());
67 
68   {
69     FeatureSwitch::ScopedOverride override(&feature_, false);
70     EXPECT_FALSE(feature_.IsEnabled());
71   }
72   EXPECT_TRUE(feature_.IsEnabled());
73 
74   {
75     FeatureSwitch::ScopedOverride override(&feature_, true);
76     EXPECT_TRUE(feature_.IsEnabled());
77   }
78   EXPECT_TRUE(feature_.IsEnabled());
79 }
80 
TEST_F(FeatureSwitchDisabledTest,TrimSwitchValue)81 TEST_F(FeatureSwitchDisabledTest, TrimSwitchValue) {
82   command_line_.AppendSwitchASCII(kSwitchName, " \t  1\n  ");
83   EXPECT_TRUE(feature_.IsEnabled());
84 }
85 
TEST_F(FeatureSwitchEnabledTest,NoSwitchValue)86 TEST_F(FeatureSwitchEnabledTest, NoSwitchValue) {
87   EXPECT_TRUE(feature_.IsEnabled());
88 }
89 
TEST_F(FeatureSwitchEnabledTest,TrueSwitchValue)90 TEST_F(FeatureSwitchEnabledTest, TrueSwitchValue) {
91   command_line_.AppendSwitchASCII(kSwitchName, "1");
92   EXPECT_TRUE(feature_.IsEnabled());
93 }
94 
TEST_F(FeatureSwitchEnabledTest,GibberishSwitchValue)95 TEST_F(FeatureSwitchEnabledTest, GibberishSwitchValue) {
96   command_line_.AppendSwitchASCII(kSwitchName, "monkey");
97   EXPECT_TRUE(feature_.IsEnabled());
98 }
99 
TEST_F(FeatureSwitchEnabledTest,Override)100 TEST_F(FeatureSwitchEnabledTest, Override) {
101   {
102     FeatureSwitch::ScopedOverride override(&feature_, true);
103     EXPECT_TRUE(feature_.IsEnabled());
104   }
105   EXPECT_TRUE(feature_.IsEnabled());
106 
107   {
108     FeatureSwitch::ScopedOverride override(&feature_, false);
109     EXPECT_FALSE(feature_.IsEnabled());
110   }
111   EXPECT_TRUE(feature_.IsEnabled());
112 }
113 
TEST_F(FeatureSwitchEnabledTest,FalseSwitchValue)114 TEST_F(FeatureSwitchEnabledTest, FalseSwitchValue) {
115   command_line_.AppendSwitchASCII(kSwitchName, "0");
116   EXPECT_FALSE(feature_.IsEnabled());
117 
118   {
119     FeatureSwitch::ScopedOverride override(&feature_, true);
120     EXPECT_TRUE(feature_.IsEnabled());
121   }
122   EXPECT_FALSE(feature_.IsEnabled());
123 
124   {
125     FeatureSwitch::ScopedOverride override(&feature_, false);
126     EXPECT_FALSE(feature_.IsEnabled());
127   }
128   EXPECT_FALSE(feature_.IsEnabled());
129 }
130 
TEST_F(FeatureSwitchEnabledTest,TrimSwitchValue)131 TEST_F(FeatureSwitchEnabledTest, TrimSwitchValue) {
132   command_line_.AppendSwitchASCII(kSwitchName, "\t\t 0 \n");
133   EXPECT_FALSE(feature_.IsEnabled());
134 }
135