11#include < ArduinoUnitTests.h>
22#include < Arduino.h>
3+ #include " fibonacciClock.h"
34
45GodmodeState* state = GODMODE();
56
6- unittest_setup ()
7- {
7+ unittest_setup () {
8+ resetFibClock ();
89 state->reset ();
910}
1011
11- unittest (millis_micros_and_delay)
12- {
12+ unittest (millis_micros_and_delay) {
1313 assertEqual (0 , millis ());
1414 assertEqual (0 , micros ());
1515 delay (3 );
@@ -20,8 +20,7 @@ unittest(millis_micros_and_delay)
2020 assertEqual (14000 , micros ());
2121}
2222
23- unittest (random)
24- {
23+ unittest (random) {
2524 randomSeed (1 );
2625 assertEqual (state->seed , 1 );
2726
@@ -37,8 +36,7 @@ unittest(random)
3736 assertEqual (state->seed , 4294967282 );
3837}
3938
40- unittest (pins)
41- {
39+ unittest (pins) {
4240 pinMode (1 , OUTPUT); // this is a no-op in unit tests. it's just here to prove compilation
4341 digitalWrite (1 , HIGH);
4442 assertEqual (HIGH, state->digitalPin [1 ]);
@@ -64,8 +62,7 @@ unittest(pins)
6462 assertEqual (56 , analogRead (1 ));
6563}
6664
67- unittest (pin_read_history)
68- {
65+ unittest (pin_read_history) {
6966 int future[6 ] = {33 , 22 , 55 , 11 , 44 , 66 };
7067 state->analogPin [1 ].fromArray (future, 6 );
7168 for (int i = 0 ; i < 6 ; ++i)
@@ -88,20 +85,20 @@ unittest(pin_read_history)
8885 }
8986}
9087
91- unittest (pin_write_history)
92- {
88+ unittest (digital_pin_write_history_with_timing) {
9389 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 ];
9494
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+ }
101100
102101 assertEqual (6 , state->digitalPin [1 ].historySize ());
103- bool expectedD[6 ] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
104- bool actualD[6 ];
105102 numMoved = state->digitalPin [1 ].toArray (actualD, 6 );
106103 assertEqual (6 , numMoved);
107104 // assert non-destructive
@@ -113,6 +110,19 @@ unittest(pin_write_history)
113110 assertEqual (expectedD[i], actualD[i]);
114111 }
115112
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+
116126 // history for analog pin
117127 analogWrite (1 , 11 );
118128 analogWrite (1 , 22 );
@@ -121,8 +131,7 @@ unittest(pin_write_history)
121131 analogWrite (1 , 55 );
122132
123133 assertEqual (6 , state->analogPin [1 ].historySize ());
124- int expectedA[6 ] = {0 , 11 , 22 , 33 , 44 , 55 };
125- int actualA[6 ];
134+
126135 numMoved = state->analogPin [1 ].toArray (actualA, 6 );
127136 assertEqual (6 , numMoved);
128137 // assert non-destructive
@@ -133,7 +142,9 @@ unittest(pin_write_history)
133142 {
134143 assertEqual (expectedA[i], actualA[i]);
135144 }
145+ }
136146
147+ unittest (ascii_pin_write_history) {
137148 // digitial history as serial data, big-endian
138149 bool binaryAscii[24 ] = {
139150 0 , 1 , 0 , 1 , 1 , 0 , 0 , 1 ,
@@ -207,8 +218,7 @@ unittest(spi) {
207218 }
208219 }
209220
210- unittest (does_nothing_if_no_data)
211- {
221+ unittest (does_nothing_if_no_data) {
212222 int myPin = 3 ;
213223 state->serialPort [0 ].dataIn = " " ;
214224 state->serialPort [0 ].dataOut = " " ;
@@ -218,8 +228,7 @@ unittest(spi) {
218228 assertEqual (" " , state->serialPort [0 ].dataOut );
219229 }
220230
221- unittest (keeps_pin_low_and_acks)
222- {
231+ unittest (keeps_pin_low_and_acks) {
223232 int myPin = 3 ;
224233 state->serialPort [0 ].dataIn = " 0" ;
225234 state->serialPort [0 ].dataOut = " " ;
@@ -230,8 +239,7 @@ unittest(spi) {
230239 assertEqual (" Ack 3 0" , state->serialPort [0 ].dataOut );
231240 }
232241
233- unittest (flips_pin_high_and_acks)
234- {
242+ unittest (flips_pin_high_and_acks) {
235243 int myPin = 3 ;
236244 state->serialPort [0 ].dataIn = " 1" ;
237245 state->serialPort [0 ].dataOut = " " ;
@@ -242,8 +250,7 @@ unittest(spi) {
242250 assertEqual (" Ack 3 1" , state->serialPort [0 ].dataOut );
243251 }
244252
245- unittest (two_flips)
246- {
253+ unittest (two_flips) {
247254 int myPin = 3 ;
248255 state->serialPort [0 ].dataIn = " 10junk" ;
249256 state->serialPort [0 ].dataOut = " " ;
0 commit comments