Chromium Code Reviews| Index: chrome/installer/util/experiment_unittest.cc |
| diff --git a/chrome/installer/util/experiment_unittest.cc b/chrome/installer/util/experiment_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..850dc9a6bb00296268b8bc49800acf8323971b4b |
| --- /dev/null |
| +++ b/chrome/installer/util/experiment_unittest.cc |
| @@ -0,0 +1,94 @@ |
| +// Copyright 2017 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/installer/util/experiment.h" |
| + |
| +#include <cmath> |
| + |
| +#include "base/time/time.h" |
| +#include "chrome/installer/util/experiment_metrics.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace installer { |
| + |
| +class ExperimentTest : public ::testing::Test { |
| + protected: |
| + void TestExperimentMetrics(ExperimentMetrics* metrics) { |
| + metrics->SetState(ExperimentMetrics::kGroupAssigned); |
| + metrics->group = 5; |
| + metrics->toast_location = ExperimentMetrics::kOverTaskbarPin; |
| + metrics->toast_count = 1; |
| + metrics->first_toast_offset = 30; |
| + metrics->toast_hour = 3; |
| + metrics->last_used_bucket = 126; // Corresponds to 1621 days inactive. |
| + metrics->display_time_bucket = 25; // Corresponds to 32875 sec |
| + metrics->session_length_bucket = 50; // Corresponds to 3962 min |
| + } |
| +}; |
| + |
| +TEST_F(ExperimentTest, TestInitializeFromMetrics) { |
| + ExperimentMetrics metrics; |
| + TestExperimentMetrics(&metrics); |
| + Experiment experiment; |
| + experiment.InitializeFromMetrics(metrics); |
| + |
| + ASSERT_EQ(metrics.state, experiment.state()); |
|
grt (UTC plus 2)
2017/05/24 13:43:39
please use EXPECT_ rather than ASSERT_ for failure
|
| + ASSERT_EQ(metrics.group, experiment.group()); |
| + ASSERT_EQ(metrics.toast_location, experiment.toast_location()); |
| + ASSERT_EQ(1621, experiment.inactive_days()); |
| + ASSERT_EQ(metrics.toast_count, experiment.toast_count()); |
| + base::Time expected_display_time = |
| + (base::Time::UnixEpoch() + |
| + base::TimeDelta::FromSeconds( |
| + ExperimentMetrics::kExperimentStartSeconds) + |
| + base::TimeDelta::FromDays(metrics.first_toast_offset)); |
| + ASSERT_EQ(expected_display_time, experiment.first_display_time()); |
| + ASSERT_EQ(expected_display_time, experiment.latest_display_time()); |
| + ASSERT_EQ(base::TimeDelta::FromMinutes(3962), |
| + experiment.user_session_uptime()); |
| + ASSERT_EQ(base::TimeDelta::FromSeconds(32875), experiment.action_delay()); |
| +} |
| + |
| +TEST_F(ExperimentTest, TestSetters) { |
| + Experiment experiment; |
| + // Set experiment states so that the generated experiment metrics |
| + // is similar to TestExperimentMetrics. |
| + experiment.AssignGroup(5); |
| + experiment.SetState(ExperimentMetrics::kGroupAssigned); |
| + experiment.SetToastLocation(ExperimentMetrics::kOverTaskbarPin); |
| + experiment.SetInactiveDays(1621); |
| + experiment.SetToastCount(1); |
| + base::Time test_display_time = |
| + (base::Time::UnixEpoch() + |
| + base::TimeDelta::FromSeconds( |
| + ExperimentMetrics::kExperimentStartSeconds) + |
| + base::TimeDelta::FromDays(30) + base::TimeDelta::FromHours(3)); |
| + experiment.SetDisplayTime(test_display_time); |
| + experiment.SetUserSessionUptime(base::TimeDelta::FromMinutes(3962)); |
| + experiment.SetActionDelay(base::TimeDelta::FromSeconds(32875)); |
| + |
| + ASSERT_EQ(ExperimentMetrics::kGroupAssigned, experiment.state()); |
| + ASSERT_EQ(5, experiment.group()); |
| + ASSERT_EQ(ExperimentMetrics::kOverTaskbarPin, experiment.toast_location()); |
| + ASSERT_EQ(1621, experiment.inactive_days()); |
| + ASSERT_EQ(1, experiment.toast_count()); |
| + ASSERT_EQ(test_display_time, experiment.first_display_time()); |
| + ASSERT_EQ(test_display_time, experiment.latest_display_time()); |
| + ASSERT_EQ(base::TimeDelta::FromMinutes(3962), |
| + experiment.user_session_uptime()); |
| + ASSERT_EQ(base::TimeDelta::FromSeconds(32875), experiment.action_delay()); |
| + |
| + ASSERT_EQ(ExperimentMetrics::kGroupAssigned, experiment.metrics().state); |
| + ASSERT_EQ(5, experiment.metrics().group); |
| + ASSERT_EQ(ExperimentMetrics::kOverTaskbarPin, |
| + experiment.metrics().toast_location); |
| + ASSERT_EQ(1, experiment.metrics().toast_count); |
| + ASSERT_EQ(30, experiment.metrics().first_toast_offset); |
| + ASSERT_EQ(3, experiment.metrics().toast_hour); |
| + ASSERT_EQ(126, experiment.metrics().last_used_bucket); |
| + ASSERT_EQ(25, experiment.metrics().display_time_bucket); |
| + ASSERT_EQ(50, experiment.metrics().session_length_bucket); |
| +} |
| + |
| +} // namespace installer |