Chromium Code Reviews| 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")); |