Index: base/metrics/field_trial_unittest.cc |
diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc |
index ce95c2ae15b12e510a0abc47b0a6157dc94f1c60..ab71cbda588c095c25c72be1b611481909a58555 100644 |
--- a/base/metrics/field_trial_unittest.cc |
+++ b/base/metrics/field_trial_unittest.cc |
@@ -311,6 +311,36 @@ TEST_F(FieldTrialTest, ActiveGroups) { |
} |
} |
+TEST_F(FieldTrialTest, AllGroups) { |
+ FieldTrial::FieldTrialState field_trial_state; |
+ std::string one_winner("One Winner"); |
+ scoped_refptr<FieldTrial> trial = |
+ CreateFieldTrial(one_winner, 10, "Default", NULL); |
+ std::string winner("Winner"); |
+ trial->AppendGroup(winner, 10); |
+ EXPECT_TRUE(trial->GetState(&field_trial_state)); |
+ EXPECT_EQ(one_winner, field_trial_state.trial_name); |
+ EXPECT_EQ(winner, field_trial_state.group_name); |
+ trial->group(); |
+ EXPECT_TRUE(trial->GetState(&field_trial_state)); |
+ EXPECT_EQ(one_winner, field_trial_state.trial_name); |
+ EXPECT_EQ(winner, field_trial_state.group_name); |
+ |
+ std::string multi_group("MultiGroup"); |
+ scoped_refptr<FieldTrial> multi_group_trial = |
+ CreateFieldTrial(multi_group, 9, "Default", NULL); |
+ |
+ multi_group_trial->AppendGroup("Me", 3); |
+ multi_group_trial->AppendGroup("You", 3); |
+ multi_group_trial->AppendGroup("Them", 3); |
+ EXPECT_TRUE(multi_group_trial->GetState(&field_trial_state)); |
+ // Finalize the group selection by accessing the selected group. |
+ multi_group_trial->group(); |
+ EXPECT_TRUE(multi_group_trial->GetState(&field_trial_state)); |
+ EXPECT_EQ(multi_group, field_trial_state.trial_name); |
+ EXPECT_EQ(multi_group_trial->group_name(), field_trial_state.group_name); |
+} |
+ |
TEST_F(FieldTrialTest, ActiveGroupsNotFinalized) { |
const char kTrialName[] = "TestTrial"; |
const char kSecondaryGroupName[] = "SecondaryGroup"; |
@@ -388,6 +418,44 @@ TEST_F(FieldTrialTest, Save) { |
EXPECT_EQ("Some name/Winner/xxx/yyyy/zzz/default/", save_string); |
} |
+TEST_F(FieldTrialTest, SaveAll) { |
+ std::string save_string; |
+ |
+ scoped_refptr<FieldTrial> trial = |
+ CreateFieldTrial("Some name", 10, "Default some name", NULL); |
+ EXPECT_EQ("", trial->group_name_internal()); |
+ FieldTrialList::AllStatesToString(&save_string); |
+ EXPECT_EQ("Some name/Default some name/", save_string); |
+ save_string.clear(); |
+ |
+ // Create a winning group. |
+ trial->AppendGroup("Winner", 10); |
+ // Finalize the group selection by accessing the selected group. |
+ trial->group(); |
+ FieldTrialList::AllStatesToString(&save_string); |
+ EXPECT_EQ("*Some name/Winner/", save_string); |
+ save_string.clear(); |
+ |
+ // Create a second trial and winning group. |
+ scoped_refptr<FieldTrial> trial2 = |
+ CreateFieldTrial("xxx", 10, "Default xxx", NULL); |
+ trial2->AppendGroup("yyyy", 10); |
+ // Finalize the group selection by accessing the selected group. |
+ trial2->group(); |
+ |
+ FieldTrialList::AllStatesToString(&save_string); |
+ // We assume names are alphabetized... though this is not critical. |
+ EXPECT_EQ("*Some name/Winner/*xxx/yyyy/", save_string); |
+ save_string.clear(); |
+ |
+ // Create a third trial with only the default group. |
+ scoped_refptr<FieldTrial> trial3 = |
+ CreateFieldTrial("zzz", 10, "default", NULL); |
+ |
+ FieldTrialList::AllStatesToString(&save_string); |
+ EXPECT_EQ("*Some name/Winner/*xxx/yyyy/zzz/default/", save_string); |
Alexei Svitkine (slow)
2014/11/10 19:28:47
Could you also add a test that de-serializing the
Georges Khalil
2014/11/10 20:50:34
Already exists from a previous CL that landed, tes
Alexei Svitkine (slow)
2014/11/10 20:52:35
That doesn't test that the two formats match thoug
Georges Khalil
2014/11/10 22:36:10
New test added (StatesStringFormat).
|
+} |
+ |
TEST_F(FieldTrialTest, Restore) { |
ASSERT_FALSE(FieldTrialList::TrialExists("Some_name")); |
ASSERT_FALSE(FieldTrialList::TrialExists("xxx")); |