]>
git.ipfire.org Git - thirdparty/bird.git/blob - lib/buffer_test.c
2 * BIRD Library -- Buffer Tests
4 * (c) 2015 CZ.NIC z.s.p.o.
6 * Can be freely distributed and used under the terms of the GNU GPL.
11 #include "test/birdtest.h"
13 #include "lib/buffer.h"
17 typedef BUFFER(int) buffer_int
;
18 static int expected
[MAX_NUM
];
19 static buffer_int buf
;
20 static struct pool
*buffer_pool
;
23 show_buf(buffer_int
*b
)
26 bt_debug(".used = %d, .size = %d\n", b
->used
, b
->size
);
28 for (i
= 0; i
< b
->used
; i
++)
29 bt_debug(" .data[%3u] = %-16d expected %-16d %s\n", i
, b
->data
[i
], expected
[i
], (b
->data
[i
] == expected
[i
] ? "OK" : "FAIL!"));
33 fill_expected_array(void)
37 for (i
= 0; i
< MAX_NUM
; i
++)
38 expected
[i
] = bt_random();
45 buffer_pool
= &root_pool
;
46 BUFFER_INIT(buf
, buffer_pool
, MAX_NUM
);
50 is_buffer_as_expected(buffer_int
*b
)
55 for (i
= 0; i
< MAX_NUM
; i
++)
56 bt_assert(b
->data
[i
] == expected
[i
]);
66 fill_expected_array();
68 for (i
= 0; i
< MAX_NUM
; i
++)
69 BUFFER_PUSH(buf
) = expected
[i
];
70 is_buffer_as_expected(&buf
);
81 fill_expected_array();
83 /* POP a half of elements */
84 for (i
= 0; i
< MAX_NUM
; i
++)
85 BUFFER_PUSH(buf
) = expected
[i
];
86 for (i
= MAX_NUM
-1; i
>= MAX_NUM
/2; i
--)
88 for (i
= MAX_NUM
/2; i
< MAX_NUM
; i
++)
89 BUFFER_PUSH(buf
) = expected
[i
] = bt_random();
90 is_buffer_as_expected(&buf
);
92 /* POP all of elements */
93 for (i
= MAX_NUM
-1; i
>= 0; i
--)
95 bt_assert(buf
.used
== 0);
96 for (i
= 0; i
< MAX_NUM
; i
++)
97 BUFFER_PUSH(buf
) = expected
[i
];
98 is_buffer_as_expected(&buf
);
104 t_buffer_resize(void)
109 BUFFER_INIT(buf
, buffer_pool
, 0);
110 fill_expected_array();
112 for (i
= 0; i
< MAX_NUM
; i
++)
113 BUFFER_PUSH(buf
) = expected
[i
];
114 is_buffer_as_expected(&buf
);
115 bt_assert(buf
.size
>= MAX_NUM
);
126 fill_expected_array();
127 for (i
= 0; i
< MAX_NUM
; i
++)
128 BUFFER_PUSH(buf
) = expected
[i
];
131 bt_assert(buf
.used
== 0);
142 fill_expected_array();
143 for (i
= 0; i
< MAX_NUM
; i
++)
144 BUFFER_PUSH(buf
) = expected
[i
];
148 bt_assert(v
== expected
[i
++]);
150 bt_assert(i
== MAX_NUM
);
156 main(int argc
, char *argv
[])
160 bt_test_suite(t_buffer_push
, "Pushing new elements");
161 bt_test_suite(t_buffer_pop
, "Fill whole buffer (PUSH), a half of elements POP and PUSH new elements");
162 bt_test_suite(t_buffer_resize
, "Init a small buffer and try overfill");
163 bt_test_suite(t_buffer_flush
, "Fill and flush all elements");
164 bt_test_suite(t_buffer_walk
, "Fill and walk through buffer");
166 return bt_exit_value();