diff options
Diffstat (limited to 'base/field_trial_unittest.cc')
-rw-r--r-- | base/field_trial_unittest.cc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/base/field_trial_unittest.cc b/base/field_trial_unittest.cc index 6c818e5..f678b0b 100644 --- a/base/field_trial_unittest.cc +++ b/base/field_trial_unittest.cc @@ -114,3 +114,44 @@ TEST_F(FieldTrialTest, OneWinner) { EXPECT_EQ(trial->group(), winner_index); EXPECT_EQ(winner_name, trial->group_name()); } + +TEST_F(FieldTrialTest, Save) { + FieldTrial* trial = new FieldTrial("Some name", 10); + // There is no winner yet, so no textual group name is associated with trial. + EXPECT_EQ(trial->group_name(), ""); + EXPECT_EQ(trial->MakePersistentString(), "Some name/"); + + // Create a winning group. + trial->AppendGroup("Winner", 10); + EXPECT_EQ(trial->MakePersistentString(), "Some name/Winner"); +} + +TEST_F(FieldTrialTest, Restore) { + FieldTrial* trial = FieldTrial::RestorePersistentString("Some name/winner"); + EXPECT_EQ(trial->group_name(), "winner"); + EXPECT_EQ(trial->name(), "Some name"); +} + +TEST_F(FieldTrialTest, BogusRestore) { + const FieldTrial *trial = FieldTrial::RestorePersistentString("MissingSlash"); + EXPECT_EQ(trial, static_cast<FieldTrial *>(NULL)); + + trial = FieldTrial::RestorePersistentString("MissingGroupName/"); + EXPECT_EQ(trial, static_cast<FieldTrial *>(NULL)); + + trial = FieldTrial::RestorePersistentString("/MissingName"); + EXPECT_EQ(trial, static_cast<FieldTrial *>(NULL)); +} + +TEST_F(FieldTrialTest, DuplicateRestore) { + FieldTrial* trial = new FieldTrial("Some name", 10); + trial->AppendGroup("Winner", 10); + EXPECT_EQ(trial->MakePersistentString(), "Some name/Winner"); + + // It is OK if we redundantly specify a winner. + EXPECT_EQ(trial, FieldTrial::RestorePersistentString("Some name/Winner")); + + // But it is an error to try to change to a different winner. + EXPECT_EQ(FieldTrial::RestorePersistentString("Some name/Loser"), + static_cast<FieldTrial *>(NULL)); +} |