#include "greatest.h" #include "../nibble.h" TEST bcd_zeros_is_zero() { bcd x = bcd_zeros(); for (int i = 0; i < 10; i++) ASSERT_EQ_FMT(0, x.internal[i], "%d"); PASS(); } TEST bcd_zeros_length_zero() { bcd x = bcd_zeros(); ASSERT_EQ_FMT(0, bcd_digits(x), "%d"); PASS(); } TEST bcd_8_length_3() { bcd x = bcd_from_8(((uint8_t)0)-1); ASSERT_EQ_FMT(3, bcd_digits(x), "%d"); PASS(); } TEST bcd_16_length_5() { bcd x = bcd_from_16(((uint16_t)0)-1); ASSERT_EQ_FMT(5, bcd_digits(x), "%d"); PASS(); } TEST bcd_32_length_10() { bcd x = bcd_from_32(((uint32_t)0)-1); ASSERT_EQ_FMT(10, bcd_digits(x), "%d"); PASS(); } TEST bcd_64_length_20() { bcd x = bcd_from_64(((uint64_t)0)-1); ASSERT_EQ_FMT(20, bcd_digits(x), "%d"); PASS(); } TEST bcd_8_and_back() { bcd x = bcd_from_8(((uint8_t)0)-1); ASSERT_EQ_FMT(255llu, bcd_to_64(x), "%llu"); PASS(); } TEST bcd_16_and_back() { bcd x = bcd_from_16(((uint16_t)0)-1); ASSERT_EQ_FMT(65535llu, bcd_to_64(x), "%llu"); PASS(); } TEST bcd_32_and_back() { bcd x = bcd_from_32(((uint32_t)0)-1); ASSERT_EQ_FMT(4294967295llu, bcd_to_64(x), "%llu"); PASS(); } TEST bcd_64_and_back() { bcd x = bcd_from_64(((uint64_t)0)-1); ASSERT_EQ_FMT(18446744073709551615llu, bcd_to_64(x), "%llu"); PASS(); } TEST bcd_string() { bcd x = bcd_from_64(((uint64_t)0)-1); ASSERT_STR_EQ("18446744073709551615", bcd_to_string(x)); PASS(); } SUITE(tests) { RUN_TEST(bcd_zeros_is_zero); RUN_TEST(bcd_zeros_length_zero); RUN_TEST(bcd_8_length_3); RUN_TEST(bcd_16_length_5); RUN_TEST(bcd_32_length_10); RUN_TEST(bcd_64_length_20); RUN_TEST(bcd_8_and_back); RUN_TEST(bcd_16_and_back); RUN_TEST(bcd_32_and_back); RUN_TEST(bcd_64_and_back); RUN_TEST(bcd_string); } GREATEST_MAIN_DEFS(); int main(int argc, char **argv) { GREATEST_MAIN_BEGIN(); RUN_SUITE(tests); GREATEST_MAIN_END(); }