OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "base/metrics/field_trial.h" | 5 #include "base/metrics/field_trial.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/rand_util.h" | 8 #include "base/rand_util.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 for (size_t i = 0; i < active_groups.size(); ++i) { | 303 for (size_t i = 0; i < active_groups.size(); ++i) { |
304 // Order is not guaranteed, so check all values. | 304 // Order is not guaranteed, so check all values. |
305 EXPECT_NE(no_group, active_groups[i].trial_name); | 305 EXPECT_NE(no_group, active_groups[i].trial_name); |
306 EXPECT_TRUE(one_winner != active_groups[i].trial_name || | 306 EXPECT_TRUE(one_winner != active_groups[i].trial_name || |
307 winner == active_groups[i].group_name); | 307 winner == active_groups[i].group_name); |
308 EXPECT_TRUE(multi_group != active_groups[i].trial_name || | 308 EXPECT_TRUE(multi_group != active_groups[i].trial_name || |
309 multi_group_trial->group_name() == active_groups[i].group_name); | 309 multi_group_trial->group_name() == active_groups[i].group_name); |
310 } | 310 } |
311 } | 311 } |
312 | 312 |
| 313 TEST_F(FieldTrialTest, AllGroups) { |
| 314 FieldTrial::FieldTrialState field_trial_state; |
| 315 std::string one_winner("One Winner"); |
| 316 scoped_refptr<FieldTrial> trial = |
| 317 CreateFieldTrial(one_winner, 10, "Default", NULL); |
| 318 std::string winner("Winner"); |
| 319 trial->AppendGroup(winner, 10); |
| 320 EXPECT_TRUE(trial->GetFieldTrialState(&field_trial_state)); |
| 321 EXPECT_EQ(one_winner, field_trial_state.trial_name); |
| 322 EXPECT_EQ(winner, field_trial_state.group_name); |
| 323 trial->group(); |
| 324 EXPECT_TRUE(trial->GetFieldTrialState(&field_trial_state)); |
| 325 EXPECT_EQ(one_winner, field_trial_state.trial_name); |
| 326 EXPECT_EQ(winner, field_trial_state.group_name); |
| 327 |
| 328 std::string multi_group("MultiGroup"); |
| 329 scoped_refptr<FieldTrial> multi_group_trial = |
| 330 CreateFieldTrial(multi_group, 9, "Default", NULL); |
| 331 |
| 332 multi_group_trial->AppendGroup("Me", 3); |
| 333 multi_group_trial->AppendGroup("You", 3); |
| 334 multi_group_trial->AppendGroup("Them", 3); |
| 335 EXPECT_TRUE(multi_group_trial->GetFieldTrialState(&field_trial_state)); |
| 336 // Finalize the group selection by accessing the selected group. |
| 337 multi_group_trial->group(); |
| 338 EXPECT_TRUE(multi_group_trial->GetFieldTrialState(&field_trial_state)); |
| 339 EXPECT_EQ(multi_group, field_trial_state.trial_name); |
| 340 EXPECT_EQ(multi_group_trial->group_name(), field_trial_state.group_name); |
| 341 } |
| 342 |
313 TEST_F(FieldTrialTest, ActiveGroupsNotFinalized) { | 343 TEST_F(FieldTrialTest, ActiveGroupsNotFinalized) { |
314 const char kTrialName[] = "TestTrial"; | 344 const char kTrialName[] = "TestTrial"; |
315 const char kSecondaryGroupName[] = "SecondaryGroup"; | 345 const char kSecondaryGroupName[] = "SecondaryGroup"; |
316 | 346 |
317 int default_group = -1; | 347 int default_group = -1; |
318 scoped_refptr<FieldTrial> trial = | 348 scoped_refptr<FieldTrial> trial = |
319 CreateFieldTrial(kTrialName, 100, kDefaultGroupName, &default_group); | 349 CreateFieldTrial(kTrialName, 100, kDefaultGroupName, &default_group); |
320 const int secondary_group = trial->AppendGroup(kSecondaryGroupName, 50); | 350 const int secondary_group = trial->AppendGroup(kSecondaryGroupName, 50); |
321 | 351 |
322 // Before |group()| is called, |GetActiveGroup()| should return false. | 352 // Before |group()| is called, |GetActiveGroup()| should return false. |
(...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1018 // Trying to instantiate a one-time randomized field trial before the | 1048 // Trying to instantiate a one-time randomized field trial before the |
1019 // FieldTrialList is created should crash. | 1049 // FieldTrialList is created should crash. |
1020 EXPECT_DEATH(FieldTrialList::FactoryGetFieldTrial( | 1050 EXPECT_DEATH(FieldTrialList::FactoryGetFieldTrial( |
1021 "OneTimeRandomizedTrialWithoutFieldTrialList", 100, kDefaultGroupName, | 1051 "OneTimeRandomizedTrialWithoutFieldTrialList", 100, kDefaultGroupName, |
1022 base::FieldTrialList::kNoExpirationYear, 1, 1, | 1052 base::FieldTrialList::kNoExpirationYear, 1, 1, |
1023 base::FieldTrial::ONE_TIME_RANDOMIZED, NULL), ""); | 1053 base::FieldTrial::ONE_TIME_RANDOMIZED, NULL), ""); |
1024 } | 1054 } |
1025 #endif | 1055 #endif |
1026 | 1056 |
1027 } // namespace base | 1057 } // namespace base |
OLD | NEW |