blob: 1fbe1cb2a1e5c15748ba7764f17fb13e222d9fac [file] [log] [blame]
Jeremy Kerrc9775ce2017-02-07 16:25:34 +08001
2#include <stdlib.h>
3#include <stdint.h>
4#include <stdio.h>
5
6#include "ringbuffer.c"
7#include "ringbuffer-test-utils.c"
8
9void test_contained_offset_read(void)
10{
11 uint8_t *out_buf, in_buf[] = { 'a', 'b', 'c' };
12 struct ringbuffer_consumer *rbc;
13 struct ringbuffer *rb;
14 size_t len;
Andrew Jeffery8f548f62023-04-18 11:48:49 +093015 size_t i;
16 int rc;
Jeremy Kerrc9775ce2017-02-07 16:25:34 +080017
18 rb = ringbuffer_init(10);
19 rbc = ringbuffer_consumer_register(rb, ringbuffer_poll_nop, NULL);
20
21 rc = ringbuffer_queue(rb, in_buf, sizeof(in_buf));
22 assert(!rc);
23
24 /* test all possible offsets */
25 for (i = 0; i <= sizeof(in_buf); i++) {
26 len = ringbuffer_dequeue_peek(rbc, i, &out_buf);
27 assert(len == sizeof(in_buf) - i);
Andrew Jeffery2834c5b2023-04-19 12:47:09 +093028 if (len) {
Jeremy Kerrc9775ce2017-02-07 16:25:34 +080029 assert(!memcmp(in_buf + i, out_buf, len));
Andrew Jeffery2834c5b2023-04-19 12:47:09 +093030 }
Jeremy Kerrc9775ce2017-02-07 16:25:34 +080031 }
32
33 ringbuffer_fini(rb);
34}
35
36int main(void)
37{
38 test_contained_offset_read();
39 return EXIT_SUCCESS;
40}