summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristopher Peplin <chris.peplin@rhubarbtech.com>2014-01-04 10:51:16 -0500
committerChristopher Peplin <chris.peplin@rhubarbtech.com>2014-01-04 10:52:42 -0500
commit08db5c9eb826f7aa0dba36cbef8011d7bc6b55a5 (patch)
treeb2875552387f00191c772bc6da08dcaa7e6d2e87 /tests
parent6f3a81ed8287357b54aad16bff27495c6eaca6df (diff)
Add a get_bitfield function for byte arrays.
Diffstat (limited to 'tests')
-rw-r--r--tests/8byte_tests.c40
-rw-r--r--tests/read_tests.c35
2 files changed, 49 insertions, 26 deletions
diff --git a/tests/8byte_tests.c b/tests/8byte_tests.c
index 5ebb0db0..12ff417d 100644
--- a/tests/8byte_tests.c
+++ b/tests/8byte_tests.c
@@ -12,7 +12,7 @@ END_TEST
START_TEST (test_one_bit_not_swapped)
{
uint64_t data = 0x80;
- uint64_t result = eightbyte_get_bit_field(data, 0, 1, false);
+ uint64_t result = eightbyte_get_bitfield(data, 0, 1, false);
fail_if(result == 1);
}
END_TEST
@@ -20,7 +20,7 @@ END_TEST
START_TEST (test_one_bit)
{
uint64_t data = 0x8000000000000000;
- uint64_t result = eightbyte_get_bit_field(data, 0, 1, false);
+ uint64_t result = eightbyte_get_bitfield(data, 0, 1, false);
fail_unless(result == 0x1,
"First bit in 0x%llx was 0x%llx instead of 0x1", data, result);
}
@@ -29,7 +29,7 @@ END_TEST
START_TEST (test_32_bit_parse)
{
uint64_t data = 0x0402574d555a0401;
- uint64_t result = eightbyte_get_bit_field(data, 16, 32, false);
+ uint64_t result = eightbyte_get_bitfield(data, 16, 32, false);
uint64_t expectedValue = 0x574d555a;
fail_unless(result == expectedValue,
"Field retrieved in 0x%llx was 0x%llx instead of 0x%llx", data,
@@ -40,7 +40,7 @@ END_TEST
START_TEST (test_16_bit_parse)
{
uint64_t data = 0xF34DFCFF00000000;
- uint64_t result = eightbyte_get_bit_field(data, 16, 16, false);
+ uint64_t result = eightbyte_get_bitfield(data, 16, 16, false);
uint64_t expectedValue = 0xFCFF;
fail_unless(result == expectedValue,
"Field retrieved in 0x%llx was 0x%llx instead of 0x%llx", data,
@@ -51,13 +51,13 @@ END_TEST
START_TEST (test_one_byte)
{
uint64_t data = 0xFA00000000000000;
- uint64_t result = eightbyte_get_bit_field(data, 0, 4, false);
+ uint64_t result = eightbyte_get_bitfield(data, 0, 4, false);
fail_unless(result == 0xF,
"First nibble in 0x%llx was 0x%llx instead of 0xF", data, result);
- result = eightbyte_get_bit_field(data, 4, 4, false);
+ result = eightbyte_get_bitfield(data, 4, 4, false);
fail_unless(result == 0xA,
"Second nibble in 0x%llx was 0x%llx instead of 0xA", data, result);
- result = eightbyte_get_bit_field(data, 0, 8, false);
+ result = eightbyte_get_bitfield(data, 0, 8, false);
fail_unless(result == 0xFA,
"All bits in 0x%llx were 0x%llx instead of 0x%llx", data, result, data);
}
@@ -66,19 +66,19 @@ END_TEST
START_TEST (test_multi_byte)
{
uint64_t data = 0x12FA000000000000;
- uint64_t result = eightbyte_get_bit_field(data, 0, 4, false);
+ uint64_t result = eightbyte_get_bitfield(data, 0, 4, false);
fail_unless(result == 0x1,
"First 4 bits in 0x%llx was 0x%llx instead of 0xF", (data >> 60) & 0xF,
result);
- result = eightbyte_get_bit_field(data, 4, 4, false);
+ result = eightbyte_get_bitfield(data, 4, 4, false);
fail_unless(result == 0x2,
"Second 4 bits in 0x%llx was 0x%llx instead of 0xA", (data >> 56) & 0xF,
result);
- result = eightbyte_get_bit_field(data, 8, 4, false);
+ result = eightbyte_get_bitfield(data, 8, 4, false);
fail_unless(result == 0xF,
"First 4 bits in 0x%llx was 0x%llx instead of 0x1", (data >> 52) & 0xF,
result);
- result = eightbyte_get_bit_field(data, 12, 4, false);
+ result = eightbyte_get_bitfield(data, 12, 4, false);
fail_unless(result == 0xA,
"Second 4 bits in 0x%llx was 0x%llx instead of 0x2", (data >> 48) % 0xF,
result);
@@ -88,7 +88,7 @@ END_TEST
START_TEST (test_get_multi_byte)
{
uint64_t data = 0x12FA000000000000;
- uint64_t result = eightbyte_get_bit_field(data, 0, 9, false);
+ uint64_t result = eightbyte_get_bitfield(data, 0, 9, false);
ck_assert_int_eq(result, 0x25);
}
END_TEST
@@ -96,7 +96,7 @@ END_TEST
START_TEST (test_get_off_byte_boundary)
{
uint64_t data = 0x000012FA00000000;
- uint64_t result = eightbyte_get_bit_field(data, 12, 8, false);
+ uint64_t result = eightbyte_get_bitfield(data, 12, 8, false);
ck_assert_int_eq(result, 0x01);
} END_TEST
@@ -111,16 +111,16 @@ START_TEST (test_set_field)
{
uint64_t data = 0;
fail_unless(set_bit_field(&data, 1, 0, 1));
- uint64_t result = eightbyte_get_bit_field(data, 0, 1, false);
+ uint64_t result = eightbyte_get_bitfield(data, 0, 1, false);
ck_assert_int_eq(result, 0x1);
data = 0;
fail_unless(set_bit_field(&data, 1, 1, 1));
- result = eightbyte_get_bit_field(data, 1, 1, false);
+ result = eightbyte_get_bitfield(data, 1, 1, false);
ck_assert_int_eq(result, 0x1);
data = 0;
fail_unless(set_bit_field(&data, 0xf, 3, 4));
- result = eightbyte_get_bit_field(data, 3, 4, false);
+ result = eightbyte_get_bitfield(data, 3, 4, false);
ck_assert_int_eq(result, 0xf);
}
END_TEST
@@ -129,7 +129,7 @@ START_TEST (test_set_doesnt_clobber_existing_data)
{
uint64_t data = 0xFFFC4DF300000000;
fail_unless(set_bit_field(&data, 0x4fc8, 16, 16));
- uint64_t result = eightbyte_get_bit_field(data, 16, 16, false);
+ uint64_t result = eightbyte_get_bitfield(data, 16, 16, false);
fail_unless(result == 0x4fc8,
"Field retrieved in 0x%llx was 0x%llx instead of 0x%x", data, result,
0xc84f);
@@ -146,7 +146,7 @@ START_TEST (test_set_off_byte_boundary)
{
uint64_t data = 0xFFFC4DF300000000;
fail_unless(set_bit_field(&data, 0x12, 12, 8));
- uint64_t result = eightbyte_get_bit_field(data, 12, 12, false);
+ uint64_t result = eightbyte_get_bitfield(data, 12, 12, false);
ck_assert_int_eq(result,0x12d);
}
END_TEST
@@ -155,14 +155,14 @@ START_TEST (test_set_odd_number_of_bits)
{
uint64_t data = 0xFFFC4DF300000000LLU;
fail_unless(set_bit_field(&data, 0x12, 11, 5));
- uint64_t result = eightbyte_get_bit_field(data, 11, 5, false);
+ uint64_t result = eightbyte_get_bitfield(data, 11, 5, false);
fail_unless(result == 0x12,
"Field set in 0x%llx%llx%llx%llx was 0x%llx instead of 0x%llx", data, result,
0x12);
data = 0xFFFC4DF300000000LLU;
fail_unless(set_bit_field(&data, 0x2, 11, 5));
- result = eightbyte_get_bit_field(data, 11, 5, false);
+ result = eightbyte_get_bitfield(data, 11, 5, false);
fail_unless(result == 0x2,
"Field set in 0x%llx%llx%llx%llx was 0x%llx instead of 0x%llx", data, result,
0x2);
diff --git a/tests/read_tests.c b/tests/read_tests.c
index 1cde4612..512d87e8 100644
--- a/tests/read_tests.c
+++ b/tests/read_tests.c
@@ -3,8 +3,9 @@
#include <canutil/read.h>
const uint64_t BIG_ENDIAN_TEST_DATA = __builtin_bswap64(0xEB00000000000000);
+const uint8_t ARRAY_TEST_DATA[] = {0xEB, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
-START_TEST (test_parse_float)
+START_TEST (test_eightbyte_parse_float)
{
float result = eightbyte_parse_float(BIG_ENDIAN_TEST_DATA, 2, 4, 1001.0,
-30000.0);
@@ -14,10 +15,30 @@ START_TEST (test_parse_float)
}
END_TEST
-START_TEST (test_parse_bool)
+START_TEST (test_eightbyte_parse_bool)
{
- float result = eightbyte_parse_bool(BIG_ENDIAN_TEST_DATA, 0, 1, 1.0, 0);
- float correctResult = true;
+ bool result = eightbyte_parse_bool(BIG_ENDIAN_TEST_DATA, 0, 1, 1.0, 0);
+ bool correctResult = true;
+ fail_unless(result == correctResult,
+ "parse is incorrect: %d but should be %d", result, correctResult);
+}
+END_TEST
+
+START_TEST (test_bitfield_parse_float)
+{
+ float result = bitfield_parse_float(ARRAY_TEST_DATA,
+ sizeof(ARRAY_TEST_DATA), 2, 4, 1001.0, -30000.0);
+ float correctResult = 0xA * 1001.0 - 30000.0;
+ fail_unless(result == correctResult,
+ "parse is incorrect: %f but should be %f", result, correctResult);
+}
+END_TEST
+
+START_TEST (test_bitfield_parse_bool)
+{
+ bool result = bitfield_parse_bool(ARRAY_TEST_DATA, sizeof(ARRAY_TEST_DATA),
+ 0, 1, 1.0, 0);
+ bool correctResult = true;
fail_unless(result == correctResult,
"parse is incorrect: %d but should be %d", result, correctResult);
}
@@ -27,8 +48,10 @@ Suite* canreadSuite(void) {
Suite* s = suite_create("read");
TCase *tc_core = tcase_create("core");
tcase_add_checked_fixture(tc_core, NULL, NULL);
- tcase_add_test(tc_core, test_parse_float);
- tcase_add_test(tc_core, test_parse_bool);
+ tcase_add_test(tc_core, test_eightbyte_parse_float);
+ tcase_add_test(tc_core, test_eightbyte_parse_bool);
+ tcase_add_test(tc_core, test_bitfield_parse_float);
+ tcase_add_test(tc_core, test_bitfield_parse_bool);
suite_add_tcase(s, tc_core);
return s;