summaryrefslogtreecommitdiff
path: root/src/components/functional_module/test/include/module_timer_test.h
blob: 456346b5444d837e789334af1fedc75c38161eb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "utils/macro.h"
#include "functional_module/timer/module_timer.h"

namespace functional_modules {

class TestTrackable : public Trackable {
 public:
  explicit TestTrackable(TimeUnit interval = 0)
      : Trackable(), custom_interval_(interval) {}

  virtual TimeUnit custom_interval() const {
    return custom_interval_;
  }

  bool operator==(const TestTrackable& other) const {
    return custom_interval_ == other.custom_interval_;
  }

 private:
  TimeUnit custom_interval_;
};

class ModuleTimerTest {
 public:
  ModuleTimerTest(ModuleTimer<TestTrackable>& timer) : timer_(timer) {}

  TimeUnit period() const {
    return timer_.period_;
  }

  int observers_size() const {
    return timer_.observers_.size();
  }

  int trackables_size() const {
    return timer_.trackables_.size();
  }

  TestTrackable trackable(const TestTrackable& track) const {
    return *std::find(
               timer_.trackables_.begin(), timer_.trackables_.end(), track);
  }

  TimeUnit current_time() const {
    return timer_.CurrentTime();
  }

 private:
  ModuleTimer<TestTrackable>& timer_;
};

class MockTimerObserver : public TimerObserver<TestTrackable> {
 public:
  MOCK_METHOD1(OnTimeoutTriggered, void(const TestTrackable& expired));
};
}  //  namespace functional_modules