| 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
 | 
| 
 |