From: Steinar H. Gunderson Date: Sat, 3 Jan 2009 01:19:56 +0000 (+0100) Subject: Add a bytesource test for broken markers. X-Git-Url: https://git.sesse.net/?p=fjl;a=commitdiff_plain;h=56ceb8f3300b0ee121bddf572f935f87feedfea8 Add a bytesource test for broken markers. --- diff --git a/bytesource_test.c b/bytesource_test.c index 79c242a..4dc7661 100644 --- a/bytesource_test.c +++ b/bytesource_test.c @@ -31,7 +31,7 @@ ssize_t custom_read_slow(void* userdata, uint8_t* buf, size_t count) } // Two streams, separated by a marker. -uint8_t bytes[] = { +uint8_t stream_bytes[] = { 0x01, 0x02, 0x03, 0xff, 0x00, 0x04, // some bytes 0xff, 0xf7, // a marker 0x05, 0x06, 0x07, 0x08, 0xff, 0x00 // more bytes @@ -49,8 +49,8 @@ uint8_t second_stream[] = { void test_basic_reading() { struct custom_read_userdata ud; - ud.bytes = bytes; - ud.bytes_left = sizeof(bytes); + ud.bytes = stream_bytes; + ud.bytes_left = sizeof(stream_bytes); struct byte_source source; init_byte_source(&source, custom_read, &ud); @@ -84,8 +84,8 @@ void test_basic_reading() void test_slow_source() { struct custom_read_userdata ud; - ud.bytes = bytes; - ud.bytes_left = sizeof(bytes); + ud.bytes = stream_bytes; + ud.bytes_left = sizeof(stream_bytes); struct byte_source source; init_byte_source(&source, custom_read_slow, &ud); @@ -123,6 +123,31 @@ void test_slow_source() assert(ret == 0); } +// Data with a truncated marker should first give the first bytes, then failure +// on next read since the stream EOFs. +void test_broken_marker() +{ + uint8_t bytes[] = { 0x01, 0x02, 0x03, 0x04, 0xff }; + uint8_t expected_bytes[] = { 0x01, 0x02, 0x03, 0x04 }; + + struct custom_read_userdata ud; + ud.bytes = bytes; + ud.bytes_left = sizeof(bytes); + + struct byte_source source; + init_byte_source(&source, custom_read, &ud); + + uint8_t buf[4096]; + ssize_t ret; + + ret = byte_source_input_func(&source, buf, 4096); + assert(ret == sizeof(expected_bytes)); + assert(memcmp(buf, expected_bytes, sizeof(expected_bytes)) == 0); + + ret = byte_source_input_func(&source, buf, 4096); + assert(ret == -1); +} + int main(void) { init_choices(); @@ -133,6 +158,9 @@ int main(void) printf("test_slow_source()\n"); test_slow_source(); + printf("test_broken_marker()\n"); + test_broken_marker(); + printf("All tests pass.\n"); return 0; }