| 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
 | 
| 
 | 
| 
 |