14a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file.
44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/instant/promo_counter.h"
64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/test/testing_profile.h"
74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "testing/gtest/include/gtest/gtest.h"
84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochtypedef testing::Test PromoCounterTest;
104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Makes sure ShouldShow returns false after the max number of days.
124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben MurdochTEST_F(PromoCounterTest, MaxTimeElapsed) {
134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  TestingProfile profile;
144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  PromoCounter::RegisterUserPrefs(profile.GetPrefs(), "test");
154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  base::Time test_time(base::Time::Now());
174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  PromoCounter counter(&profile, "test", "test", 2, 2);
184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  ASSERT_TRUE(counter.ShouldShow(test_time));
194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  ASSERT_TRUE(counter.ShouldShow(test_time + base::TimeDelta::FromHours(2)));
204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  ASSERT_FALSE(counter.ShouldShow(test_time + base::TimeDelta::FromDays(4)));
214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}
224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Makes sure ShouldShow returns false after max number of sessions encountered.
244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben MurdochTEST_F(PromoCounterTest, MaxSessionsLapsed) {
254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  TestingProfile profile;
264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  PromoCounter::RegisterUserPrefs(profile.GetPrefs(), "test");
274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  base::Time test_time(base::Time::Now());
294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  {
304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    PromoCounter counter(&profile, "test", "test", 2, 2);
314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    ASSERT_TRUE(counter.ShouldShow(test_time));
324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  {
354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    PromoCounter counter(&profile, "test", "test", 2, 2);
364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    ASSERT_TRUE(counter.ShouldShow(test_time));
374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  {
404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    PromoCounter counter(&profile, "test", "test", 2, 2);
414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    ASSERT_FALSE(counter.ShouldShow(test_time));
424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}
444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Makes sure invoking Hide make ShouldShow return false.
464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben MurdochTEST_F(PromoCounterTest, Hide) {
474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  TestingProfile profile;
484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  PromoCounter::RegisterUserPrefs(profile.GetPrefs(), "test");
494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  base::Time test_time(base::Time::Now());
514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  {
524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    PromoCounter counter(&profile, "test", "test", 2, 2);
534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    counter.Hide();
544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    ASSERT_FALSE(counter.ShouldShow(test_time));
554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Recreate to make sure pref was correctly written.
584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  {
594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    PromoCounter counter(&profile, "test", "test", 2, 2);
604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    ASSERT_FALSE(counter.ShouldShow(test_time));
614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}
634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Same as Hide, but invokes ShouldShow first.
654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben MurdochTEST_F(PromoCounterTest, Hide2) {
664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  TestingProfile profile;
674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  PromoCounter::RegisterUserPrefs(profile.GetPrefs(), "test");
684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  base::Time test_time(base::Time::Now());
704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  {
714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    PromoCounter counter(&profile, "test", "test", 2, 2);
724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    ASSERT_TRUE(counter.ShouldShow(test_time));
734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    counter.Hide();
744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    ASSERT_FALSE(counter.ShouldShow(test_time));
754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  {
784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    PromoCounter counter(&profile, "test", "test", 2, 2);
794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    ASSERT_FALSE(counter.ShouldShow(test_time));
804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}
82