Skip to content

Commit 956a455

Browse files
committed
add godmode tests for serial IO + digital
1 parent 3db234c commit 956a455

File tree

2 files changed

+78
-1
lines changed

2 files changed

+78
-1
lines changed

SampleProjects/TestSomething/test/good-godmode.cpp

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,77 @@ unittest(pins)
6565
assertEqual(56, analogRead(1));
6666
}
6767

68+
#ifdef HAVE_HWSERIAL0
69+
70+
void smartLightswitchSerialHandler(int pin) {
71+
if (Serial.available() > 0) {
72+
int incomingByte = Serial.read();
73+
int val = incomingByte == '0' ? LOW : HIGH;
74+
Serial.print("Ack ");
75+
digitalWrite(pin, val);
76+
Serial.print(String(pin));
77+
Serial.print(" ");
78+
Serial.print((char)incomingByte);
79+
}
80+
}
81+
82+
unittest(does_nothing_if_no_data)
83+
{
84+
GodmodeState* state = GODMODE();
85+
int myPin = 3;
86+
state->serialPort[0].dataIn = "";
87+
state->serialPort[0].dataOut = "";
88+
state->digitalPin[myPin] = LOW;
89+
smartLightswitchSerialHandler(myPin);
90+
assertEqual(LOW, state->digitalPin[myPin]);
91+
assertEqual("", state->serialPort[0].dataOut);
92+
}
93+
94+
unittest(keeps_pin_low_and_acks)
95+
{
96+
GodmodeState* state = GODMODE();
97+
int myPin = 3;
98+
state->serialPort[0].dataIn = "0";
99+
state->serialPort[0].dataOut = "";
100+
state->digitalPin[myPin] = LOW;
101+
smartLightswitchSerialHandler(myPin);
102+
assertEqual(LOW, state->digitalPin[myPin]);
103+
assertEqual("", state->serialPort[0].dataIn);
104+
assertEqual("Ack 3 0", state->serialPort[0].dataOut);
105+
}
106+
107+
unittest(flips_pin_high_and_acks)
108+
{
109+
GodmodeState* state = GODMODE();
110+
int myPin = 3;
111+
state->serialPort[0].dataIn = "1";
112+
state->serialPort[0].dataOut = "";
113+
state->digitalPin[myPin] = LOW;
114+
smartLightswitchSerialHandler(myPin);
115+
assertEqual(HIGH, state->digitalPin[myPin]);
116+
assertEqual("", state->serialPort[0].dataIn);
117+
assertEqual("Ack 3 1", state->serialPort[0].dataOut);
118+
}
119+
120+
unittest(two_flips)
121+
{
122+
GodmodeState* state = GODMODE();
123+
int myPin = 3;
124+
state->serialPort[0].dataIn = "10junk";
125+
state->serialPort[0].dataOut = "";
126+
state->digitalPin[myPin] = LOW;
127+
smartLightswitchSerialHandler(myPin);
128+
assertEqual(HIGH, state->digitalPin[myPin]);
129+
assertEqual("0junk", state->serialPort[0].dataIn);
130+
assertEqual("Ack 3 1", state->serialPort[0].dataOut);
131+
state->serialPort[0].dataOut = "";
132+
smartLightswitchSerialHandler(myPin);
133+
assertEqual(LOW, state->digitalPin[myPin]);
134+
assertEqual("junk", state->serialPort[0].dataIn);
135+
assertEqual("Ack 3 0", state->serialPort[0].dataOut);
136+
}
137+
#endif
138+
139+
140+
68141
unittest_main()

SampleProjects/TestSomething/test/good-serial.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,24 @@ unittest(serial_ports)
2424
assertEqual(-1, Serial.peek());
2525
assertEqual("", state->serialPort[0].dataIn);
2626
assertEqual("", state->serialPort[0].dataOut);
27+
2728
state->serialPort[0].dataIn = "a";
2829
assertEqual('a', Serial.peek());
2930
assertEqual("a", state->serialPort[0].dataIn);
3031
assertEqual("", state->serialPort[0].dataOut);
32+
3133
assertEqual('a', Serial.read());
3234
assertEqual("", state->serialPort[0].dataIn);
3335
assertEqual("", state->serialPort[0].dataOut);
36+
3437
Serial.write('b');
3538
assertEqual("", state->serialPort[0].dataIn);
3639
assertEqual("b", state->serialPort[0].dataOut);
40+
3741
Serial.print("cdefg");
3842
assertEqual("", state->serialPort[0].dataIn);
3943
assertEqual("bcdefg", state->serialPort[0].dataOut);
40-
}
44+
}
4145

4246
#endif
4347

0 commit comments

Comments
 (0)