]> sigrok.org Git - libsigrok.git/commitdiff
tests: cover length checking incrementing endianess readers
authorGerhard Sittig <redacted>
Sun, 19 Mar 2023 19:17:21 +0000 (20:17 +0100)
committerGerhard Sittig <redacted>
Sun, 19 Mar 2023 21:40:07 +0000 (22:40 +0100)
tests/conv.c

index 551365e2a40fc98f62a544c18a3a9752e9cab8fa..788c36728c37723581e3edc2a3825409458ce989 100644 (file)
@@ -114,6 +114,36 @@ START_TEST(test_endian_read)
 }
 END_TEST
 
+START_TEST(test_endian_read_inc_len)
+{
+       const uint8_t *p;
+       size_t l;
+
+       /* Position to the start of the input stream. */
+       p = &buff1234[0];
+       l = sizeof(buff1234);
+
+       /* Read several fields of known type and values. */
+       fail_unless(l == 8);
+       fail_unless(read_u8_inc_len(&p, &l) == 0x11);
+       fail_unless(l == 7);
+       fail_unless(read_u8_inc_len(&p, &l) == 0x22);
+       fail_unless(l == 6);
+       fail_unless(read_u16le_inc_len(&p, &l) == 0x4433);
+       fail_unless(l == 4);
+       fail_unless(read_u16le_inc_len(&p, &l) == 0x6655);
+       fail_unless(l == 2);
+       fail_unless(read_u16le_inc_len(&p, &l) == 0x8877);
+       fail_unless(l == 0);
+
+       /* Read beyond the end of the input stream. */
+       fail_unless(read_u8_inc_len(&p, &l) == 0x0);
+       fail_unless(l == 0);
+       fail_unless(read_u16le_inc_len(&p, &l) == 0x0);
+       fail_unless(l == 0);
+}
+END_TEST
+
 START_TEST(test_endian_read_inc)
 {
        const uint8_t *p;
@@ -249,6 +279,7 @@ Suite *suite_conv(void)
        tcase_add_test(tc, test_endian_macro);
        tcase_add_test(tc, test_endian_read);
        tcase_add_test(tc, test_endian_read_inc);
+       tcase_add_test(tc, test_endian_read_inc_len);
        tcase_add_test(tc, test_endian_write);
        tcase_add_test(tc, test_endian_write_inc);
        suite_add_tcase(s, tc);