1 // Copyright 2016 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/android/contextualsearch/contextual_search_field_trial.h"
6
7 #include <memory>
8
9 #include "base/macros.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 // Tests ContextualSearchFieldTrial class.
13 class ContextualSearchFieldTrialTest : public testing::Test {
14 public:
ContextualSearchFieldTrialTest()15 ContextualSearchFieldTrialTest() {}
~ContextualSearchFieldTrialTest()16 ~ContextualSearchFieldTrialTest() override {}
17
18 // Inner class that stubs out access to Variations and command-line switches.
19 class ContextualSearchFieldTrialStubbed : public ContextualSearchFieldTrial {
20 public:
21 // Use these to set a non-empty value to override return of a Get method.
22 void SetSwitchValue(const std::string& value);
23 void SetParamValue(const std::string& value);
24
25 protected:
26 // These are overridden to return the Set value above.
27 bool HasSwitch(const std::string& name) override;
28 std::string GetSwitch(const std::string& name) override;
29 std::string GetParam(const std::string& name) override;
30
31 private:
32 bool does_have_switch_;
33 std::string switch_value_;
34 std::string param_value_;
35 };
36
37 // The class under test.
38 std::unique_ptr<ContextualSearchFieldTrialStubbed> field_trial_;
39
40 protected:
SetUp()41 void SetUp() override {
42 field_trial_.reset(new ContextualSearchFieldTrialStubbed());
43 }
44
TearDown()45 void TearDown() override {}
46
47 private:
48 DISALLOW_COPY_AND_ASSIGN(ContextualSearchFieldTrialTest);
49 };
50
51 bool ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::
HasSwitch(const std::string & name)52 HasSwitch(const std::string& name) {
53 return does_have_switch_;
54 }
55
56 void ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::
SetSwitchValue(const std::string & value)57 SetSwitchValue(const std::string& value) {
58 switch_value_ = value;
59 does_have_switch_ = true;
60 }
61
62 std::string
GetSwitch(const std::string & name)63 ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::GetSwitch(
64 const std::string& name) {
65 return switch_value_;
66 }
67
68 void ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::
SetParamValue(const std::string & value)69 SetParamValue(const std::string& value) {
70 param_value_ = value;
71 }
72
73 std::string
GetParam(const std::string & name)74 ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::GetParam(
75 const std::string& name) {
76 return param_value_;
77 }
78
TEST_F(ContextualSearchFieldTrialTest,IntegerDefaultValue)79 TEST_F(ContextualSearchFieldTrialTest, IntegerDefaultValue) {
80 // Should return this default value.
81 EXPECT_EQ(
82 ContextualSearchFieldTrial::kContextualSearchDefaultSampleSurroundingSize,
83 field_trial_->GetSampleSurroundingSize());
84 }
85
TEST_F(ContextualSearchFieldTrialTest,IntegerParamOverrides)86 TEST_F(ContextualSearchFieldTrialTest, IntegerParamOverrides) {
87 // Params override defaults.
88 field_trial_->SetParamValue("500");
89 EXPECT_EQ(500, field_trial_->GetSampleSurroundingSize());
90 }
91
TEST_F(ContextualSearchFieldTrialTest,IntegerSwitchOverrides)92 TEST_F(ContextualSearchFieldTrialTest, IntegerSwitchOverrides) {
93 field_trial_->SetParamValue("500");
94 // Switches override params.
95 field_trial_->SetSwitchValue("200");
96 EXPECT_EQ(200, field_trial_->GetSampleSurroundingSize());
97 }
98
TEST_F(ContextualSearchFieldTrialTest,IntegerJunkIgnored)99 TEST_F(ContextualSearchFieldTrialTest, IntegerJunkIgnored) {
100 // A junk value effectively resets the switch.
101 field_trial_->SetSwitchValue("foo");
102 EXPECT_EQ(
103 ContextualSearchFieldTrial::kContextualSearchDefaultSampleSurroundingSize,
104 field_trial_->GetSampleSurroundingSize());
105 }
106
TEST_F(ContextualSearchFieldTrialTest,StringDefaultEmpty)107 TEST_F(ContextualSearchFieldTrialTest, StringDefaultEmpty) {
108 // Default should return an empty string.
109 EXPECT_TRUE(field_trial_->GetResolverURLPrefix().empty());
110 }
111
TEST_F(ContextualSearchFieldTrialTest,StringParamOverrides)112 TEST_F(ContextualSearchFieldTrialTest, StringParamOverrides) {
113 // Params override.
114 field_trial_->SetParamValue("param");
115 EXPECT_EQ("param", field_trial_->GetResolverURLPrefix());
116 }
117
TEST_F(ContextualSearchFieldTrialTest,StringSwitchOverrides)118 TEST_F(ContextualSearchFieldTrialTest, StringSwitchOverrides) {
119 field_trial_->SetParamValue("param");
120 // Switches override params.
121 field_trial_->SetSwitchValue("switch");
122 EXPECT_EQ("switch", field_trial_->GetResolverURLPrefix());
123 }
124