diff options
-rw-r--r-- | src/isotp/isotp.c | 3 | ||||
-rw-r--r-- | tests/test_receive.c | 11 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/isotp/isotp.c b/src/isotp/isotp.c index 67a5df17..e233d386 100644 --- a/src/isotp/isotp.c +++ b/src/isotp/isotp.c @@ -56,6 +56,9 @@ IsoTpMessage isotp_receive_can_frame(IsoTpShims* shims, IsoTpHandle* handle, return message; } } else if(handle->type == ISOTP_HANDLE_SENDING) { + // TODO this will need to be tested when we add multi-frame support, + // which is when it'll be necessary to pass in CAN messages to SENDING + // handles. if(handle->send_handle.receiving_arbitration_id != arbitration_id) { if(shims->log != NULL) { shims->log("The arb ID 0x%x doesn't match the expected tx continuation ID 0x%x", diff --git a/tests/test_receive.c b/tests/test_receive.c index d8c2392e..95afb949 100644 --- a/tests/test_receive.c +++ b/tests/test_receive.c @@ -25,6 +25,16 @@ extern uint8_t last_message_sent_payload_size; extern void setup(); +START_TEST (test_receive_empty_can_message) +{ + const uint8_t data[CAN_MESSAGE_BYTE_SIZE] = {0}; + fail_if(HANDLE.completed); + IsoTpMessage message = isotp_receive_can_frame(&SHIMS, &HANDLE, 0x100, data, 0); + fail_if(message.completed); + fail_if(message_was_received); +} +END_TEST + START_TEST (test_receive_wrong_id) { const uint8_t data[CAN_MESSAGE_BYTE_SIZE] = {0}; @@ -79,6 +89,7 @@ Suite* testSuite(void) { tcase_add_test(tc_core, test_receive_bad_pci); tcase_add_test(tc_core, test_receive_single_frame); tcase_add_test(tc_core, test_receive_single_frame_empty_payload); + tcase_add_test(tc_core, test_receive_empty_can_message); suite_add_tcase(s, tc_core); return s; |