1
1
#include < ArduinoUnitTests.h>
2
2
#include < Arduino.h>
3
+ #include " fibonacciClock.h"
3
4
4
5
GodmodeState* state = GODMODE();
5
6
6
- unittest_setup ()
7
- {
7
+ unittest_setup () {
8
+ resetFibClock ();
8
9
state->reset ();
9
10
}
10
11
11
- unittest (millis_micros_and_delay)
12
- {
12
+ unittest (millis_micros_and_delay) {
13
13
assertEqual (0 , millis ());
14
14
assertEqual (0 , micros ());
15
15
delay (3 );
@@ -20,8 +20,7 @@ unittest(millis_micros_and_delay)
20
20
assertEqual (14000 , micros ());
21
21
}
22
22
23
- unittest (random)
24
- {
23
+ unittest (random) {
25
24
randomSeed (1 );
26
25
assertEqual (state->seed , 1 );
27
26
@@ -37,8 +36,7 @@ unittest(random)
37
36
assertEqual (state->seed , 4294967282 );
38
37
}
39
38
40
- unittest (pins)
41
- {
39
+ unittest (pins) {
42
40
pinMode (1 , OUTPUT); // this is a no-op in unit tests. it's just here to prove compilation
43
41
digitalWrite (1 , HIGH);
44
42
assertEqual (HIGH, state->digitalPin [1 ]);
@@ -64,8 +62,7 @@ unittest(pins)
64
62
assertEqual (56 , analogRead (1 ));
65
63
}
66
64
67
- unittest (pin_read_history)
68
- {
65
+ unittest (pin_read_history) {
69
66
int future[6 ] = {33 , 22 , 55 , 11 , 44 , 66 };
70
67
state->analogPin [1 ].fromArray (future, 6 );
71
68
for (int i = 0 ; i < 6 ; ++i)
@@ -88,20 +85,20 @@ unittest(pin_read_history)
88
85
}
89
86
}
90
87
91
- unittest (pin_write_history)
92
- {
88
+ unittest (digital_pin_write_history_with_timing) {
93
89
int numMoved;
90
+ bool expectedD[6 ] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
91
+ bool actualD[6 ];
92
+ unsigned long expectedT[6 ] = {0 , 1 , 1 , 2 , 3 , 5 };
93
+ unsigned long actualT[6 ];
94
94
95
- // history for digital pin
96
- digitalWrite (1 , HIGH);
97
- digitalWrite (1 , LOW);
98
- digitalWrite (1 , LOW);
99
- digitalWrite (1 , HIGH);
100
- digitalWrite (1 , HIGH);
95
+ // history for digital pin. start from 1 since LOW is the initial value
96
+ for (int i = 1 ; i < 6 ; ++i) {
97
+ state->micros = fibMicros ();
98
+ digitalWrite (1 , expectedD[i]);
99
+ }
101
100
102
101
assertEqual (6 , state->digitalPin [1 ].historySize ());
103
- bool expectedD[6 ] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
104
- bool actualD[6 ];
105
102
numMoved = state->digitalPin [1 ].toArray (actualD, 6 );
106
103
assertEqual (6 , numMoved);
107
104
// assert non-destructive
@@ -113,6 +110,19 @@ unittest(pin_write_history)
113
110
assertEqual (expectedD[i], actualD[i]);
114
111
}
115
112
113
+ numMoved = state->digitalPin [1 ].toTimestampArray (actualT, 6 );
114
+ assertEqual (6 , numMoved);
115
+ for (int i = 0 ; i < numMoved; ++i)
116
+ {
117
+ assertEqual (expectedT[i], actualT[i]);
118
+ }
119
+ }
120
+
121
+ unittest (analog_pin_write_history) {
122
+ int numMoved;
123
+ int expectedA[6 ] = {0 , 11 , 22 , 33 , 44 , 55 };
124
+ int actualA[6 ];
125
+
116
126
// history for analog pin
117
127
analogWrite (1 , 11 );
118
128
analogWrite (1 , 22 );
@@ -121,8 +131,7 @@ unittest(pin_write_history)
121
131
analogWrite (1 , 55 );
122
132
123
133
assertEqual (6 , state->analogPin [1 ].historySize ());
124
- int expectedA[6 ] = {0 , 11 , 22 , 33 , 44 , 55 };
125
- int actualA[6 ];
134
+
126
135
numMoved = state->analogPin [1 ].toArray (actualA, 6 );
127
136
assertEqual (6 , numMoved);
128
137
// assert non-destructive
@@ -133,7 +142,9 @@ unittest(pin_write_history)
133
142
{
134
143
assertEqual (expectedA[i], actualA[i]);
135
144
}
145
+ }
136
146
147
+ unittest (ascii_pin_write_history) {
137
148
// digitial history as serial data, big-endian
138
149
bool binaryAscii[24 ] = {
139
150
0 , 1 , 0 , 1 , 1 , 0 , 0 , 1 ,
@@ -207,8 +218,7 @@ unittest(spi) {
207
218
}
208
219
}
209
220
210
- unittest (does_nothing_if_no_data)
211
- {
221
+ unittest (does_nothing_if_no_data) {
212
222
int myPin = 3 ;
213
223
state->serialPort [0 ].dataIn = " " ;
214
224
state->serialPort [0 ].dataOut = " " ;
@@ -218,8 +228,7 @@ unittest(spi) {
218
228
assertEqual (" " , state->serialPort [0 ].dataOut );
219
229
}
220
230
221
- unittest (keeps_pin_low_and_acks)
222
- {
231
+ unittest (keeps_pin_low_and_acks) {
223
232
int myPin = 3 ;
224
233
state->serialPort [0 ].dataIn = " 0" ;
225
234
state->serialPort [0 ].dataOut = " " ;
@@ -230,8 +239,7 @@ unittest(spi) {
230
239
assertEqual (" Ack 3 0" , state->serialPort [0 ].dataOut );
231
240
}
232
241
233
- unittest (flips_pin_high_and_acks)
234
- {
242
+ unittest (flips_pin_high_and_acks) {
235
243
int myPin = 3 ;
236
244
state->serialPort [0 ].dataIn = " 1" ;
237
245
state->serialPort [0 ].dataOut = " " ;
@@ -242,8 +250,7 @@ unittest(spi) {
242
250
assertEqual (" Ack 3 1" , state->serialPort [0 ].dataOut );
243
251
}
244
252
245
- unittest (two_flips)
246
- {
253
+ unittest (two_flips) {
247
254
int myPin = 3 ;
248
255
state->serialPort [0 ].dataIn = " 10junk" ;
249
256
state->serialPort [0 ].dataOut = " " ;
0 commit comments