From f6a144987cc403de8ad6bddd055f756120f8d405 Mon Sep 17 00:00:00 2001 From: Ethan Werner Date: Wed, 17 Apr 2024 16:00:00 -0700 Subject: archival commit --- example/bin.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 example/bin.c (limited to 'example/bin.c') diff --git a/example/bin.c b/example/bin.c new file mode 100755 index 0000000..40a7f77 --- /dev/null +++ b/example/bin.c @@ -0,0 +1,47 @@ +#include +#include + +typedef int32_t bin_key_t; + +#define TEST_LENGTH 10 +#define TEST_START -2 +#define TEST_STEP 0.5; + +struct sample_t { + bin_key_t time; + double data; +}; + +#define BIN_IMPLEMENTATION +#include "../include/bin.h" + +int main() { + char const *path = "./test.bin"; + FILE *bin = bin_init(path, sizeof(struct sample_t)); + + bin_key_t half = (bin_key_t)((TEST_START + TEST_LENGTH) / 2.0); + + // Insert half of the values using bin_insert() + for (bin_key_t i = half - 1; i >= TEST_START; i--) { + bin_insert(bin, 0, &(struct sample_t){.time = i, .data = 2.0 * i}, 1); + } + + // Append half of the values to the end + for (bin_key_t i = half; i < TEST_START + TEST_LENGTH; i++) { + bin_append(bin, &(struct sample_t){.time = i, .data = 2.0 * i}, 1); + } + + uint64_t l = bin_length(bin); + uint64_t bs = bin_block_size(bin); + + struct sample_t x[l]; + bin_read(bin, 0, x, l); + + // Test that all values are correct + for (int32_t i = 0; i < TEST_LENGTH; i++) { + bin_key_t key = TEST_START + i; + assert(x[i].time == key && x[i].data == 2.0 * key); + } + + bin_close(bin); +} \ No newline at end of file -- cgit v1.3.1