forked from Arduino-CI/arduino_ci
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqueue.cpp
106 lines (87 loc) · 2.2 KB
/
queue.cpp
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <ArduinoUnitTests.h>
#include <MockEventQueue.h>
#include "fibonacciClock.h"
unittest(basic_queue_dequeue_and_size)
{
MockEventQueue<int> q;
int data[5] = {11, 22, 33, 44, 55};
assertTrue(q.empty());
for (int i = 0; i < 5; ++i) {
assertEqual(i, q.size());
q.push(data[i]);
assertEqual(data[i], q.backData());
assertEqual(0, q.backTime()); // we didn't provide a function, so it should default to 0
assertEqual(i + 1, q.size());
}
for (int i = 0; i < 5; ++i) {
assertEqual(5 - i, q.size());
assertEqual(data[i], q.frontData());
q.pop();
assertEqual(5 - i - 1, q.size());
}
assertTrue(q.empty());
}
unittest(copy_constructor)
{
MockEventQueue<int> q;
int data[5] = {11, 22, 33, 44, 55};
for (int i = 0; i < 5; ++i) q.push(data[i]);
MockEventQueue<int> q2(q);
for (int i = 0; i < 5; ++i) {
assertEqual(5 - i, q2.size());
assertEqual(data[i], q2.frontData());
q2.pop();
assertEqual(5 - i - 1, q2.size());
}
for (int i = 0; i < 5; ++i) {
assertEqual(5 - i, q.size());
assertEqual(data[i], q.frontData());
q.pop();
assertEqual(5 - i - 1, q.size());
}
}
unittest(boundaries)
{
MockEventQueue<int> q;
int data[2] = {11, 22};
for (int i = 0; i < 2; ++i) q.push(data[i]);
assertEqual(2, q.size());
q.pop();
assertEqual(1, q.size());
q.pop();
assertEqual(0, q.size());
q.pop();
assertEqual(0, q.size());
}
unittest(timed_events)
{
MockEventQueue<int> q;
int data[7] = {4, 50, 600, 8555, 9000, 9001, 1000000000};
for (int i = 0; i < 7; ++i) {
q.push(data[i], data[i]);
assertEqual(data[i], q.backData());
assertEqual(data[i], q.backTime());
}
for (int i = 0; i < 7; ++i) {
assertEqual(data[i], q.frontData());
assertEqual(data[i], q.frontTime());
q.pop();
}
}
unittest(clocked_events)
{
resetFibClock();
MockEventQueue<int> q(fibMicros);
int data[7] = {1, 1, 2, 3, 5, 8, 13}; //eureka
for (int i = 0; i < 7; ++i) {
q.push(data[i]);
assertEqual(data[i], q.backData());
assertEqual(data[i], q.backTime());
}
for (int i = 0; i < 7; ++i) {
assertEqual(data[i], q.frontData());
assertEqual(data[i], q.frontTime());
q.pop();
}
}
unittest_main()