Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(645)

Side by Side Diff: base/field_trial_unittest.cc

Issue 150087: Create A/B test of SDCH... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/field_trial.cc ('k') | chrome/browser/browser_main.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 }
OLDNEW
« no previous file with comments | « base/field_trial.cc ('k') | chrome/browser/browser_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698