| Index: ash/metrics/task_switch_time_tracker_unittest.cc
|
| diff --git a/ash/metrics/task_switch_time_tracker_unittest.cc b/ash/metrics/task_switch_time_tracker_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7fc3aba928305447e5c9890ff9d23fb537efbdff
|
| --- /dev/null
|
| +++ b/ash/metrics/task_switch_time_tracker_unittest.cc
|
| @@ -0,0 +1,107 @@
|
| +// Copyright 2015 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 "ash/metrics/task_switch_time_tracker.h"
|
| +
|
| +#include <string>
|
| +
|
| +#include "ash/test/task_switch_time_tracker_test_api.h"
|
| +#include "base/test/histogram_tester.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace ash {
|
| +
|
| +namespace {
|
| +
|
| +// A dummy histogram name.
|
| +const std::string kHistogramName = "Dummy.Histogram";
|
| +
|
| +} // namespace
|
| +
|
| +class TaskSwitchTimeTrackerTest : public testing::Test {
|
| + public:
|
| + TaskSwitchTimeTrackerTest();
|
| + ~TaskSwitchTimeTrackerTest() override;
|
| +
|
| + // testing::Test:
|
| + void SetUp() override;
|
| + void TearDown() override;
|
| +
|
| + // Wrapper to the test targets OnTaskSwitch() method.
|
| + void OnTaskSwitch();
|
| +
|
| + TaskSwitchTimeTracker* time_tracker() {
|
| + return time_tracker_test_api_->time_tracker();
|
| + }
|
| +
|
| + protected:
|
| + // Used to verify recorded histogram data.
|
| + scoped_ptr<base::HistogramTester> histogram_tester_;
|
| +
|
| + // A Test API that wraps the test target.
|
| + scoped_ptr<test::TaskSwitchTimeTrackerTestAPI> time_tracker_test_api_;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(TaskSwitchTimeTrackerTest);
|
| +};
|
| +
|
| +TaskSwitchTimeTrackerTest::TaskSwitchTimeTrackerTest() {
|
| +}
|
| +
|
| +TaskSwitchTimeTrackerTest::~TaskSwitchTimeTrackerTest() {
|
| +}
|
| +
|
| +void TaskSwitchTimeTrackerTest::SetUp() {
|
| + testing::Test::SetUp();
|
| +
|
| + histogram_tester_.reset(new base::HistogramTester());
|
| + time_tracker_test_api_.reset(
|
| + new test::TaskSwitchTimeTrackerTestAPI(kHistogramName));
|
| + // The TaskSwitchTimeTracker interprets a value of base::TimeTicks() as if the
|
| + // |last_action_time_| has not been set.
|
| + time_tracker_test_api_->Advance(base::TimeDelta::FromMilliseconds(1));
|
| +}
|
| +
|
| +void TaskSwitchTimeTrackerTest::TearDown() {
|
| + testing::Test::TearDown();
|
| + time_tracker_test_api_.reset();
|
| + histogram_tester_.reset();
|
| +}
|
| +
|
| +void TaskSwitchTimeTrackerTest::OnTaskSwitch() {
|
| + time_tracker()->OnTaskSwitch();
|
| +}
|
| +
|
| +// Verifies TaskSwitchTimeTracker::HasLastActionTime() returns false after
|
| +// construction.
|
| +TEST_F(TaskSwitchTimeTrackerTest,
|
| + HasLastActionTimeShouldBeFalseAfterConstruction) {
|
| + EXPECT_FALSE(time_tracker_test_api_->HasLastActionTime());
|
| +}
|
| +
|
| +// Verifies TaskSwitchTimeTracker::HasLastActionTime() returns true after the
|
| +// first call to TaskSwitchTimeTracker::OnTaskSwitch() and no histogram data was
|
| +// recorded.
|
| +TEST_F(TaskSwitchTimeTrackerTest,
|
| + HasLastActionTimeShouldBeTrueAfterOnTaskSwitch) {
|
| + OnTaskSwitch();
|
| + histogram_tester_->ExpectTotalCount(kHistogramName, 0);
|
| +}
|
| +
|
| +// Verfies that the histogram data is recorded in the correct buckets.
|
| +TEST_F(TaskSwitchTimeTrackerTest, RecordAfterTwoTaskSwitches) {
|
| + OnTaskSwitch();
|
| +
|
| + time_tracker_test_api_->Advance(base::TimeDelta::FromMilliseconds(2));
|
| + OnTaskSwitch();
|
| + histogram_tester_->ExpectTotalCount(kHistogramName, 1);
|
| + histogram_tester_->ExpectBucketCount(kHistogramName, 0, 1);
|
| +
|
| + time_tracker_test_api_->Advance(base::TimeDelta::FromSeconds(1));
|
| + OnTaskSwitch();
|
| + histogram_tester_->ExpectTotalCount(kHistogramName, 2);
|
| + histogram_tester_->ExpectBucketCount(kHistogramName, 1, 1);
|
| +}
|
| +
|
| +} // namespace ash
|
|
|