diff options
author | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-02 19:02:56 +0000 |
---|---|---|
committer | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-02 19:02:56 +0000 |
commit | 9660b97b7869116645a92d342c52a857d0550ec2 (patch) | |
tree | 06e907b12fbd3d019283fef414422dfd4205e592 /base/field_trial_unittest.cc | |
parent | d02e43a80f0fae032501e68d38bd562976b9d866 (diff) | |
download | chromium_src-9660b97b7869116645a92d342c52a857d0550ec2.zip chromium_src-9660b97b7869116645a92d342c52a857d0550ec2.tar.gz chromium_src-9660b97b7869116645a92d342c52a857d0550ec2.tar.bz2 |
Renovate FieldTrial class to better bit with histogram usage.
r=mbelshe
Review URL: http://codereview.chromium.org/28226
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10714 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/field_trial_unittest.cc')
-rw-r--r-- | base/field_trial_unittest.cc | 73 |
1 files changed, 59 insertions, 14 deletions
diff --git a/base/field_trial_unittest.cc b/base/field_trial_unittest.cc index f7be7e0..8d9f2e4 100644 --- a/base/field_trial_unittest.cc +++ b/base/field_trial_unittest.cc @@ -7,6 +7,7 @@ #include "base/field_trial.h" #include "base/logging.h" +#include "base/string_util.h" #include "testing/gtest/include/gtest/gtest.h" class FieldTrialTest : public testing::Test { @@ -20,17 +21,27 @@ class FieldTrialTest : public testing::Test { // Test registration, and also check that destructors are called for trials // (and that Purify doesn't catch us leaking). TEST_F(FieldTrialTest, Registration) { - const wchar_t* name1 = L"name 1 test"; - const wchar_t* name2 = L"name 2 test"; + const char* name1 = "name 1 test"; + const char* name2 = "name 2 test"; EXPECT_FALSE(FieldTrialList::Find(name1)); EXPECT_FALSE(FieldTrialList::Find(name2)); - FieldTrial* trial1 = new FieldTrial(name1, 0.7); + FieldTrial* trial1 = new FieldTrial(name1, 10); + EXPECT_EQ(trial1->group(), FieldTrial::kNotParticipating); + EXPECT_EQ(trial1->name(), name1); + EXPECT_EQ(trial1->group_name(), ""); + + trial1->AppendGroup("", 7); EXPECT_EQ(trial1, FieldTrialList::Find(name1)); EXPECT_FALSE(FieldTrialList::Find(name2)); - FieldTrial* trial2 = new FieldTrial(name2, 0.7); + FieldTrial* trial2 = new FieldTrial(name2, 10); + EXPECT_EQ(trial2->group(), FieldTrial::kNotParticipating); + EXPECT_EQ(trial2->name(), name2); + EXPECT_EQ(trial2->group_name(), ""); + + trial2->AppendGroup("a first group", 7); EXPECT_EQ(trial1, FieldTrialList::Find(name1)); EXPECT_EQ(trial2, FieldTrialList::Find(name2)); @@ -38,27 +49,37 @@ TEST_F(FieldTrialTest, Registration) { } TEST_F(FieldTrialTest, AbsoluteProbabilities) { - wchar_t always_true[] = L" always true"; - wchar_t always_false[] = L" always false"; + char always_true[] = " always true"; + char always_false[] = " always false"; for (int i = 1; i < 250; ++i) { // Try lots of names, by changing the first character of the name. always_true[0] = i; always_false[0] = i; - FieldTrial* trial_true = new FieldTrial(always_true, 1.0); - EXPECT_TRUE(trial_true->boolean_value()); - FieldTrial* trial_false = new FieldTrial(always_false, 0.0); - EXPECT_FALSE(trial_false->boolean_value()); + + FieldTrial* trial_true = new FieldTrial(always_true, 10); + const std::string winner = "_TheWinner"; + int winner_group = trial_true->AppendGroup(winner, 10); + + EXPECT_EQ(trial_true->group(), winner_group); + EXPECT_EQ(trial_true->group_name(), winner); + + FieldTrial* trial_false = new FieldTrial(always_false, 10); + int loser_group = trial_false->AppendGroup("ALoser", 0); + + EXPECT_NE(trial_false->group(), loser_group); } } -TEST_F(FieldTrialTest, MiddleProbabalities) { - wchar_t name[] = L" same name"; +TEST_F(FieldTrialTest, MiddleProbabilities) { + char name[] = " same name"; bool false_event_seen = false; bool true_event_seen = false; for (int i = 1; i < 250; ++i) { name[0] = i; - FieldTrial* trial = new FieldTrial(name, 0.5); - if (trial->boolean_value()) { + FieldTrial* trial = new FieldTrial(name, 10); + int might_win = trial->AppendGroup("MightWin", 5); + + if (trial->group() == might_win) { true_event_seen = true; } else { false_event_seen = true; @@ -71,3 +92,27 @@ TEST_F(FieldTrialTest, MiddleProbabalities) { EXPECT_TRUE(false_event_seen); EXPECT_TRUE(true_event_seen); } + +TEST_F(FieldTrialTest, OneWinner) { + char name[] = "Some name"; + int group_count(10); + + FieldTrial* trial = new FieldTrial(name, group_count); + int winner_index(-2); + std::string winner_name; + + for (int i = 1; i <= group_count; ++i) { + int might_win = trial->AppendGroup("", 1); + + if (trial->group() == might_win) { + EXPECT_EQ(winner_index, -2); + winner_index = might_win; + StringAppendF(&winner_name, "_%d", might_win); + EXPECT_EQ(winner_name, trial->group_name()); + } + } + EXPECT_GE(winner_index, 0); + EXPECT_EQ(trial->group(), winner_index); + EXPECT_EQ(winner_name, trial->group_name()); +} + |