| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Test of FieldTrial class | 5 // Test of FieldTrial class |
| 6 | 6 |
| 7 #include "base/field_trial.h" | 7 #include "base/field_trial.h" |
| 8 | 8 |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 StringAppendF(&winner_name, "_%d", might_win); | 109 StringAppendF(&winner_name, "_%d", might_win); |
| 110 EXPECT_EQ(winner_name, trial->group_name()); | 110 EXPECT_EQ(winner_name, trial->group_name()); |
| 111 } | 111 } |
| 112 } | 112 } |
| 113 EXPECT_GE(winner_index, 0); | 113 EXPECT_GE(winner_index, 0); |
| 114 EXPECT_EQ(trial->group(), winner_index); | 114 EXPECT_EQ(trial->group(), winner_index); |
| 115 EXPECT_EQ(winner_name, trial->group_name()); | 115 EXPECT_EQ(winner_name, trial->group_name()); |
| 116 } | 116 } |
| 117 | 117 |
| 118 TEST_F(FieldTrialTest, Save) { | 118 TEST_F(FieldTrialTest, Save) { |
| 119 std::string save_string; |
| 120 |
| 119 FieldTrial* trial = new FieldTrial("Some name", 10); | 121 FieldTrial* trial = new FieldTrial("Some name", 10); |
| 120 // There is no winner yet, so no textual group name is associated with trial. | 122 // There is no winner yet, so no textual group name is associated with trial. |
| 121 EXPECT_EQ(trial->group_name(), ""); | 123 EXPECT_EQ(trial->group_name(), ""); |
| 122 EXPECT_EQ(trial->MakePersistentString(), "Some name/"); | 124 FieldTrialList::StatesToString(&save_string); |
| 125 EXPECT_EQ(save_string, ""); |
| 126 save_string.clear(); |
| 123 | 127 |
| 124 // Create a winning group. | 128 // Create a winning group. |
| 125 trial->AppendGroup("Winner", 10); | 129 trial->AppendGroup("Winner", 10); |
| 126 EXPECT_EQ(trial->MakePersistentString(), "Some name/Winner"); | 130 FieldTrialList::StatesToString(&save_string); |
| 131 EXPECT_EQ(save_string, "Some name/Winner/"); |
| 132 save_string.clear(); |
| 133 |
| 134 // Create a second trial and winning group. |
| 135 FieldTrial* trial2 = new FieldTrial("xxx", 10); |
| 136 trial2->AppendGroup("yyyy", 10); |
| 137 |
| 138 FieldTrialList::StatesToString(&save_string); |
| 139 // We assume names are alphabetized... though this is not critical. |
| 140 EXPECT_EQ(save_string, "Some name/Winner/xxx/yyyy/"); |
| 127 } | 141 } |
| 128 | 142 |
| 129 TEST_F(FieldTrialTest, Restore) { | 143 TEST_F(FieldTrialTest, Restore) { |
| 130 FieldTrial* trial = FieldTrial::RestorePersistentString("Some name/winner"); | 144 EXPECT_EQ(NULL, FieldTrialList::Find("Some_name")); |
| 131 EXPECT_EQ(trial->group_name(), "winner"); | 145 EXPECT_EQ(NULL, FieldTrialList::Find("xxx")); |
| 132 EXPECT_EQ(trial->name(), "Some name"); | 146 |
| 147 FieldTrialList::StringAugmentsState("Some_name/Winner/xxx/yyyy/"); |
| 148 |
| 149 FieldTrial* trial = FieldTrialList::Find("Some_name"); |
| 150 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial); |
| 151 EXPECT_EQ(trial->group_name(), "Winner"); |
| 152 EXPECT_EQ(trial->name(), "Some_name"); |
| 153 |
| 154 trial = FieldTrialList::Find("xxx"); |
| 155 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial); |
| 156 EXPECT_EQ(trial->group_name(), "yyyy"); |
| 157 EXPECT_EQ(trial->name(), "xxx"); |
| 133 } | 158 } |
| 134 | 159 |
| 135 TEST_F(FieldTrialTest, BogusRestore) { | 160 TEST_F(FieldTrialTest, BogusRestore) { |
| 136 const FieldTrial *trial = FieldTrial::RestorePersistentString("MissingSlash"); | 161 EXPECT_FALSE(FieldTrialList::StringAugmentsState("MissingSlash")); |
| 137 EXPECT_EQ(trial, static_cast<FieldTrial *>(NULL)); | 162 EXPECT_FALSE(FieldTrialList::StringAugmentsState("MissingGroupName/")); |
| 138 | 163 EXPECT_FALSE(FieldTrialList::StringAugmentsState("MissingFinalSlash/gname")); |
| 139 trial = FieldTrial::RestorePersistentString("MissingGroupName/"); | 164 EXPECT_FALSE(FieldTrialList::StringAugmentsState("/noname, only group/")); |
| 140 EXPECT_EQ(trial, static_cast<FieldTrial *>(NULL)); | |
| 141 | |
| 142 trial = FieldTrial::RestorePersistentString("/MissingName"); | |
| 143 EXPECT_EQ(trial, static_cast<FieldTrial *>(NULL)); | |
| 144 } | 165 } |
| 145 | 166 |
| 146 TEST_F(FieldTrialTest, DuplicateRestore) { | 167 TEST_F(FieldTrialTest, DuplicateRestore) { |
| 147 FieldTrial* trial = new FieldTrial("Some name", 10); | 168 FieldTrial* trial = new FieldTrial("Some name", 10); |
| 148 trial->AppendGroup("Winner", 10); | 169 trial->AppendGroup("Winner", 10); |
| 149 EXPECT_EQ(trial->MakePersistentString(), "Some name/Winner"); | 170 std::string save_string; |
| 171 FieldTrialList::StatesToString(&save_string); |
| 172 EXPECT_EQ("Some name/Winner/", save_string); |
| 150 | 173 |
| 151 // It is OK if we redundantly specify a winner. | 174 // It is OK if we redundantly specify a winner. |
| 152 EXPECT_EQ(trial, FieldTrial::RestorePersistentString("Some name/Winner")); | 175 EXPECT_TRUE(FieldTrialList::StringAugmentsState(save_string)); |
| 153 | 176 |
| 154 // But it is an error to try to change to a different winner. | 177 // But it is an error to try to change to a different winner. |
| 155 EXPECT_EQ(FieldTrial::RestorePersistentString("Some name/Loser"), | 178 EXPECT_FALSE(FieldTrialList::StringAugmentsState("Some name/Loser/")); |
| 156 static_cast<FieldTrial *>(NULL)); | |
| 157 } | 179 } |
| OLD | NEW |