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)); |
+} |