altos/test: Add FEC test for simple 'hello' message
authorKeith Packard <keithp@keithp.com>
Fri, 19 Apr 2024 21:07:50 +0000 (14:07 -0700)
committerKeith Packard <keithp@keithp.com>
Fri, 19 Apr 2024 21:07:50 +0000 (14:07 -0700)
This just tests the FEC code using a slightly different data source
that makes sure odd lengths work correctly.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/test/ao_fec_test.c

index 5f234285c11d5ae0f08f39d48cddceac9e5c8636..7c4e6f0e627283ed08f8d7214d20592ad8f42704 100644 (file)
@@ -303,6 +303,29 @@ ao_real_packet(void)
        return ok;
 }
 
+int
+ao_hello_packet(void)
+{
+       uint8_t message[5] = "hello";
+       uint8_t encode[ENCODE_LEN(sizeof(message))];
+       int encode_len;
+       uint8_t transmit[EXPAND_LEN(sizeof(message))];
+       uint8_t decode[DECODE_LEN(sizeof(message))];
+       int transmit_len;
+       int decode_ok;
+
+       printf("Hello packet test:\n");
+       ao_fec_dump_bytes(message, sizeof(message), "Message");
+       encode_len = ao_fec_encode(message, sizeof(message), encode);
+       ao_fec_dump_bytes(encode, encode_len, "Encode");
+       transmit_len = ao_expand(encode, encode_len, transmit);
+       ao_fec_dump_bytes(transmit, transmit_len, "Transmit");
+       decode_ok = ao_fec_decode(transmit, transmit_len, decode, sizeof(message) + 2, NULL);
+       ao_fec_dump_bytes(decode, sizeof(message) + 2, "Receive");
+       printf("Hello result: %s\n", decode_ok ? "success" : "fail");
+       return decode_ok;
+}
+
 #define EXPECT_DECODE_FAIL     0
 #define EXPECT_CRC_MISMATCH    6304
 #define EXPECT_DATA_MISMATCH   0
@@ -336,6 +359,9 @@ main(int argc, char **argv)
        if (!ao_real_packet())
                errors++;
 
+       if (!ao_hello_packet())
+               errors++;
+
        srandom(0);
        for (trial = 0; trial < 100000; trial++) {