OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2017 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 "base/test/scoped_feature_list.h" | |
6 | |
7 #include <string> | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 | |
10 namespace { | |
11 | |
12 static void ExpectFeatures(const std::string& enabled_features, | |
Ilya Sherman
2017/04/21 22:43:34
nit: No need for 'static' in an anonymous namespac
| |
13 const std::string& disabled_features) { | |
14 base::FeatureList* list = base::FeatureList::GetInstance(); | |
15 std::string actual_enabled_features; | |
16 std::string actual_disabled_features; | |
17 | |
18 list->GetFeatureOverrides(&actual_enabled_features, | |
19 &actual_disabled_features); | |
20 | |
21 EXPECT_EQ(enabled_features, actual_enabled_features); | |
22 EXPECT_EQ(disabled_features, actual_disabled_features); | |
23 } | |
24 | |
25 } // namespace | |
26 | |
27 namespace base { | |
28 | |
29 class ScopedFeatureListTest : public testing::Test { | |
30 public: | |
31 ScopedFeatureListTest() { | |
32 // Clear default feature list. | |
33 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); | |
34 feature_list->InitializeFromCommandLine("", ""); | |
Ilya Sherman
2017/04/21 22:43:34
nit: Prefer std::string() to "" for empty strings.
| |
35 original_feature_list_ = base::FeatureList::ClearInstanceForTesting(); | |
36 base::FeatureList::SetInstance(std::move(feature_list)); | |
37 } | |
38 | |
39 void TearDown() override { | |
Ilya Sherman
2017/04/21 22:43:34
Please do this work in the destructor rather than
| |
40 // Restore feature list. | |
41 if (original_feature_list_) { | |
42 base::FeatureList::ClearInstanceForTesting(); | |
43 base::FeatureList::RestoreInstanceForTesting( | |
44 std::move(original_feature_list_)); | |
45 } | |
46 } | |
47 | |
48 private: | |
49 std::unique_ptr<FeatureList> original_feature_list_; | |
Ilya Sherman
2017/04/21 22:43:34
Please document this member variable.
| |
50 }; | |
51 | |
52 const Feature kTestFeature1{"TestFeature1", FEATURE_DISABLED_BY_DEFAULT}; | |
53 const Feature kTestFeature2{"TestFeature2", FEATURE_DISABLED_BY_DEFAULT}; | |
Ilya Sherman
2017/04/21 22:43:34
nit: Please move these into the anonymous namespac
| |
54 | |
55 TEST_F(ScopedFeatureListTest, BasicScoped) { | |
56 ExpectFeatures("", ""); | |
57 EXPECT_FALSE(FeatureList::IsEnabled(kTestFeature1)); | |
58 { | |
59 test::ScopedFeatureList feature_list1; | |
60 feature_list1.InitFromCommandLine("TestFeature1", ""); | |
61 ExpectFeatures("TestFeature1", ""); | |
62 EXPECT_TRUE(FeatureList::IsEnabled(kTestFeature1)); | |
63 } | |
64 ExpectFeatures("", ""); | |
65 EXPECT_FALSE(FeatureList::IsEnabled(kTestFeature1)); | |
66 } | |
67 | |
68 TEST_F(ScopedFeatureListTest, EnableFeatureOverrideDisable) { | |
69 test::ScopedFeatureList feature_list1; | |
70 feature_list1.InitWithFeatures({}, {kTestFeature1}); | |
71 | |
72 { | |
73 test::ScopedFeatureList feature_list2; | |
74 feature_list2.InitWithFeatures({kTestFeature1}, {}); | |
75 ExpectFeatures("TestFeature1", ""); | |
76 } | |
77 } | |
78 | |
79 TEST_F(ScopedFeatureListTest, FeatureOverrideNotMakeDuplicate) { | |
80 test::ScopedFeatureList feature_list1; | |
81 feature_list1.InitWithFeatures({}, {kTestFeature1}); | |
82 | |
83 { | |
84 test::ScopedFeatureList feature_list2; | |
85 feature_list2.InitWithFeatures({}, {kTestFeature1}); | |
86 ExpectFeatures("", "TestFeature1"); | |
87 } | |
88 } | |
Ilya Sherman
2017/04/21 22:43:34
Please also test that if the feature is overridden
| |
89 | |
90 TEST_F(ScopedFeatureListTest, FeatureOverrideKeepsOtherExistingFeature) { | |
91 test::ScopedFeatureList feature_list1; | |
92 feature_list1.InitWithFeatures({}, {kTestFeature1}); | |
93 | |
94 { | |
95 test::ScopedFeatureList feature_list2; | |
96 feature_list2.InitWithFeatures({}, {kTestFeature2}); | |
97 EXPECT_FALSE(FeatureList::IsEnabled(kTestFeature1)); | |
98 EXPECT_FALSE(FeatureList::IsEnabled(kTestFeature2)); | |
99 } | |
100 } | |
101 | |
102 TEST_F(ScopedFeatureListTest, FeatureOverrideKeepsOtherExistingFeature2) { | |
103 test::ScopedFeatureList feature_list1; | |
104 feature_list1.InitWithFeatures({}, {kTestFeature1}); | |
105 | |
106 { | |
107 test::ScopedFeatureList feature_list2; | |
108 feature_list2.InitWithFeatures({kTestFeature2}, {}); | |
109 ExpectFeatures("TestFeature2", "TestFeature1"); | |
110 } | |
111 } | |
112 | |
113 TEST_F(ScopedFeatureListTest, FeatureOverrideKeepsOtherExistingDefaultFeature) { | |
114 test::ScopedFeatureList feature_list1; | |
115 feature_list1.InitFromCommandLine("*TestFeature1", ""); | |
116 | |
117 { | |
118 test::ScopedFeatureList feature_list2; | |
119 feature_list2.InitWithFeatures({}, {kTestFeature2}); | |
120 ExpectFeatures("*TestFeature1", "TestFeature2"); | |
121 } | |
122 } | |
123 | |
124 } // namespace base | |
OLD | NEW |