commit 37aee24faf62db15e4d831bb2f74b77c9bea68f9
parent b52a86714bba04f826260961a12de21e318e65ae
Author: vaplv <vaplv@free.fr>
Date: Mon, 8 May 2017 16:06:35 +0200
Push further the big buffer tests
Diffstat:
1 file changed, 66 insertions(+), 3 deletions(-)
diff --git a/src/test_big_buffer.c b/src/test_big_buffer.c
@@ -29,6 +29,11 @@
#define BIGBUF_BUFSIZE 1
#include "big_buffer.h"
+#define BIGBUF_NAME real
+#define BIGBUF_DATA double
+#define BIGBUF_BUFSIZE 45
+#include "big_buffer.h"
+
static INLINE double
rand_canonic(void)
{
@@ -79,7 +84,7 @@ test_byte(struct mem_allocator* allocator)
}
static void
-test_integer(void)
+test_integer(struct mem_allocator* allocator)
{
struct bigbuf_integer ints;
struct bigbuf_integer ints2;
@@ -116,7 +121,7 @@ test_integer(void)
bigbuf_integer_release(&ints);
rewind(stream);
- CHECK(bigbuf_integer_init(NULL, stream, BIGBUF_LOAD_STREAM, &ints), RES_OK);
+ CHECK(bigbuf_integer_init(allocator, stream, BIGBUF_LOAD_STREAM, &ints), RES_OK);
CHECK(bigbuf_integer_size_get(&ints), 1665);
FOR_EACH(i, 0, 666) {
@@ -146,6 +151,63 @@ test_integer(void)
fclose(stream);
}
+static void
+test_real(struct mem_allocator* allocator)
+{
+ struct bigbuf_real reals;
+ struct bigbuf_real reals2;
+ FILE* stream;
+ double real;
+ size_t i;
+
+ NCHECK(stream = tmpfile(), NULL);
+ CHECK(bigbuf_real_init(allocator, stream, BIGBUF_LOAD_STREAM, &reals), RES_IO_ERR);
+ CHECK(bigbuf_real_init(allocator, stream, 0, &reals), RES_OK);
+
+ FOR_EACH(i, 0, 4000) {
+ real = (double)i / 100.0;
+ CHECK(bigbuf_real_push_back(&reals, &real), RES_OK);
+ }
+
+ CHECK(bigbuf_real_size_get(&reals), 4000);
+
+ FOR_EACH(i, 0, 10) {
+ size_t id = (size_t)(rand_canonic() * (double)bigbuf_real_size_get(&reals));
+ CHECK(bigbuf_real_at(&reals, id, &real), RES_OK);
+ CHECK(real, (double)id/100.0);
+ }
+
+ rewind(stream);
+
+ FOR_EACH(i, 0, 2000) {
+ real = (double)(i+4000) / 100.0;
+ CHECK(bigbuf_real_push_back(&reals, &real), RES_OK);
+ }
+
+ bigbuf_real_flush(&reals);
+
+ rewind(stream);
+ bigbuf_real_init(allocator, stream, BIGBUF_LOAD_STREAM, &reals2);
+
+ CHECK(bigbuf_real_size_get(&reals), 6000);
+ CHECK(bigbuf_real_size_get(&reals2), 6000);
+
+ FOR_EACH(i, 0, bigbuf_real_size_get(&reals)) {
+ CHECK(bigbuf_real_at(&reals, i, &real), RES_OK);
+ CHECK(real, (double)i/100.0);
+ }
+
+ FOR_EACH(i, 0, 300) {
+ size_t id = (size_t)(rand_canonic() * (double)bigbuf_real_size_get(&reals2));
+ CHECK(bigbuf_real_at(&reals2, id, &real), RES_OK);
+ CHECK(real, (double)id/100.0);
+ }
+
+ bigbuf_real_release(&reals);
+ bigbuf_real_release(&reals2);
+ fclose(stream);
+}
+
int
main(int argc, char** argv)
{
@@ -155,7 +217,8 @@ main(int argc, char** argv)
mem_init_proxy_allocator(&allocator_proxy, &mem_default_allocator);
test_byte(&allocator_proxy);
- test_integer();
+ test_integer(&allocator_proxy);
+ test_real(&allocator_proxy);
check_memory_allocator(&allocator_proxy);
mem_shutdown_proxy_allocator(&allocator_proxy);