OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/autocomplete/autocomplete_field_trial.h" |
| 6 |
| 7 #include "base/basictypes.h" |
| 8 #include "base/metrics/field_trial.h" |
| 9 #include "base/string16.h" |
| 10 #include "chrome/common/metrics/entropy_provider.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 |
| 13 class AutocompleteFieldTrialTest : public testing::Test { |
| 14 public: |
| 15 AutocompleteFieldTrialTest() {} |
| 16 |
| 17 static void SetUpTestCase() { |
| 18 ResetFieldTrialList(); |
| 19 } |
| 20 |
| 21 static void TearDownTestCase() { |
| 22 delete field_trial_list_; |
| 23 field_trial_list_ = NULL; |
| 24 } |
| 25 |
| 26 static void ResetFieldTrialList() { |
| 27 // It's important to delete the old pointer first which sets |
| 28 // FieldTrialList::global_ to NULL. |
| 29 if (field_trial_list_) |
| 30 delete field_trial_list_; |
| 31 field_trial_list_ = new base::FieldTrialList( |
| 32 new metrics::SHA1EntropyProvider("foo")); |
| 33 AutocompleteFieldTrial::ActivateDynamicTrials(); |
| 34 } |
| 35 |
| 36 // Creates and activates a field trial. |
| 37 static base::FieldTrial* CreateTestTrial(const std::string& name, |
| 38 const std::string& group_name) { |
| 39 base::FieldTrial* trial = base::FieldTrialList::CreateFieldTrial( |
| 40 name, group_name); |
| 41 trial->group(); |
| 42 return trial; |
| 43 } |
| 44 |
| 45 private: |
| 46 // Needed for Activate{Static/Dynamic}Trials(). |
| 47 static base::FieldTrialList* field_trial_list_; |
| 48 |
| 49 DISALLOW_COPY_AND_ASSIGN(AutocompleteFieldTrialTest); |
| 50 }; |
| 51 |
| 52 // static |
| 53 base::FieldTrialList* AutocompleteFieldTrialTest::field_trial_list_ = NULL; |
| 54 |
| 55 // Test if GetDisabledProviderTypes() properly parses various field trial |
| 56 // group names. |
| 57 TEST_F(AutocompleteFieldTrialTest, GetDisabledProviderTypes) { |
| 58 EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes()); |
| 59 |
| 60 { |
| 61 SCOPED_TRACE("Invalid groups"); |
| 62 CreateTestTrial("AutocompleteDynamicTrial_0", "DisabledProviders_"); |
| 63 EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes()); |
| 64 ResetFieldTrialList(); |
| 65 CreateTestTrial("AutocompleteDynamicTrial_1", "DisabledProviders_XXX"); |
| 66 EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes()); |
| 67 ResetFieldTrialList(); |
| 68 CreateTestTrial("AutocompleteDynamicTrial_1", "DisabledProviders_12abc"); |
| 69 EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes()); |
| 70 } |
| 71 |
| 72 { |
| 73 SCOPED_TRACE("Valid group name, unsupported trial name."); |
| 74 ResetFieldTrialList(); |
| 75 CreateTestTrial("UnsupportedTrialName", "DisabledProviders_20"); |
| 76 EXPECT_EQ(0, AutocompleteFieldTrial::GetDisabledProviderTypes()); |
| 77 } |
| 78 |
| 79 { |
| 80 SCOPED_TRACE("Valid field and group name."); |
| 81 ResetFieldTrialList(); |
| 82 CreateTestTrial("AutocompleteDynamicTrial_2", "DisabledProviders_3"); |
| 83 EXPECT_EQ(3, AutocompleteFieldTrial::GetDisabledProviderTypes()); |
| 84 // Two groups should be OR-ed together. |
| 85 CreateTestTrial("AutocompleteDynamicTrial_3", "DisabledProviders_6"); |
| 86 EXPECT_EQ(7, AutocompleteFieldTrial::GetDisabledProviderTypes()); |
| 87 } |
| 88 } |
OLD | NEW |