Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

73 рядки
1.7 KiB

  1. #include <gtest/gtest.h>
  2. #include "../../helper/now_mock.h"
  3. #include <asyncpp.h>
  4. #include <asyncpp/timer.h>
  5. using namespace ::testing;
  6. using namespace ::asyncpp;
  7. using namespace ::asyncpp::timer;
  8. TEST(interval_tests, poll)
  9. {
  10. InSequence seq;
  11. StrictMock<now_mock> m;
  12. asyncpp::timer::timer t;
  13. interval i(
  14. time_point(std::chrono::seconds(10)),
  15. std::chrono::seconds(5),
  16. time_point(std::chrono::seconds(30)));
  17. // 30 - 10 = 20
  18. // 20 / 5 = 4
  19. // 4 - 1 = 3
  20. // 3 x Ready
  21. t.make_current();
  22. auto s = as_stream(i);
  23. EXPECT_CALL(m, now)
  24. .WillOnce(Return(time_point(std::chrono::seconds(0))));
  25. auto r0 = s.poll();
  26. ASSERT_EQ(result_status::not_ready, r0.status());
  27. EXPECT_CALL(m, now)
  28. .WillOnce(Return(time_point(std::chrono::seconds(9))));
  29. auto r1 = s.poll();
  30. ASSERT_EQ(result_status::not_ready, r1.status());
  31. EXPECT_CALL(m, now)
  32. .WillOnce(Return(time_point(std::chrono::seconds(10))));
  33. auto r2 = s.poll();
  34. ASSERT_EQ(result_status::ready, r2.status());
  35. EXPECT_CALL(m, now)
  36. .WillOnce(Return(time_point(std::chrono::seconds(11))));
  37. auto r3 = s.poll();
  38. ASSERT_EQ(result_status::not_ready, r3.status());
  39. EXPECT_CALL(m, now)
  40. .WillOnce(Return(time_point(std::chrono::seconds(30))));
  41. auto r4 = s.poll();
  42. ASSERT_EQ(result_status::ready, r4.status());
  43. EXPECT_CALL(m, now)
  44. .WillOnce(Return(time_point(std::chrono::seconds(30))));
  45. auto r5 = s.poll();
  46. ASSERT_EQ(result_status::ready, r5.status());
  47. EXPECT_CALL(m, now)
  48. .WillOnce(Return(time_point(std::chrono::seconds(30))));
  49. auto r6 = s.poll();
  50. ASSERT_EQ(result_status::done, r6.status());
  51. }