| Index: chrome/browser/autocomplete/autocomplete_field_trial_unittest.cc
|
| diff --git a/chrome/browser/autocomplete/autocomplete_field_trial_unittest.cc b/chrome/browser/autocomplete/autocomplete_field_trial_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..78c5cd7ccb8c1ffff374f61301d6c54904666811
|
| --- /dev/null
|
| +++ b/chrome/browser/autocomplete/autocomplete_field_trial_unittest.cc
|
| @@ -0,0 +1,88 @@
|
| +// Copyright (c) 2013 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.
|
| +
|
| +#include "chrome/browser/autocomplete/autocomplete_field_trial.h"
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/metrics/field_trial.h"
|
| +#include "base/string16.h"
|
| +#include "chrome/common/metrics/entropy_provider.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +class AutocompleteFieldTrialTest : public testing::Test {
|
| + public:
|
| + AutocompleteFieldTrialTest() {}
|
| +
|
| + static void SetUpTestCase() {
|
| + ResetFieldTrialList();
|
| + }
|
| +
|
| + static void TearDownTestCase() {
|
| + delete field_trial_list_;
|
| + field_trial_list_ = NULL;
|
| + }
|
| +
|
| + static void ResetFieldTrialList() {
|
| + // It's important to delete the old pointer first which sets
|
| + // FieldTrialList::global_ to NULL.
|
| + if (field_trial_list_)
|
| + delete field_trial_list_;
|
| + field_trial_list_ = new base::FieldTrialList(
|
| + new metrics::SHA1EntropyProvider("foo"));
|
| + AutocompleteFieldTrial::ActivateDynamicTrials();
|
| + }
|
| +
|
| + // Creates and activates a field trial.
|
| + static base::FieldTrial* CreateTestTrial(const std::string& name,
|
| + const std::string& group_name) {
|
| + base::FieldTrial* trial = base::FieldTrialList::CreateFieldTrial(
|
| + name, group_name);
|
| + trial->group();
|
| + return trial;
|
| + }
|
| +
|
| + private:
|
| + // Needed for Activate{Static/Dynamic}Trials().
|
| + static base::FieldTrialList* field_trial_list_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(AutocompleteFieldTrialTest);
|
| +};
|
| +
|
| +// static
|
| +base::FieldTrialList* AutocompleteFieldTrialTest::field_trial_list_ = NULL;
|
| +
|
| +// Test if GetDisabledProviderTypes() properly parses various field trial
|
| +// group names.
|
| +TEST_F(AutocompleteFieldTrialTest, GetDisabledProviderTypes) {
|
| + EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes());
|
| +
|
| + {
|
| + SCOPED_TRACE("Invalid groups");
|
| + CreateTestTrial("AutocompleteDynamicTrial_0", "DisabledProviders_");
|
| + EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes());
|
| + ResetFieldTrialList();
|
| + CreateTestTrial("AutocompleteDynamicTrial_1", "DisabledProviders_XXX");
|
| + EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes());
|
| + ResetFieldTrialList();
|
| + CreateTestTrial("AutocompleteDynamicTrial_1", "DisabledProviders_12abc");
|
| + EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes());
|
| + }
|
| +
|
| + {
|
| + SCOPED_TRACE("Valid group name, unsupported trial name.");
|
| + ResetFieldTrialList();
|
| + CreateTestTrial("UnsupportedTrialName", "DisabledProviders_20");
|
| + EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes());
|
| + }
|
| +
|
| + {
|
| + SCOPED_TRACE("Valid field and group name.");
|
| + ResetFieldTrialList();
|
| + CreateTestTrial("AutocompleteDynamicTrial_2", "DisabledProviders_3");
|
| + EXPECT_EQ(3, AutocompleteFieldTrial::GetDisabledProviderTypes());
|
| + // Two groups should be OR-ed together.
|
| + CreateTestTrial("AutocompleteDynamicTrial_3", "DisabledProviders_6");
|
| + EXPECT_EQ(7, AutocompleteFieldTrial::GetDisabledProviderTypes());
|
| + }
|
| +}
|
|
|