gcm_delayed_task_controller_unittest.cc 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright 2014 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. #include "components/gcm_driver/gcm_delayed_task_controller.h"
  5. #include <memory>
  6. #include "base/bind.h"
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. namespace gcm {
  9. class GCMDelayedTaskControllerTest : public testing::Test {
  10. public:
  11. GCMDelayedTaskControllerTest();
  12. ~GCMDelayedTaskControllerTest() override;
  13. void TestTask();
  14. GCMDelayedTaskController* controller() { return controller_.get(); }
  15. int number_of_triggered_tasks() const { return number_of_triggered_tasks_; }
  16. private:
  17. std::unique_ptr<GCMDelayedTaskController> controller_;
  18. int number_of_triggered_tasks_;
  19. };
  20. GCMDelayedTaskControllerTest::GCMDelayedTaskControllerTest()
  21. : controller_(new GCMDelayedTaskController), number_of_triggered_tasks_(0) {
  22. }
  23. GCMDelayedTaskControllerTest::~GCMDelayedTaskControllerTest() {
  24. }
  25. void GCMDelayedTaskControllerTest::TestTask() {
  26. ++number_of_triggered_tasks_;
  27. }
  28. // Tests that a newly created controller forced tasks to be delayed, while
  29. // calling SetReady allows tasks to execute.
  30. TEST_F(GCMDelayedTaskControllerTest, SetReadyWithNoTasks) {
  31. EXPECT_FALSE(controller()->CanRunTaskWithoutDelay());
  32. EXPECT_EQ(0, number_of_triggered_tasks());
  33. controller()->SetReady();
  34. EXPECT_TRUE(controller()->CanRunTaskWithoutDelay());
  35. EXPECT_EQ(0, number_of_triggered_tasks());
  36. }
  37. // Tests that tasks are triggered when controlles is set to ready.
  38. TEST_F(GCMDelayedTaskControllerTest, PendingTasksTriggeredWhenSetReady) {
  39. controller()->AddTask(base::BindOnce(&GCMDelayedTaskControllerTest::TestTask,
  40. base::Unretained(this)));
  41. controller()->AddTask(base::BindOnce(&GCMDelayedTaskControllerTest::TestTask,
  42. base::Unretained(this)));
  43. controller()->SetReady();
  44. EXPECT_EQ(2, number_of_triggered_tasks());
  45. }
  46. } // namespace gcm