aboutsummaryrefslogtreecommitdiff
path: root/src/proone-test_bitfield.c
diff options
context:
space:
mode:
authorDavid Timber <mieabby@gmail.com>2021-08-09 17:30:18 +1000
committerDavid Timber <mieabby@gmail.com>2021-08-09 19:20:40 +1000
commiteea0a9fbbf1aff1eac1f17914d5c116de98e1d93 (patch)
tree776e61c070d7afa0df683093b82f327631534341 /src/proone-test_bitfield.c
parentf6e94a01fd84b693c5a74b8f40edb4dc89836bdf (diff)
Protocol and build system change ...
* Use autoheader * Add --enable-minmem * Add OS code. Bin archive and protocol changed accordingly * Add instance flags in hostinfo frame. Bitfield util added for this * Add org_id in hostinfo for lineage record * SQL schema change: store integer value of hostinfo arch and os * Remove config.c * prne_index_nybin() now sets errno * Instance ids are now preserved for lineage record * Proone: remove arguments after init * Fix bug in prne_htbt_ser_bin_meta(): alloc_len is not checked
Diffstat (limited to 'src/proone-test_bitfield.c')
-rw-r--r--src/proone-test_bitfield.c114
1 files changed, 114 insertions, 0 deletions
diff --git a/src/proone-test_bitfield.c b/src/proone-test_bitfield.c
new file mode 100644
index 0000000..97ae537
--- /dev/null
+++ b/src/proone-test_bitfield.c
@@ -0,0 +1,114 @@
+#include <stdio.h>
+#include <assert.h>
+
+#include "util_rt.h"
+#include "bitfield.h"
+
+
+static void chk_func (void *ctx, const unsigned int bit, const bool v) {
+ static unsigned int nb_calls = 0;
+
+ assert(nb_calls == bit);
+ nb_calls += 1;
+ assert(ctx == (void*)UINTPTR_MAX);
+ if (v) {
+ assert(
+ bit == 0 ||
+ bit == 2 ||
+ bit == 4 ||
+ bit == 6 ||
+ bit == 8 ||
+ bit == 10 ||
+ bit == 12 ||
+ bit == 14);
+ }
+ else {
+ assert(
+ bit == 1 ||
+ bit == 3 ||
+ bit == 5 ||
+ bit == 7 ||
+ bit == 9 ||
+ bit == 11 ||
+ bit == 13 ||
+ bit == 15);
+ }
+}
+
+int main (void) {
+ static uint8_t bf[2];
+
+ assert(prne_bf_get_size(0) == 0);
+ assert(prne_bf_get_size(1) == 1);
+ assert(prne_bf_get_size(8) == 1);
+ assert(prne_bf_get_size(9) == 2);
+ assert(prne_bf_get_size(16) == 2);
+ assert(prne_bf_get_size(20) == 3);
+ assert(prne_bf_get_size(32) == 4);
+
+ prne_memzero(bf, sizeof(bf));
+ prne_bf_set(bf, 1, true);
+ prne_bf_set(bf, 3, true);
+ prne_bf_set(bf, 5, true);
+ prne_bf_set(bf, 7, true);
+ prne_bf_set(bf, 9, true);
+ prne_bf_set(bf, 11, true);
+ prne_bf_set(bf, 13, true);
+ prne_bf_set(bf, 15, true);
+ assert(prne_bf_test(bf, 0) == false);
+ assert(prne_bf_test(bf, 1) == true);
+ assert(prne_bf_test(bf, 2) == false);
+ assert(prne_bf_test(bf, 3) == true);
+ assert(prne_bf_test(bf, 4) == false);
+ assert(prne_bf_test(bf, 5) == true);
+ assert(prne_bf_test(bf, 6) == false);
+ assert(prne_bf_test(bf, 7) == true);
+ assert(prne_bf_test(bf, 8) == false);
+ assert(prne_bf_test(bf, 9) == true);
+ assert(prne_bf_test(bf, 10) == false);
+ assert(prne_bf_test(bf, 11) == true);
+ assert(prne_bf_test(bf, 12) == false);
+ assert(prne_bf_test(bf, 13) == true);
+ assert(prne_bf_test(bf, 14) == false);
+ assert(prne_bf_test(bf, 15) == true);
+ assert(bf[0] == 0xAA && bf[1] == 0xAA);
+ prne_bf_set(bf, 1, false);
+ prne_bf_set(bf, 3, false);
+ prne_bf_set(bf, 5, false);
+ prne_bf_set(bf, 7, false);
+ prne_bf_set(bf, 9, false);
+ prne_bf_set(bf, 11, false);
+ prne_bf_set(bf, 13, false);
+ prne_bf_set(bf, 15, false);
+ assert(prne_bf_test(bf, 0) == false);
+ assert(prne_bf_test(bf, 1) == false);
+ assert(prne_bf_test(bf, 2) == false);
+ assert(prne_bf_test(bf, 3) == false);
+ assert(prne_bf_test(bf, 4) == false);
+ assert(prne_bf_test(bf, 5) == false);
+ assert(prne_bf_test(bf, 6) == false);
+ assert(prne_bf_test(bf, 7) == false);
+ assert(prne_bf_test(bf, 8) == false);
+ assert(prne_bf_test(bf, 9) == false);
+ assert(prne_bf_test(bf, 10) == false);
+ assert(prne_bf_test(bf, 11) == false);
+ assert(prne_bf_test(bf, 12) == false);
+ assert(prne_bf_test(bf, 13) == false);
+ assert(prne_bf_test(bf, 14) == false);
+ assert(prne_bf_test(bf, 15) == false);
+ assert(bf[0] == 0x00 && bf[1] == 0x00);
+
+ prne_memzero(bf, sizeof(bf));
+ prne_bf_set(bf, 0, true);
+ prne_bf_set(bf, 2, true);
+ prne_bf_set(bf, 4, true);
+ prne_bf_set(bf, 6, true);
+ prne_bf_set(bf, 8, true);
+ prne_bf_set(bf, 10, true);
+ prne_bf_set(bf, 12, true);
+ prne_bf_set(bf, 14, true);
+ assert(bf[0] == 0x55 && bf[1] == 0x55);
+ prne_bf_foreach((void*)UINTPTR_MAX, bf, sizeof(bf), chk_func);
+
+ return 0;
+}