-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFifoBuffer_Tests.h
More file actions
76 lines (68 loc) · 1.89 KB
/
FifoBuffer_Tests.h
File metadata and controls
76 lines (68 loc) · 1.89 KB
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
#include "Test_Framework.h"
FifoBuffer buf;
bool fillFifoTest() {
byte i;
for (i=0;i<FIFO_BUFFER_SIZE;i++) {
if (buf.push(i)) {
if (buf.count != i+1) {
return false;
}
} else {
return false;
}
}
return true;
}
bool unfillFifoTest() {
byte b,i;
for (i=0;i<FIFO_BUFFER_SIZE;i++) {
if (buf.pop(&b)) {
if (b != i) {
return false;
} else {
if (buf.count != (FIFO_BUFFER_SIZE - i - 1)) {
return false;
}
}
} else {
return false;
}
}
return (buf.count == 0);
}
bool fifoOverflowTest() {
byte i;
for (i=0;i<FIFO_BUFFER_SIZE;i++) {
if (buf.isFull())
return false;
buf.push(i);
}
if (!buf.isFull())
return false;
return !buf.push(99);
}
bool fifoClearTest() {
if (buf.isFull()) {
buf.clear();
return (buf.count == 0);
} else {
return false;
}
}
void runFifoTests() {
byte b;
printTestTitle("FIFO Buffer");
printTestResult("Init Count to Zero",buf.count==0);
printTestResult("Push Number #1",(buf.push(1) && (buf.count == 1)));
printTestResult("Pop Number #1",(buf.pop(&b) && (b == 1) && (buf.count == 0)));
printTestResult("Push Number #2",(buf.push(2) && (buf.count == 1)));
printTestResult("Pop Number #2",(buf.pop(&b) && (b == 2) && (buf.count == 0)));
printTestResult("Push Number #3",(buf.push(3) && (buf.count == 1) && buf.push(4) && (buf.count == 2)));
printTestResult("Pop Number #3a",(buf.pop(&b) && (b == 3) && (buf.count == 1)));
printTestResult("Pop Number #3b",(buf.pop(&b) && (b == 4) && (buf.count == 0)));
printTestResult("Fill Fifo Test",fillFifoTest());
printTestResult("Unfill Fifo Test",unfillFifoTest());
printTestResult("Fifo Overflow Test",fifoOverflowTest());
printTestResult("Clear Test",fifoClearTest());
printTestResult("Underflow Test",((buf.count==0) && (!buf.pop(&b)) && (buf.count==0)));
}