]>
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();
44 buffer_pool
= &root_pool
;
45 BUFFER_INIT(buf
, buffer_pool
, MAX_NUM
);
49 is_buffer_as_expected(buffer_int
*b
)
54 for (i
= 0; i
< MAX_NUM
; i
++)
55 bt_assert(b
->data
[i
] == expected
[i
]);
65 fill_expected_array();
67 for (i
= 0; i
< MAX_NUM
; i
++)
68 BUFFER_PUSH(buf
) = expected
[i
];
69 is_buffer_as_expected(&buf
);
80 fill_expected_array();
82 /* POP a half of elements */
83 for (i
= 0; i
< MAX_NUM
; i
++)
84 BUFFER_PUSH(buf
) = expected
[i
];
85 for (i
= MAX_NUM
-1; i
>= MAX_NUM
/2; i
--)
87 for (i
= MAX_NUM
/2; i
< MAX_NUM
; i
++)
88 BUFFER_PUSH(buf
) = expected
[i
] = bt_random();
89 is_buffer_as_expected(&buf
);
91 /* POP all of elements */
92 for (i
= MAX_NUM
-1; i
>= 0; i
--)
94 bt_assert(buf
.used
== 0);
95 for (i
= 0; i
< MAX_NUM
; i
++)
96 BUFFER_PUSH(buf
) = expected
[i
];
97 is_buffer_as_expected(&buf
);
103 t_buffer_resize(void)
108 BUFFER_INIT(buf
, buffer_pool
, 0);
109 fill_expected_array();
111 for (i
= 0; i
< MAX_NUM
; i
++)
112 BUFFER_PUSH(buf
) = expected
[i
];
113 is_buffer_as_expected(&buf
);
114 bt_assert(buf
.size
>= MAX_NUM
);
125 fill_expected_array();
126 for (i
= 0; i
< MAX_NUM
; i
++)
127 BUFFER_PUSH(buf
) = expected
[i
];
130 bt_assert(buf
.used
== 0);
141 fill_expected_array();
142 for (i
= 0; i
< MAX_NUM
; i
++)
143 BUFFER_PUSH(buf
) = expected
[i
];
147 bt_assert(v
== expected
[i
++]);
149 bt_assert(i
== MAX_NUM
);
155 main(int argc
, char *argv
[])
159 bt_test_suite(t_buffer_push
, "Pushing new elements");
160 bt_test_suite(t_buffer_pop
, "Fill whole buffer (PUSH), a half of elements POP and PUSH new elements");
161 bt_test_suite(t_buffer_resize
, "Init a small buffer and try overfill");
162 bt_test_suite(t_buffer_flush
, "Fill and flush all elements");
163 bt_test_suite(t_buffer_walk
, "Fill and walk through buffer");
165 return bt_exit_value();