| Index: base/field_trial_unittest.cc
|
| ===================================================================
|
| --- base/field_trial_unittest.cc (revision 0)
|
| +++ base/field_trial_unittest.cc (revision 0)
|
| @@ -0,0 +1,74 @@
|
| +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Test of FieldTrial class
|
| +
|
| +#include "base/field_trial.h"
|
| +
|
| +#include "base/logging.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +class FieldTrialTest : public testing::Test {
|
| + public:
|
| + FieldTrialTest() : trial_list_() { }
|
| + ~FieldTrialTest() { FieldTrialList::ResetConstructorCountForTestingOnly(); }
|
| +
|
| + private:
|
| + FieldTrialList trial_list_;
|
| +};
|
| +
|
| +// 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";
|
| + EXPECT_FALSE(FieldTrialList::Find(name1));
|
| + EXPECT_FALSE(FieldTrialList::Find(name2));
|
| +
|
| + FieldTrial* trial1 = new FieldTrial(name1, 0.7);
|
| +
|
| + EXPECT_EQ(trial1, FieldTrialList::Find(name1));
|
| + EXPECT_FALSE(FieldTrialList::Find(name2));
|
| +
|
| + FieldTrial* trial2 = new FieldTrial(name2, 0.7);
|
| +
|
| + EXPECT_EQ(trial1, FieldTrialList::Find(name1));
|
| + EXPECT_EQ(trial2, FieldTrialList::Find(name2));
|
| + // Note: FieldTrialList should delete the objects at shutdown.
|
| +}
|
| +
|
| +TEST_F(FieldTrialTest, AbsoluteProbabilities) {
|
| + wchar_t always_true[] = L" always true";
|
| + wchar_t always_false[] = L" 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());
|
| + }
|
| +}
|
| +
|
| +TEST_F(FieldTrialTest, MiddleProbabalities) {
|
| + wchar_t name[] = L" 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()) {
|
| + true_event_seen = true;
|
| + } else {
|
| + false_event_seen = true;
|
| + }
|
| + if (false_event_seen && true_event_seen)
|
| + return; // Successful test!!!
|
| + }
|
| + // Very surprising to get here. Probability should be around 1 in 2 ** 250.
|
| + // One of the following will fail.
|
| + EXPECT_TRUE(false_event_seen);
|
| + EXPECT_TRUE(true_event_seen);
|
| +}
|
|
|
| Property changes on: base\field_trial_unittest.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|