From a398a0b679ed8dd84752cab14c8c1a6ec6e89c32 Mon Sep 17 00:00:00 2001 From: Matt Way Date: Sat, 13 Apr 2024 17:26:52 +1000 Subject: [PATCH] Add more parser tests --- .../test_packet_parser/test_packet_parser.cpp | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/test/test_packet_parser/test_packet_parser.cpp b/test/test_packet_parser/test_packet_parser.cpp index 8951091..16a3358 100644 --- a/test/test_packet_parser/test_packet_parser.cpp +++ b/test/test_packet_parser/test_packet_parser.cpp @@ -59,12 +59,110 @@ void test_parse_open() delete[] packet_data; } +void test_parse_rolling_codes() +{ + const uint8_t* packet_data = hex_string_to_array("C01100056CFFFF369E86063C0400369E525300"); + Packet packet; + + run_parse_test(packet_data, packet); + + TEST_ASSERT_EQUAL_HEX8_MESSAGE(0x6C, packet.rollingCode1, "Rolling Code 1"); + TEST_ASSERT_EQUAL_HEX8_MESSAGE(0x3C, packet.rollingCode2, "Rolling Code 2"); + + delete[] packet_data; +} + +void test_broadcast_source_address() +{ + const uint8_t* packet_data = hex_string_to_array("C01100056CFFFF369E86063C0400369E525300"); + + Packet packet; + + run_parse_test(packet_data, packet); + + auto header = std::get(packet.header); + + TEST_ASSERT_EQUAL_HEX16(0x369E, header.source); + + delete[] packet_data; +} + +void test_broadcast_single_group() +{ + const uint8_t* packet_data = hex_string_to_array("C01100056CFFFF369E86063C0400369E525300"); + + Packet packet; + + run_parse_test(packet_data, packet); + + auto header = std::get(packet.header); + + TEST_ASSERT_EQUAL_MESSAGE(1, header.groups.size(), "Group count"); + TEST_ASSERT_EQUAL_INT8_MESSAGE(4, header.groups[0], "Group at offset 0"); + + delete[] packet_data; +} + +void test_broadcast_multiple_groups() +{ + const uint8_t* packet_data = hex_string_to_array("C01100056CFFFF369E86063C03040500369E525300"); + + Packet packet; + + run_parse_test(packet_data, packet); + + auto header = std::get(packet.header); + + TEST_ASSERT_EQUAL_MESSAGE(3, header.groups.size(), "Group count"); + TEST_ASSERT_EQUAL_INT8_MESSAGE(3, header.groups[0], "Group at offset 0"); + TEST_ASSERT_EQUAL_INT8_MESSAGE(4, header.groups[1], "Group at offset 1"); + TEST_ASSERT_EQUAL_INT8_MESSAGE(5, header.groups[2], "Group at offset 2"); + + delete[] packet_data; +} + +void test_unicast_source_address() +{ + const uint8_t* packet_data = hex_string_to_array("C019000592FFFF72CB85054E4EF100003F5A023F50023F4D023F54"); + + Packet packet; + + run_parse_test(packet_data, packet); + + auto header = std::get(packet.header); + + TEST_ASSERT_EQUAL_HEX16(0x0000, header.source); + + delete[] packet_data; +} + +void test_unicast_destination_address() +{ + const uint8_t* packet_data = hex_string_to_array("C019000592FFFF72CB85054E4EF100003F5A023F50023F4D023F54"); + + Packet packet; + + run_parse_test(packet_data, packet); + + auto header = std::get(packet.header); + + TEST_ASSERT_EQUAL_HEX16(0x4EF1, header.destination); + + delete[] packet_data; +} + int runUnityTests(void) { UNITY_BEGIN(); RUN_TEST(test_parse_stop); RUN_TEST(test_parse_close); RUN_TEST(test_parse_open); + RUN_TEST(test_parse_rolling_codes); + RUN_TEST(test_broadcast_source_address); + RUN_TEST(test_broadcast_single_group); + RUN_TEST(test_broadcast_multiple_groups); + RUN_TEST(test_unicast_source_address); + RUN_TEST(test_unicast_destination_address); return UNITY_END(); }