commit 962db29c4f3781e546a0c2f6b60670ba7ba36333
parent 0ec8214b119be0afa53150de65e8e1dbdcf8a76f
Author: vaplv <vaplv@free.fr>
Date: Thu, 25 May 2017 15:50:21 +0200
Test the big_buffer resize and set functions
Diffstat:
| M | src/test_big_buffer.c | | | 110 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 110 insertions(+), 0 deletions(-)
diff --git a/src/test_big_buffer.c b/src/test_big_buffer.c
@@ -78,6 +78,62 @@ test_byte(struct mem_allocator* allocator)
CHECK((size_t)byte, i);
}
+ CHECK(bigbuf_byte_size_get(&bytes), 64);
+ CHECK(bigbuf_byte_at(&bytes, 61, &byte), RES_OK);
+
+ CHECK(bigbuf_byte_resize(&bytes, 63), RES_OK);
+ CHECK(bigbuf_byte_size_get(&bytes), 63);
+ CHECK(bigbuf_byte_at(&bytes, 64, &byte), RES_BAD_ARG);
+ CHECK(bigbuf_byte_at(&bytes, 63, &byte), RES_BAD_ARG);
+ CHECK(bigbuf_byte_at(&bytes, 62, &byte), RES_OK);
+ CHECK(byte, 62);
+
+ byte = 63;
+ CHECK(bigbuf_byte_push_back(&bytes, &byte), RES_OK);
+ CHECK(bigbuf_byte_size_get(&bytes), 64);
+ FOR_EACH(i, 0, bigbuf_byte_size_get(&bytes)) {
+ CHECK(bigbuf_byte_at(&bytes, i, &byte), RES_OK);
+ CHECK((size_t)byte, i);
+ }
+
+ CHECK(bigbuf_byte_resize(&bytes, 32), RES_OK);
+ CHECK(bigbuf_byte_resize(&bytes, 32), RES_OK);
+ CHECK(bigbuf_byte_at(&bytes, 32, &byte), RES_BAD_ARG);
+
+ CHECK(bigbuf_byte_at(&bytes, 31, &byte), RES_OK);
+ CHECK(byte, 31);
+ FOR_EACH(i, 0, 32) {
+ byte = (char)(i + 32);
+ CHECK(bigbuf_byte_push_back(&bytes, &byte), RES_OK);
+ }
+ FOR_EACH(i, 0, bigbuf_byte_size_get(&bytes)) {
+ CHECK(bigbuf_byte_at(&bytes, i, &byte), RES_OK);
+ CHECK((size_t)byte, i);
+ }
+
+ CHECK(bigbuf_byte_resize(&bytes, 128), RES_OK);
+ CHECK(bigbuf_byte_size_get(&bytes), 128);
+ FOR_EACH(i, 0, bigbuf_byte_size_get(&bytes)) {
+ CHECK(bigbuf_byte_at(&bytes, i, &byte), RES_OK);
+ if(i < 64) {
+ CHECK((size_t)byte, i);
+ } else {
+ CHECK(byte, 0);
+ }
+ }
+
+ CHECK(bigbuf_byte_set(&bytes, 128, &byte), RES_BAD_ARG);
+ FOR_EACH(i, 0, 64) {
+ byte = (char)(i+64);
+ CHECK(bigbuf_byte_set(&bytes, (size_t)byte, &byte), RES_OK);
+ CHECK(bigbuf_byte_at(&bytes, (size_t)byte - 1, &byte), RES_OK);
+ CHECK((size_t)byte, i+63);
+ }
+ FOR_EACH(i, 0, bigbuf_byte_size_get(&bytes)) {
+ CHECK(bigbuf_byte_at(&bytes, i, &byte), RES_OK);
+ CHECK((size_t)byte, i);
+ }
+
bigbuf_byte_release(&bytes);
}
@@ -145,6 +201,23 @@ test_integer(struct mem_allocator* allocator)
CHECK((size_t)integer, i);
}
+ CHECK(bigbuf_integer_resize(&ints2, 999), RES_OK);
+ CHECK(bigbuf_integer_size_get(&ints2), 999);
+ FOR_EACH(i, 0, bigbuf_integer_size_get(&ints2)) {
+ CHECK(bigbuf_integer_at(&ints2, i, &integer), RES_OK);
+ integer = -integer;
+ CHECK(bigbuf_integer_set(&ints2, i, &integer), RES_OK);
+ if(i) {
+ CHECK(bigbuf_integer_at(&ints2, i-1, &integer), RES_OK);
+ CHECK(integer, 1 - (int)i);
+ }
+ }
+
+ FOR_EACH(i, 0, bigbuf_integer_size_get(&ints2)) {
+ CHECK(bigbuf_integer_at(&ints2, i, &integer), RES_OK);
+ CHECK(integer, -(int)i);
+ }
+
bigbuf_integer_release(&ints2);
fclose(stream);
}
@@ -156,6 +229,7 @@ test_real(struct mem_allocator* allocator)
struct bigbuf_real reals2;
FILE* stream;
double real;
+ size_t ids[32];
size_t i;
NCHECK(stream = tmpfile(), NULL);
@@ -201,6 +275,42 @@ test_real(struct mem_allocator* allocator)
CHECK(real, (double)id/100.0);
}
+ CHECK(bigbuf_real_at(&reals2, 5990, &real), RES_OK);
+ CHECK(real, 59.90);
+ CHECK(bigbuf_real_resize(&reals2, 5992), RES_OK);
+ CHECK(bigbuf_real_at(&reals2, 5990, &real), RES_OK);
+ CHECK(real, 59.90);
+ CHECK(bigbuf_real_resize(&reals2, 5990), RES_OK);
+ CHECK(bigbuf_real_at(&reals2, 5990, &real), RES_BAD_ARG);
+ CHECK(bigbuf_real_at(&reals2, 5989, &real), RES_OK);
+ CHECK(real, 59.89);
+ CHECK(bigbuf_real_resize(&reals2, 5985), RES_OK);
+ CHECK(bigbuf_real_at(&reals2, 5985, &real), RES_BAD_ARG);
+ CHECK(bigbuf_real_at(&reals2, 5984, &real), RES_OK);
+ CHECK(real, 59.84);
+
+ FOR_EACH(i, 0, sizeof(ids)/sizeof(size_t)) {
+ ids[i] = (size_t)(rand_canonic() * (double)bigbuf_real_size_get(&reals2));
+ real = (double)ids[i];
+ CHECK(bigbuf_real_set(&reals2, ids[i], &real), RES_OK);
+ }
+
+ CHECK(bigbuf_real_size_get(&reals2), 5985);
+ FOR_EACH(i, 0, bigbuf_real_size_get(&reals2)) {
+ size_t j;
+ CHECK(bigbuf_real_at(&reals2, i, &real), RES_OK);
+
+ FOR_EACH(j, 0, sizeof(ids)/sizeof(size_t)) {
+ if(i == ids[j]) break;
+ }
+
+ if(j == sizeof(ids)/sizeof(size_t)) {
+ CHECK(real, (double)i/100.0);
+ } else {
+ CHECK(real, (double)i);
+ }
+ }
+
bigbuf_real_release(&reals);
bigbuf_real_release(&reals2);
fclose(stream);