1// Copyright 2014 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 "components/search/search.h" 6 7#include "base/metrics/field_trial.h" 8#include "base/metrics/statistics_recorder.h" 9#include "components/variations/entropy_provider.h" 10#include "testing/gtest/include/gtest/gtest.h" 11 12namespace chrome { 13 14class EmbeddedSearchFieldTrialTest : public testing::Test { 15 protected: 16 virtual void SetUp() { 17 field_trial_list_.reset(new base::FieldTrialList( 18 new metrics::SHA1EntropyProvider("42"))); 19 base::StatisticsRecorder::Initialize(); 20 } 21 22 private: 23 scoped_ptr<base::FieldTrialList> field_trial_list_; 24}; 25 26TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoEmptyAndValid) { 27 FieldTrialFlags flags; 28 29 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 30 EXPECT_EQ(0ul, flags.size()); 31 32 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 33 "Group77")); 34 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 35 EXPECT_EQ(0ul, flags.size()); 36} 37 38TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoInvalidNumber) { 39 FieldTrialFlags flags; 40 41 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 42 "Group77.2")); 43 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 44 EXPECT_EQ(0ul, flags.size()); 45} 46 47TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoInvalidName) { 48 FieldTrialFlags flags; 49 50 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 51 "Invalid77")); 52 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 53 EXPECT_EQ(0ul, flags.size()); 54} 55 56TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoValidGroup) { 57 FieldTrialFlags flags; 58 59 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 60 "Group77")); 61 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 62 EXPECT_EQ(0ul, flags.size()); 63} 64 65TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoValidFlag) { 66 FieldTrialFlags flags; 67 68 EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 69 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 70 "Group77 foo:6")); 71 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 72 EXPECT_EQ(1ul, flags.size()); 73 EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 74} 75 76TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoNewName) { 77 FieldTrialFlags flags; 78 79 EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 80 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 81 "Group77 foo:6")); 82 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 83 EXPECT_EQ(1ul, flags.size()); 84 EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 85} 86 87TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoNewNameOverridesOld) { 88 FieldTrialFlags flags; 89 90 EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 91 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 92 "Group77 foo:6")); 93 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended", 94 "Group78 foo:5")); 95 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 96 EXPECT_EQ(1ul, flags.size()); 97 EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 98} 99 100TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoLotsOfFlags) { 101 FieldTrialFlags flags; 102 103 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 104 "EmbeddedSearch", "Group77 bar:1 baz:7 cat:dogs")); 105 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 106 EXPECT_EQ(3ul, flags.size()); 107 EXPECT_EQ(true, GetBoolValueForFlagWithDefault("bar", false, flags)); 108 EXPECT_EQ(7ul, GetUInt64ValueForFlagWithDefault("baz", 0, flags)); 109 EXPECT_EQ("dogs", 110 GetStringValueForFlagWithDefault("cat", std::string(), flags)); 111 EXPECT_EQ("default", 112 GetStringValueForFlagWithDefault("moose", "default", flags)); 113} 114 115TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoDisabled) { 116 FieldTrialFlags flags; 117 118 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 119 "EmbeddedSearch", "Group77 bar:1 baz:7 cat:dogs DISABLED")); 120 EXPECT_FALSE(GetFieldTrialInfo(&flags)); 121 EXPECT_EQ(0ul, flags.size()); 122} 123 124TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoControlFlags) { 125 FieldTrialFlags flags; 126 127 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 128 "EmbeddedSearch", "Control77 bar:1 baz:7 cat:dogs")); 129 EXPECT_TRUE(GetFieldTrialInfo(&flags)); 130 EXPECT_EQ(3ul, flags.size()); 131} 132 133typedef EmbeddedSearchFieldTrialTest ShouldHideTopVerbatimTest; 134 135TEST_F(ShouldHideTopVerbatimTest, DoNotHideByDefault) { 136 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 137 "Control")); 138 EXPECT_FALSE(ShouldHideTopVerbatimMatch()); 139} 140 141TEST_F(ShouldHideTopVerbatimTest, DoNotHideInInstantExtended) { 142 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 143 "Group1")); 144 EXPECT_FALSE(ShouldHideTopVerbatimMatch()); 145} 146 147TEST_F(ShouldHideTopVerbatimTest, EnableByFlagInInstantExtended) { 148 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 149 "Group1 hide_verbatim:1")); 150 EXPECT_TRUE(ShouldHideTopVerbatimMatch()); 151} 152 153TEST_F(ShouldHideTopVerbatimTest, EnableByFlagOutsideInstantExtended) { 154 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 155 "EmbeddedSearch", "Controll1 hide_verbatim:1")); 156 EXPECT_TRUE(ShouldHideTopVerbatimMatch()); 157} 158 159TEST_F(ShouldHideTopVerbatimTest, DisableByFlag) { 160 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 161 "Group1 hide_verbatim:0")); 162 EXPECT_FALSE(ShouldHideTopVerbatimMatch()); 163} 164 165} // namespace chrome 166