diff options
author | Kirill Zakharenko <earwin@gmail.com> | 2020-05-01 18:21:58 +0300 |
---|---|---|
committer | Kirill Zakharenko <earwin@gmail.com> | 2020-05-01 18:21:58 +0300 |
commit | 357ab3abba5a1be0a66f8ae6c6a0460ddb4b7c06 (patch) | |
tree | ad0979169f0d7911bb503466036f36f1489bc714 /tests/bitvec | |
parent | 459224a99391fa9adf22a45cb6a63d56703aa3a8 (diff) | |
parent | d87d6f177837c848381e362d3880509ba275cac8 (diff) |
Merge master into fairwaves/production
Diffstat (limited to 'tests/bitvec')
-rw-r--r-- | tests/bitvec/bitvec_test.c | 42 | ||||
-rw-r--r-- | tests/bitvec/bitvec_test.ok | 28 |
2 files changed, 65 insertions, 5 deletions
diff --git a/tests/bitvec/bitvec_test.c b/tests/bitvec/bitvec_test.c index fbf5c5dd..b4764e68 100644 --- a/tests/bitvec/bitvec_test.c +++ b/tests/bitvec/bitvec_test.c @@ -222,6 +222,45 @@ static void test_tailroom() } } +static void test_bitvec_read_field(void) +{ + uint8_t data[8] = { 0xde, 0xad, 0xbe, 0xef, 0xfe, 0xeb, 0xda, 0xed }; + struct bitvec bv = { + .data_len = sizeof(data), + .data = data, + .cur_bit = 0, + }; + + unsigned int readIndex; + uint64_t field; + +#define _bitvec_read_field(idx, len) \ + readIndex = idx; \ + field = bitvec_read_field(&bv, &readIndex, len); \ + printf("bitvec_read_field(idx=%u, len=%u) => %" PRIx64 "\n", idx, len, field); + + _bitvec_read_field(0, 64); + _bitvec_read_field(0, 32); + _bitvec_read_field(0, 16); + _bitvec_read_field(0, 8); + _bitvec_read_field(0, 0); + + _bitvec_read_field(8, 8); + _bitvec_read_field(8, 4); + _bitvec_read_field(8, 0); + + _bitvec_read_field(10, 9); + _bitvec_read_field(10, 7); + _bitvec_read_field(10, 5); + _bitvec_read_field(10, 3); + _bitvec_read_field(10, 1); + + /* Out of bounds (see OS#4388) */ + _bitvec_read_field(8 * 8 * 8, 16); /* index too far */ + _bitvec_read_field(0, 8 * 8 + 1); /* too many bits */ + _bitvec_read_field(8 * 8, 16); /* 16 bits past */ +} + int main(int argc, char **argv) { struct bitvec bv; @@ -331,6 +370,9 @@ int main(int argc, char **argv) test_used_bytes(); test_tailroom(); + printf("\ntest bitvec_read_field():\n"); + test_bitvec_read_field(); + printf("\nbitvec ok.\n"); return 0; } diff --git a/tests/bitvec/bitvec_test.ok b/tests/bitvec/bitvec_test.ok index a48912d5..b118502e 100644 --- a/tests/bitvec/bitvec_test.ok +++ b/tests/bitvec/bitvec_test.ok @@ -119,19 +119,19 @@ out: ff 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 bitvec: 00 00 00 00 fc 82 84 86 88 8a 8c 8e 90 92 94 96 98 9a 9c 9e a0 a2 a4 a6 a8 aa ac ae b0 b2 b4 fc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 out: ff 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a ff === end test_byte_ops === -1 -=> cur_bit=184 +0 -=> cur_bit=184 48282407a6a074227201000b2b2b2b2b2b2b2b2b2b2b2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000 48282407a6a074227201000b2b2b2b2b2b2b2b2b2b2b2b -1 -=> cur_bit=184 +0 -=> cur_bit=184 47240c00400000000000000079eb2ac9402b2b2b2b2b2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000 47240c00400000000000000079eb2ac9402b2b2b2b2b2b -1 -=> cur_bit=184 +0 -=> cur_bit=184 47283c367513ba333004242b2b2b2b2b2b2b2b2b2b2b2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000 47283c367513ba333004242b2b2b2b2b2b2b2b2b2b2b2b -1 -=> cur_bit=184 +0 -=> cur_bit=184 deadface000000000000000000000000000000beeffeed0000000000000000000000000000000000000000000000000000000000000000000000000000000000 DEADFACE000000000000000000000000000000BEEFFEED -0 -=> cur_bit=512 +1 -=> cur_bit=0 fffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa FFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB arrr... @@ -170,4 +170,22 @@ bitvec_runlength.... bitvec bytes used. +test bitvec_read_field(): +bitvec_read_field(idx=0, len=64) => deadbeeffeebdaed +bitvec_read_field(idx=0, len=32) => deadbeef +bitvec_read_field(idx=0, len=16) => dead +bitvec_read_field(idx=0, len=8) => de +bitvec_read_field(idx=0, len=0) => 0 +bitvec_read_field(idx=8, len=8) => ad +bitvec_read_field(idx=8, len=4) => a +bitvec_read_field(idx=8, len=0) => 0 +bitvec_read_field(idx=10, len=9) => 16d +bitvec_read_field(idx=10, len=7) => 5b +bitvec_read_field(idx=10, len=5) => 16 +bitvec_read_field(idx=10, len=3) => 5 +bitvec_read_field(idx=10, len=1) => 1 +bitvec_read_field(idx=512, len=16) => ffffffffffffffea +bitvec_read_field(idx=0, len=65) => ffffffffffffffea +bitvec_read_field(idx=64, len=16) => ffffffffffffffea + bitvec ok. |