Skip to content

Commit f1b521e

Browse files
Merge pull request firmata#365 from firmata/string-parser-test
add tests for sending and receiving strings
2 parents f18eb75 + f1bd40f commit f1b521e

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

test/firmata_test/firmata_test.ino

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ void setupDigitalPort()
5858
_digitalPortValue = 0;
5959
}
6060

61+
char * _receivedString;
62+
void handleStringCallback(char *str)
63+
{
64+
_receivedString = str;
65+
}
66+
6167
test(processWriteDigital_0)
6268
{
6369
setupDigitalPort();
@@ -134,3 +140,33 @@ test(setFirmwareVersionDoesNotLeakMemory)
134140

135141
assertEqual(0, initialMemory - freeMemory());
136142
}
143+
144+
test(sendStringShouldEncode2BytesPerChar)
145+
{
146+
FakeStream stream;
147+
Firmata.begin(stream);
148+
// reset the buffer because the firmware name string will be sent on Firmata.begin
149+
stream.reset();
150+
151+
char testString[] = "hi!";
152+
Firmata.sendString(testString);
153+
154+
byte expected[] = { START_SYSEX, STRING_DATA, 'h', 0, 'i', 0, '!', 0, END_SYSEX };
155+
156+
int len = stream.bytesWritten().length();
157+
assertEqual(sizeof(expected), len);
158+
for (byte i = 0; i < len; i++) {
159+
assertEqual(expected[i], (byte)stream.bytesWritten().charAt(i));
160+
}
161+
}
162+
163+
test(receivedStringShouldDecodeFrom2BytesPerChar)
164+
{
165+
Firmata.attach(STRING_DATA, handleStringCallback);
166+
167+
byte message[] = { START_SYSEX, STRING_DATA, 'b', 0, 'y', 0, 'e', 0, '!', 0, END_SYSEX };
168+
processMessage(message, 11);
169+
170+
assertEqual("bye!", _receivedString);
171+
}
172+

0 commit comments

Comments
 (0)