Index: chrome/browser/about_flags_unittest.cc |
=================================================================== |
--- chrome/browser/about_flags_unittest.cc (revision 183834) |
+++ chrome/browser/about_flags_unittest.cc (working copy) |
@@ -17,6 +17,7 @@ |
const char kFlags2[] = "flag2"; |
const char kFlags3[] = "flag3"; |
const char kFlags4[] = "flag4"; |
+const char kFlags5[] = "flag5"; |
const char kSwitch1[] = "switch"; |
const char kSwitch2[] = "switch2"; |
@@ -27,6 +28,9 @@ |
const char kMultiSwitch2[] = "multi_switch2"; |
const char kValueForMultiSwitch2[] = "value_for_multi_switch2"; |
+const char kEnableDisableValue1[] = "value1"; |
+const char kEnableDisableValue2[] = "value2"; |
+ |
namespace about_flags { |
const Experiment::Choice kMultiChoices[] = { |
@@ -47,6 +51,8 @@ |
kSwitch1, |
"", |
NULL, |
+ NULL, |
+ NULL, |
0 |
}, |
{ |
@@ -58,6 +64,8 @@ |
kSwitch2, |
kValueForSwitch2, |
NULL, |
+ NULL, |
+ NULL, |
0 |
}, |
{ |
@@ -69,6 +77,8 @@ |
kSwitch3, |
"", |
NULL, |
+ NULL, |
+ NULL, |
0 |
}, |
{ |
@@ -79,9 +89,24 @@ |
Experiment::MULTI_VALUE, |
"", |
"", |
+ "", |
+ "", |
kMultiChoices, |
arraysize(kMultiChoices) |
}, |
+ { |
+ kFlags5, |
+ IDS_PRODUCT_NAME, |
+ IDS_PRODUCT_NAME, |
+ 0, // Ends up being mapped to the current platform. |
+ Experiment::ENABLE_DISABLE_VALUE, |
+ kSwitch1, |
+ kEnableDisableValue1, |
+ kSwitch2, |
+ kEnableDisableValue2, |
+ NULL, |
+ 3 |
+ }, |
}; |
class AboutFlagsTest : public ::testing::Test { |
@@ -91,7 +116,7 @@ |
testing::ClearState(); |
} |
- virtual void SetUp() { |
+ virtual void SetUp() OVERRIDE { |
for (size_t i = 0; i < arraysize(kExperiments); ++i) |
kExperiments[i].supported_platforms = GetCurrentPlatform(); |
@@ -103,7 +128,7 @@ |
testing::SetExperiments(kExperiments, arraysize(kExperiments)); |
} |
- virtual void TearDown() { |
+ virtual void TearDown() OVERRIDE { |
testing::SetExperiments(NULL, 0); |
} |
@@ -278,6 +303,9 @@ |
// Tests multi-value type experiments. |
TEST_F(AboutFlagsTest, MultiValues) { |
+ const Experiment& experiment = kExperiments[3]; |
+ ASSERT_EQ(kFlags4, experiment.internal_name); |
+ |
// Initially, the first "deactivated" option of the multi experiment should |
// be set. |
{ |
@@ -288,9 +316,7 @@ |
} |
// Enable the 2nd choice of the multi-value. |
- SetExperimentEnabled(&prefs_, std::string(kFlags4) + |
- std::string(testing::kMultiSeparator) + |
- base::IntToString(2), true); |
+ SetExperimentEnabled(&prefs_, experiment.NameForChoice(2), true); |
{ |
CommandLine command_line(CommandLine::NO_PROGRAM); |
ConvertFlagsToSwitches(&prefs_, &command_line); |
@@ -301,9 +327,7 @@ |
} |
// Disable the multi-value experiment. |
- SetExperimentEnabled(&prefs_, std::string(kFlags4) + |
- std::string(testing::kMultiSeparator) + |
- base::IntToString(0), true); |
+ SetExperimentEnabled(&prefs_, experiment.NameForChoice(0), true); |
{ |
CommandLine command_line(CommandLine::NO_PROGRAM); |
ConvertFlagsToSwitches(&prefs_, &command_line); |
@@ -312,6 +336,48 @@ |
} |
} |
+TEST_F(AboutFlagsTest, EnableDisableValues) { |
+ const Experiment& experiment = kExperiments[4]; |
+ ASSERT_EQ(kFlags5, experiment.internal_name); |
+ |
+ // Nothing selected. |
+ { |
+ CommandLine command_line(CommandLine::NO_PROGRAM); |
+ ConvertFlagsToSwitches(&prefs_, &command_line); |
+ EXPECT_FALSE(command_line.HasSwitch(kSwitch1)); |
+ EXPECT_FALSE(command_line.HasSwitch(kSwitch2)); |
+ } |
+ |
+ // "Enable" option selected. |
+ SetExperimentEnabled(&prefs_, experiment.NameForChoice(1), true); |
+ { |
+ CommandLine command_line(CommandLine::NO_PROGRAM); |
+ ConvertFlagsToSwitches(&prefs_, &command_line); |
+ EXPECT_TRUE(command_line.HasSwitch(kSwitch1)); |
+ EXPECT_FALSE(command_line.HasSwitch(kSwitch2)); |
+ EXPECT_EQ(kEnableDisableValue1, command_line.GetSwitchValueASCII(kSwitch1)); |
+ } |
+ |
+ // "Disable" option selected. |
+ SetExperimentEnabled(&prefs_, experiment.NameForChoice(2), true); |
+ { |
+ CommandLine command_line(CommandLine::NO_PROGRAM); |
+ ConvertFlagsToSwitches(&prefs_, &command_line); |
+ EXPECT_FALSE(command_line.HasSwitch(kSwitch1)); |
+ EXPECT_TRUE(command_line.HasSwitch(kSwitch2)); |
+ EXPECT_EQ(kEnableDisableValue2, command_line.GetSwitchValueASCII(kSwitch2)); |
+ } |
+ |
+ // "Default" option selected, same as nothing selected. |
+ SetExperimentEnabled(&prefs_, experiment.NameForChoice(0), true); |
+ { |
+ CommandLine command_line(CommandLine::NO_PROGRAM); |
+ ConvertFlagsToSwitches(&prefs_, &command_line); |
+ EXPECT_FALSE(command_line.HasSwitch(kMultiSwitch1)); |
+ EXPECT_FALSE(command_line.HasSwitch(kMultiSwitch2)); |
+ } |
+} |
+ |
// Makes sure there are no separators in any of the experiment names. |
TEST_F(AboutFlagsTest, NoSeparators) { |
testing::SetExperiments(NULL, 0); |