1 // Copyright 2020 The ChromiumOS Authors
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 <string>
6
7 #include <gtest/gtest.h>
8
9 #include "include/filter_interpreter.h"
10 #include "include/gestures.h"
11 #include "include/unittest_util.h"
12 #include "include/util.h"
13
14 using std::string;
15
16 namespace gestures {
17
18 class FilterInterpreterTest : public ::testing::Test {
19 public:
FilterInterpreterTest()20 FilterInterpreterTest() : interpreter(nullptr, nullptr, nullptr, false) {}
21
22 protected:
23 FilterInterpreter interpreter;
24 };
25
TEST_F(FilterInterpreterTest,DeadlineSettingNoDeadlines)26 TEST_F(FilterInterpreterTest, DeadlineSettingNoDeadlines) {
27 stime_t timeout_val =
28 interpreter.SetNextDeadlineAndReturnTimeoutVal(10000.0, NO_DEADLINE,
29 NO_DEADLINE);
30 EXPECT_FLOAT_EQ(NO_DEADLINE, timeout_val);
31 EXPECT_FLOAT_EQ(NO_DEADLINE, interpreter.next_timer_deadline_);
32 }
33
TEST_F(FilterInterpreterTest,DeadlineSettingLocalOnly)34 TEST_F(FilterInterpreterTest, DeadlineSettingLocalOnly) {
35 stime_t timeout_val =
36 interpreter.SetNextDeadlineAndReturnTimeoutVal(10000.0, 10001.0,
37 NO_DEADLINE);
38 EXPECT_FLOAT_EQ(1.0, timeout_val);
39 EXPECT_FLOAT_EQ(NO_DEADLINE, interpreter.next_timer_deadline_);
40
41 EXPECT_FALSE(interpreter.ShouldCallNextTimer(10001.00));
42 }
43
TEST_F(FilterInterpreterTest,DeadlineSettingNextOnly)44 TEST_F(FilterInterpreterTest, DeadlineSettingNextOnly) {
45 stime_t timeout_val =
46 interpreter.SetNextDeadlineAndReturnTimeoutVal(10000.0, NO_DEADLINE, 1.0);
47 EXPECT_FLOAT_EQ(1.0, timeout_val);
48 EXPECT_FLOAT_EQ(10001.0, interpreter.next_timer_deadline_);
49
50 EXPECT_TRUE(interpreter.ShouldCallNextTimer(NO_DEADLINE));
51 }
52
TEST_F(FilterInterpreterTest,DeadlineSettingLocalBeforeNext)53 TEST_F(FilterInterpreterTest, DeadlineSettingLocalBeforeNext) {
54 stime_t timeout_val =
55 interpreter.SetNextDeadlineAndReturnTimeoutVal(10000.0, 10001.0, 2.0);
56 EXPECT_FLOAT_EQ(1.0, timeout_val);
57 EXPECT_FLOAT_EQ(10002.0, interpreter.next_timer_deadline_);
58
59 EXPECT_FALSE(interpreter.ShouldCallNextTimer(10001.0));
60 }
61
TEST_F(FilterInterpreterTest,DeadlineSettingNextBeforeLocal)62 TEST_F(FilterInterpreterTest, DeadlineSettingNextBeforeLocal) {
63 stime_t timeout_val =
64 interpreter.SetNextDeadlineAndReturnTimeoutVal(10000.0, 10002.0, 1.0);
65 EXPECT_FLOAT_EQ(1.0, timeout_val);
66 EXPECT_FLOAT_EQ(10001.0, interpreter.next_timer_deadline_);
67
68 EXPECT_TRUE(interpreter.ShouldCallNextTimer(10002.0));
69 }
70
71 } // namespace gestures
72