Chromium Code Reviews| Index: chrome/browser/origin_trials/origin_trial_controller_unittest.cc |
| diff --git a/chrome/browser/origin_trials/origin_trial_controller_unittest.cc b/chrome/browser/origin_trials/origin_trial_controller_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..36524cc3ec8974ac7974f3e73c95351a68b68378 |
| --- /dev/null |
| +++ b/chrome/browser/origin_trials/origin_trial_controller_unittest.cc |
| @@ -0,0 +1,76 @@ |
| +// Copyright (c) 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/origin_trials/origin_trial_controller.h" |
| + |
| +#include <string> |
| + |
| +#include "base/command_line.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "chrome/common/chrome_switches.h" |
| +#include "components/variations/variations_associated_data.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +const char kFieldTrialGroup[] = "TestGroup"; |
| +const char kNewPublicKey[] = "dRCs+TocuKkocNKa0AtZ4awrt9XKH2SQCI6o4FY6BNA="; |
| + |
| +class OriginTrialControllerTest : public testing::Test { |
| + protected: |
| + OriginTrialControllerTest() { |
| + field_trial_list_.reset( |
| + new base::FieldTrialList(nullptr /* entropy provider */)); |
| + variations::testing::ClearAllVariationParams(); |
| + } |
| + |
| + void AddFieldTrial() { |
| + base::FieldTrialList::CreateFieldTrial( |
| + OriginTrialController::kFieldTrialName, kFieldTrialGroup); |
| + } |
| + |
| + void AddFieldTrialParam(const char* param_name, const char* param_value) { |
| + std::map<std::string, std::string> variation_params; |
| + variation_params[param_name] = param_value; |
| + ASSERT_TRUE(variations::AssociateVariationParams( |
| + OriginTrialController::kFieldTrialName, kFieldTrialGroup, |
| + variation_params)); |
| + } |
| + |
| + void UpdateCommandLine() { |
| + command_line_.reset(new base::CommandLine(base::CommandLine::NO_PROGRAM)); |
| + OriginTrialController::UpdateCommandLineFromFieldTrials(command_line()); |
| + } |
| + |
| + base::CommandLine* command_line() { return command_line_.get(); } |
| + |
| + private: |
| + scoped_ptr<base::CommandLine> command_line_; |
|
sky
2016/03/03 20:55:30
Why bother with scoped_ptr for either of these?
iclelland
2016/03/07 14:48:19
There's no compelling reason; I can simplify it by
|
| + scoped_ptr<base::FieldTrialList> field_trial_list_; |
| +}; |
|
sky
2016/03/03 20:55:30
DISALLOW...
iclelland
2016/03/07 14:48:19
Done.
|
| + |
| +TEST_F(OriginTrialControllerTest, NoFieldTrial) { |
| + UpdateCommandLine(); |
| + EXPECT_FALSE(command_line()->HasSwitch(switches::kOriginTrialPublicKey)); |
| +} |
| + |
| +TEST_F(OriginTrialControllerTest, EmptyFieldTrial) { |
| + AddFieldTrial(); |
| + UpdateCommandLine(); |
| + EXPECT_FALSE(command_line()->HasSwitch(switches::kOriginTrialPublicKey)); |
| +} |
| + |
| +TEST_F(OriginTrialControllerTest, EmptyStringFieldTrial) { |
| + AddFieldTrial(); |
| + AddFieldTrialParam(OriginTrialController::kPublicKeyFieldName, ""); |
| + UpdateCommandLine(); |
| + EXPECT_FALSE(command_line()->HasSwitch(switches::kOriginTrialPublicKey)); |
| +} |
| + |
| +TEST_F(OriginTrialControllerTest, FieldTrialUpdatesPublicKey) { |
| + AddFieldTrial(); |
| + AddFieldTrialParam(OriginTrialController::kPublicKeyFieldName, kNewPublicKey); |
| + UpdateCommandLine(); |
| + EXPECT_TRUE(command_line()->HasSwitch(switches::kOriginTrialPublicKey)); |
| + EXPECT_EQ(kNewPublicKey, command_line()->GetSwitchValueASCII( |
| + switches::kOriginTrialPublicKey)); |
| +} |