| | |
| | |
| | |
| |
|
| | #include "lm/bitarr.h" |
| | #include <pocketsphinx/err.h> |
| | #include "test_macros.h" |
| |
|
| | #include <stdio.h> |
| | #include <stdlib.h> |
| | #include <string.h> |
| |
|
| | typedef union { |
| | float f; |
| | uint32 i; |
| | } float_enc; |
| |
|
| | int |
| | main(int argc, char *argv[]) |
| | { |
| | float_enc neg1 = { -1.0 }, pos1 = { 1.0 }; |
| | uint64 test57 = 0x123456789abcdefULL; |
| | uint32 test25 = 0x1234567; |
| | char mem[57+8]; |
| | bitarr_address_t address; |
| |
|
| | (void)argc; |
| | (void)argv; |
| | err_set_loglevel(ERR_INFO); |
| | |
| | TEST_EQUAL((neg1.i ^ pos1.i), 0x80000000); |
| | memset(mem, 0, sizeof(mem)); |
| | address.base = mem; |
| |
|
| | |
| | for (address.offset = 0; address.offset < 57 * 8; address.offset += 57) |
| | bitarr_write_int57(address, 57, test57); |
| | E_INFO("%d\n", mem[0]); |
| | E_INFO("%d\n", mem[1]); |
| | E_INFO("%d\n", mem[2]); |
| | E_INFO("%d\n", mem[3]); |
| | for (address.offset = 0; address.offset < 57 * 8; address.offset += 57) { |
| | uint64 read57 = bitarr_read_int57(address, 57, ((1ULL << 57) - 1)); |
| | E_INFO("Testing %llx at %d = %llx\n", test57, address.offset, read57); |
| | TEST_EQUAL(test57, read57); |
| | } |
| | |
| | for (address.offset = 0; address.offset < 57 * 8; address.offset += 1) { |
| | uint64 read57; |
| |
|
| | memset(mem, 0, sizeof(mem)); |
| | bitarr_write_int57(address, 57, test57); |
| | read57 = bitarr_read_int57(address, 57, ((1ULL << 57) - 1)); |
| | E_INFO("Testing %llx at %d = %llx\n", test57, address.offset, read57); |
| | TEST_EQUAL(test57, read57); |
| | } |
| | memset(mem, 0, sizeof(mem)); |
| |
|
| | |
| | for (address.offset = 0; address.offset < 57 * 8; address.offset += 25) |
| | bitarr_write_int25(address, 25, test25); |
| | E_INFO("%d\n", mem[0]); |
| | E_INFO("%d\n", mem[1]); |
| | E_INFO("%d\n", mem[2]); |
| | E_INFO("%d\n", mem[3]); |
| | for (address.offset = 0; address.offset < 57 * 8; address.offset += 25) { |
| | uint32 read25 = bitarr_read_int25(address, 25, ((1UL << 25) - 1)); |
| | E_INFO("Testing %lx at %d = %lx\n", test25, address.offset, read25); |
| | TEST_EQUAL(test25, read25); |
| | } |
| | |
| | for (address.offset = 0; address.offset < 57 * 8; address.offset += 1) { |
| | uint32 read25; |
| |
|
| | memset(mem, 0, sizeof(mem)); |
| | bitarr_write_int25(address, 25, test25); |
| | read25 = bitarr_read_int25(address, 25, ((1UL << 25) - 1)); |
| | E_INFO("Testing %lx at %d = %lx\n", test25, address.offset, read25); |
| | TEST_EQUAL(test25, read25); |
| | } |
| | memset(mem, 0, sizeof(mem)); |
| |
|
| | |
| | for (address.offset = 0; address.offset < 57 * 8; address.offset += 82) { |
| | bitarr_address_t address2 = address; |
| | uint64 read25; |
| |
|
| | bitarr_write_int25(address, 25, test25); |
| | address2.offset += 25; |
| | bitarr_write_int57(address2, 57, test57); |
| | read25 = bitarr_read_int25(address, 25, ((1UL << 25) - 1)); |
| | E_INFO("Testing %lx at %d = %lx\n", test25, address.offset, read25); |
| | TEST_EQUAL(test25, read25); |
| | read25 = bitarr_read_int57(address2, 57, ((1ULL << 57) - 1)); |
| | E_INFO("Testing %llx at %d = %llx\n", test57, address2.offset, read25); |
| | TEST_EQUAL(test57, read25); |
| | } |
| | return 0; |
| | } |
| |
|