diff options
Diffstat (limited to 'test/src/util/test_bits.c')
| -rw-r--r-- | test/src/util/test_bits.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/src/util/test_bits.c b/test/src/util/test_bits.c index 70060c9..8a356b0 100644 --- a/test/src/util/test_bits.c +++ b/test/src/util/test_bits.c @@ -5,10 +5,12 @@ #include <criterion/criterion.h> #include <criterion/parameterized.h> +#include <misc/types.h> #include "test/default.h" #include "test/memory.h" #include "util/bits.h" #include "util/memory.h" +#include "util/random.h" TestSuite(bits, .init = default_setup, .fini = default_teardown); @@ -22,6 +24,35 @@ Test(bits, test_bits_new) { bits_free(&bits); } +Test(bits, test_bits_new_rand) { + random_init(); + GEN seed = getrand(); + bits_t *bits = bits_new_rand(10); + cr_assert_not_null(bits, ); + cr_assert_eq(bits->bitlen, 10, ); + cr_assert_eq(bits->allocated, 2, ); + + setrand(seed); + unsigned char one = (unsigned char)random_bits(8); + unsigned char other = (unsigned char)random_bits(2) << 6; + cr_assert_eq(bits->bits[0], one, ); + cr_assert_eq(bits->bits[1], other, ); + bits_free(&bits); +} + +Test(bits, test_bits_cpy) { + bits_t *bits = bits_new(10); + bits->bits[0] = 0b10101010; + bits->bits[1] = 0b11000000; + + bits_t *other = bits_new(5); + bits_cpy(other, bits); + cr_assert_eq(other->bitlen, bits->bitlen, ); + cr_assert_eq(other->allocated, bits->allocated, ); + cr_assert_eq(other->bits[0], bits->bits[0], ); + cr_assert_eq(other->bits[1], bits->bits[1], ); +} + Test(bits, test_bits_copy) { bits_t *bits = bits_new(10); bits->bits[0] = 0b10101010; @@ -48,6 +79,17 @@ Test(bits, test_bits_from_i) { bits_free(&bits); } +Test(bits, test_bits_from_i_len) { + GEN i = int2n(5); + + bits_t *bits = bits_from_i_len(i, 7); + cr_assert_not_null(bits, ); + cr_assert_eq(bits->bitlen, 7, ); + cr_assert_eq(bits->allocated, 1, ); + cr_assert_eq(bits->bits[0], 0b01000000, ); + bits_free(&bits); +} + Test(bits, test_bits_from_hex) { char *hex = "0ab"; |
