1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/instant/promo_counter.h"
6#include "chrome/test/testing_profile.h"
7#include "testing/gtest/include/gtest/gtest.h"
8
9typedef testing::Test PromoCounterTest;
10
11// Makes sure ShouldShow returns false after the max number of days.
12TEST_F(PromoCounterTest, MaxTimeElapsed) {
13  TestingProfile profile;
14  PromoCounter::RegisterUserPrefs(profile.GetPrefs(), "test");
15
16  base::Time test_time(base::Time::Now());
17  PromoCounter counter(&profile, "test", "test", 2, 2);
18  ASSERT_TRUE(counter.ShouldShow(test_time));
19  ASSERT_TRUE(counter.ShouldShow(test_time + base::TimeDelta::FromHours(2)));
20  ASSERT_FALSE(counter.ShouldShow(test_time + base::TimeDelta::FromDays(4)));
21}
22
23// Makes sure ShouldShow returns false after max number of sessions encountered.
24TEST_F(PromoCounterTest, MaxSessionsLapsed) {
25  TestingProfile profile;
26  PromoCounter::RegisterUserPrefs(profile.GetPrefs(), "test");
27
28  base::Time test_time(base::Time::Now());
29  {
30    PromoCounter counter(&profile, "test", "test", 2, 2);
31    ASSERT_TRUE(counter.ShouldShow(test_time));
32  }
33
34  {
35    PromoCounter counter(&profile, "test", "test", 2, 2);
36    ASSERT_TRUE(counter.ShouldShow(test_time));
37  }
38
39  {
40    PromoCounter counter(&profile, "test", "test", 2, 2);
41    ASSERT_FALSE(counter.ShouldShow(test_time));
42  }
43}
44
45// Makes sure invoking Hide make ShouldShow return false.
46TEST_F(PromoCounterTest, Hide) {
47  TestingProfile profile;
48  PromoCounter::RegisterUserPrefs(profile.GetPrefs(), "test");
49
50  base::Time test_time(base::Time::Now());
51  {
52    PromoCounter counter(&profile, "test", "test", 2, 2);
53    counter.Hide();
54    ASSERT_FALSE(counter.ShouldShow(test_time));
55  }
56
57  // Recreate to make sure pref was correctly written.
58  {
59    PromoCounter counter(&profile, "test", "test", 2, 2);
60    ASSERT_FALSE(counter.ShouldShow(test_time));
61  }
62}
63
64// Same as Hide, but invokes ShouldShow first.
65TEST_F(PromoCounterTest, Hide2) {
66  TestingProfile profile;
67  PromoCounter::RegisterUserPrefs(profile.GetPrefs(), "test");
68
69  base::Time test_time(base::Time::Now());
70  {
71    PromoCounter counter(&profile, "test", "test", 2, 2);
72    ASSERT_TRUE(counter.ShouldShow(test_time));
73    counter.Hide();
74    ASSERT_FALSE(counter.ShouldShow(test_time));
75  }
76
77  {
78    PromoCounter counter(&profile, "test", "test", 2, 2);
79    ASSERT_FALSE(counter.ShouldShow(test_time));
80  }
81}
82