f4382cc1e725787189fd3982a56c95a19dbe66af
[platform/framework/web/crosswalk.git] / src / components / search / search_unittest.cc
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
12 namespace chrome {
13
14 class 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
26 TEST_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
38 TEST_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
47 TEST_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
56 TEST_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
65 TEST_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
76 TEST_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
87 TEST_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
100 TEST_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
115 TEST_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
124 TEST_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
133 typedef EmbeddedSearchFieldTrialTest ShouldHideTopVerbatimTest;
134
135 TEST_F(ShouldHideTopVerbatimTest, DoNotHideByDefault) {
136   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
137                                                      "Control"));
138   EXPECT_FALSE(ShouldHideTopVerbatimMatch());
139 }
140
141 TEST_F(ShouldHideTopVerbatimTest, DoNotHideInInstantExtended) {
142   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
143                                                      "Group1"));
144   EXPECT_FALSE(ShouldHideTopVerbatimMatch());
145 }
146
147 TEST_F(ShouldHideTopVerbatimTest, EnableByFlagInInstantExtended) {
148   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
149                                                      "Group1 hide_verbatim:1"));
150   EXPECT_TRUE(ShouldHideTopVerbatimMatch());
151 }
152
153 TEST_F(ShouldHideTopVerbatimTest, EnableByFlagOutsideInstantExtended) {
154   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
155       "EmbeddedSearch", "Controll1 hide_verbatim:1"));
156   EXPECT_TRUE(ShouldHideTopVerbatimMatch());
157 }
158
159 TEST_F(ShouldHideTopVerbatimTest, DisableByFlag) {
160   ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
161                                                      "Group1 hide_verbatim:0"));
162   EXPECT_FALSE(ShouldHideTopVerbatimMatch());
163 }
164
165 }  // namespace chrome