| Index: components/metrics/daily_interval_unittest.cc
|
| diff --git a/components/metrics/daily_interval_unittest.cc b/components/metrics/daily_interval_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..eff503dbf335a24dc5471b52217bac4b9aa58d28
|
| --- /dev/null
|
| +++ b/components/metrics/daily_interval_unittest.cc
|
| @@ -0,0 +1,94 @@
|
| +// Copyright 2014 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 "components/metrics/daily_interval.h"
|
| +
|
| +#include "base/prefs/testing_pref_service.h"
|
| +#include "components/metrics/daily_observer.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace metrics {
|
| +
|
| +namespace {
|
| +
|
| +const char kTestPrefName[] = "TestPref";
|
| +
|
| +class TestDailyObserver : public DailyObserver {
|
| + public:
|
| + TestDailyObserver() : fired_(false) {}
|
| +
|
| + bool fired() const { return fired_; }
|
| +
|
| + virtual void OnDailyInterval() OVERRIDE {
|
| + fired_ = true;
|
| + };
|
| +
|
| + void Reset() {
|
| + fired_ = false;
|
| + };
|
| +
|
| + private:
|
| + // True if this event has been observed.
|
| + bool fired_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestDailyObserver);
|
| +};
|
| +
|
| +class DailyIntervalTest : public testing::Test {
|
| + public:
|
| + DailyIntervalTest() : interval_(&prefs_, kTestPrefName) {
|
| + DailyInterval::RegisterPref(prefs_.registry(), kTestPrefName);
|
| + interval_.AddObserver(&observer_);
|
| + }
|
| +
|
| + protected:
|
| + TestingPrefServiceSimple prefs_;
|
| + TestDailyObserver observer_;
|
| + DailyInterval interval_;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(DailyIntervalTest);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +// The event should fire if the preference is not available.
|
| +TEST_F(DailyIntervalTest, TestNewFires) {
|
| + interval_.CheckInterval();
|
| + EXPECT_TRUE(observer_.fired());
|
| +}
|
| +
|
| +// The event should fire if the preference is more than a day old.
|
| +TEST_F(DailyIntervalTest, TestOldFires) {
|
| + base::Time last_time = base::Time::Now() - base::TimeDelta::FromDays(2);
|
| + prefs_.SetInt64(kTestPrefName, last_time.ToInternalValue());
|
| + interval_.CheckInterval();
|
| + EXPECT_TRUE(observer_.fired());
|
| +}
|
| +
|
| +// The event should fire if the preference is more than a day in the future.
|
| +TEST_F(DailyIntervalTest, TestFutureFires) {
|
| + base::Time last_time = base::Time::Now() + base::TimeDelta::FromDays(2);
|
| + prefs_.SetInt64(kTestPrefName, last_time.ToInternalValue());
|
| + interval_.CheckInterval();
|
| + EXPECT_TRUE(observer_.fired());
|
| +}
|
| +
|
| +// The event should not fire if the preference is more recent than a day.
|
| +TEST_F(DailyIntervalTest, TestRecentNotFired) {
|
| + base::Time last_time = base::Time::Now() - base::TimeDelta::FromMinutes(2);
|
| + prefs_.SetInt64(kTestPrefName, last_time.ToInternalValue());
|
| + interval_.CheckInterval();
|
| + EXPECT_FALSE(observer_.fired());
|
| +}
|
| +
|
| +// The event should not fire if the preference is less than a day in the future.
|
| +TEST_F(DailyIntervalTest, TestSoonNotFired) {
|
| + base::Time last_time = base::Time::Now() + base::TimeDelta::FromMinutes(2);
|
| + prefs_.SetInt64(kTestPrefName, last_time.ToInternalValue());
|
| + interval_.CheckInterval();
|
| + EXPECT_FALSE(observer_.fired());
|
| +}
|
| +
|
| +} // namespace metrics
|
|
|