summaryrefslogtreecommitdiffstats
path: root/serial_link/tests
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2016-02-14 13:25:54 +0100
committerFred Sundvik <fsundvik@gmail.com>2016-02-14 13:25:54 +0100
commiteefb5b5634e341396fb535f4eeac1323bf716ed0 (patch)
tree2b9e4e7773add5436d5b296dcf8e11ba440b1735 /serial_link/tests
parentce3a21cbeaa58cfa6b117a8be13be47a69f086ae (diff)
downloadqmk_firmware-eefb5b5634e341396fb535f4eeac1323bf716ed0.tar.gz
qmk_firmware-eefb5b5634e341396fb535f4eeac1323bf716ed0.tar.xz
Mutiple frame handling for byte stuffer
Also handles unexpected data.
Diffstat (limited to 'serial_link/tests')
-rw-r--r--serial_link/tests/byte_stuffer_tests.c53
1 files changed, 52 insertions, 1 deletions
diff --git a/serial_link/tests/byte_stuffer_tests.c b/serial_link/tests/byte_stuffer_tests.c
index 2fc7a0b26..74a349b1f 100644
--- a/serial_link/tests/byte_stuffer_tests.c
+++ b/serial_link/tests/byte_stuffer_tests.c
@@ -72,7 +72,7 @@ Ensure(ByteStuffer, receives_three_bytes_valid_frame) {
when(size, is_equal_to(3)),
when(data, is_equal_to_contents_of(expected, 3))
);
- recv_byte(&state, 5);
+ recv_byte(&state, 4);
recv_byte(&state, 0x37);
recv_byte(&state, 0x99);
recv_byte(&state, 0xFF);
@@ -103,3 +103,54 @@ Ensure(ByteStuffer, receives_valid_frame_with_zeroes) {
recv_byte(&state, 1);
recv_byte(&state, 0);
}
+
+Ensure(ByteStuffer, receives_two_valid_frames) {
+ uint8_t expected1[] = {5, 0};
+ uint8_t expected2[] = {3};
+ expect(recv_frame,
+ when(size, is_equal_to(2)),
+ when(data, is_equal_to_contents_of(expected1, 2))
+ );
+ expect(recv_frame,
+ when(size, is_equal_to(1)),
+ when(data, is_equal_to_contents_of(expected2, 1))
+ );
+ recv_byte(&state, 2);
+ recv_byte(&state, 5);
+ recv_byte(&state, 1);
+ recv_byte(&state, 0);
+ recv_byte(&state, 2);
+ recv_byte(&state, 3);
+ recv_byte(&state, 0);
+}
+
+Ensure(ByteStuffer, receives_valid_frame_after_unexpected_zero) {
+ uint8_t expected[] = {5, 7};
+ expect(recv_frame,
+ when(size, is_equal_to(2)),
+ when(data, is_equal_to_contents_of(expected, 2))
+ );
+ recv_byte(&state, 3);
+ recv_byte(&state, 1);
+ recv_byte(&state, 0);
+ recv_byte(&state, 3);
+ recv_byte(&state, 5);
+ recv_byte(&state, 7);
+ recv_byte(&state, 0);
+}
+
+Ensure(ByteStuffer, receives_valid_frame_after_unexpected_non_zero) {
+ uint8_t expected[] = {5, 7};
+ expect(recv_frame,
+ when(size, is_equal_to(2)),
+ when(data, is_equal_to_contents_of(expected, 2))
+ );
+ recv_byte(&state, 2);
+ recv_byte(&state, 9);
+ recv_byte(&state, 4); // This should have been zero
+ recv_byte(&state, 0);
+ recv_byte(&state, 3);
+ recv_byte(&state, 5);
+ recv_byte(&state, 7);
+ recv_byte(&state, 0);
+}