blob: a0a08f264b3cd208b70b086edd5fa3ea57f17f26 [file] [log] [blame]
// Copyright 2016 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/android/contextualsearch/contextual_search_field_trial.h"
#include <memory>
#include "base/macros.h"
#include "testing/gtest/include/gtest/gtest.h"
// Tests ContextualSearchFieldTrial class.
class ContextualSearchFieldTrialTest : public testing::Test {
public:
ContextualSearchFieldTrialTest() {}
~ContextualSearchFieldTrialTest() override {}
// Inner class that stubs out access to Variations and command-line switches.
class ContextualSearchFieldTrialStubbed : public ContextualSearchFieldTrial {
public:
// Use these to set a non-empty value to override return of a Get method.
void SetSwitchValue(const std::string& value);
void SetParamValue(const std::string& value);
protected:
// These are overridden to return the Set value above.
bool HasSwitch(const std::string& name) override;
std::string GetSwitch(const std::string& name) override;
std::string GetParam(const std::string& name) override;
private:
bool does_have_switch_;
std::string switch_value_;
std::string param_value_;
};
// The class under test.
std::unique_ptr<ContextualSearchFieldTrialStubbed> field_trial_;
protected:
void SetUp() override {
field_trial_.reset(new ContextualSearchFieldTrialStubbed());
}
void TearDown() override {}
private:
DISALLOW_COPY_AND_ASSIGN(ContextualSearchFieldTrialTest);
};
bool ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::
HasSwitch(const std::string& name) {
return does_have_switch_;
}
void ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::
SetSwitchValue(const std::string& value) {
switch_value_ = value;
does_have_switch_ = true;
}
std::string
ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::GetSwitch(
const std::string& name) {
return switch_value_;
}
void ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::
SetParamValue(const std::string& value) {
param_value_ = value;
}
std::string
ContextualSearchFieldTrialTest::ContextualSearchFieldTrialStubbed::GetParam(
const std::string& name) {
return param_value_;
}
TEST_F(ContextualSearchFieldTrialTest, IntegerDefaultValue) {
// Should return this default value.
EXPECT_EQ(
ContextualSearchFieldTrial::kContextualSearchDefaultSampleSurroundingSize,
field_trial_->GetSampleSurroundingSize());
}
TEST_F(ContextualSearchFieldTrialTest, IntegerParamOverrides) {
// Params override defaults.
field_trial_->SetParamValue("500");
EXPECT_EQ(500, field_trial_->GetSampleSurroundingSize());
}
TEST_F(ContextualSearchFieldTrialTest, IntegerSwitchOverrides) {
field_trial_->SetParamValue("500");
// Switches override params.
field_trial_->SetSwitchValue("200");
EXPECT_EQ(200, field_trial_->GetSampleSurroundingSize());
}
TEST_F(ContextualSearchFieldTrialTest, IntegerJunkIgnored) {
// A junk value effectively resets the switch.
field_trial_->SetSwitchValue("foo");
EXPECT_EQ(
ContextualSearchFieldTrial::kContextualSearchDefaultSampleSurroundingSize,
field_trial_->GetSampleSurroundingSize());
}
TEST_F(ContextualSearchFieldTrialTest, BooleanDefaultValue) {
// Should return this default value.
EXPECT_FALSE(field_trial_->IsSendBasePageURLDisabled());
}
TEST_F(ContextualSearchFieldTrialTest, BooleanParamOverrides) {
// Params override defaults.
field_trial_->SetParamValue("any");
EXPECT_TRUE(field_trial_->IsSendBasePageURLDisabled());
}
TEST_F(ContextualSearchFieldTrialTest, BooleanFalseParam) {
field_trial_->SetParamValue("false");
EXPECT_FALSE(field_trial_->IsSendBasePageURLDisabled());
}
TEST_F(ContextualSearchFieldTrialTest, BooleanSwitchOverrides) {
field_trial_->SetParamValue("false");
// Switches override params.
field_trial_->SetSwitchValue("any");
EXPECT_TRUE(field_trial_->IsSendBasePageURLDisabled());
}
TEST_F(ContextualSearchFieldTrialTest, BooleanEmptySwitch) {
// An empty switch that's present should return true;
field_trial_->SetSwitchValue("");
EXPECT_TRUE(field_trial_->IsSendBasePageURLDisabled());
}
TEST_F(ContextualSearchFieldTrialTest, StringDefaultEmpty) {
// Default should return an empty string.
EXPECT_TRUE(field_trial_->GetResolverURLPrefix().empty());
}
TEST_F(ContextualSearchFieldTrialTest, StringParamOverrides) {
// Params override.
field_trial_->SetParamValue("param");
EXPECT_EQ("param", field_trial_->GetResolverURLPrefix());
}
TEST_F(ContextualSearchFieldTrialTest, StringSwitchOverrides) {
field_trial_->SetParamValue("param");
// Switches override params.
field_trial_->SetSwitchValue("switch");
EXPECT_EQ("switch", field_trial_->GetResolverURLPrefix());
}