From d09999a12776433409b6b54cc7787fbf8b1eee57 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Tue, 4 Jul 2017 13:25:47 +0200 Subject: [PATCH] tests: provide unittests for bcd --- tests/unittests/tests-bcd/Makefile | 1 + tests/unittests/tests-bcd/Makefile.include | 0 tests/unittests/tests-bcd/tests-bcd.c | 81 ++++++++++++++++++++++ tests/unittests/tests-bcd/tests-bcd.h | 44 ++++++++++++ 4 files changed, 126 insertions(+) create mode 100644 tests/unittests/tests-bcd/Makefile create mode 100644 tests/unittests/tests-bcd/Makefile.include create mode 100644 tests/unittests/tests-bcd/tests-bcd.c create mode 100644 tests/unittests/tests-bcd/tests-bcd.h diff --git a/tests/unittests/tests-bcd/Makefile b/tests/unittests/tests-bcd/Makefile new file mode 100644 index 0000000000..48422e909a --- /dev/null +++ b/tests/unittests/tests-bcd/Makefile @@ -0,0 +1 @@ +include $(RIOTBASE)/Makefile.base diff --git a/tests/unittests/tests-bcd/Makefile.include b/tests/unittests/tests-bcd/Makefile.include new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/unittests/tests-bcd/tests-bcd.c b/tests/unittests/tests-bcd/tests-bcd.c new file mode 100644 index 0000000000..9474a77007 --- /dev/null +++ b/tests/unittests/tests-bcd/tests-bcd.c @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2017 Freie Universität Berlin + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @{ + * + * @file + * @author Martine Lenders + */ + +#include "embUnit.h" + +#include "bcd.h" + +static void test_bcd_from_byte__zero(void) +{ + TEST_ASSERT_EQUAL_INT(0x00, bcd_from_byte(0)); +} + +static void test_bcd_from_byte__greater_99(void) +{ + /* output is garbled intentionally */ + TEST_ASSERT_EQUAL_INT(0xa0, bcd_from_byte(100)); + TEST_ASSERT_EQUAL_INT(0x95, bcd_from_byte(255)); +} + +static void test_bcd_from_byte(void) +{ + TEST_ASSERT_EQUAL_INT(0x01, bcd_from_byte(1)); + TEST_ASSERT_EQUAL_INT(0x09, bcd_from_byte(9)); + TEST_ASSERT_EQUAL_INT(0x10, bcd_from_byte(10)); + TEST_ASSERT_EQUAL_INT(0x11, bcd_from_byte(11)); + TEST_ASSERT_EQUAL_INT(0x99, bcd_from_byte(99)); +} + +static void test_bcd_to_byte__zero(void) +{ + TEST_ASSERT_EQUAL_INT(0, bcd_to_byte(0x00)); +} + +static void test_bcd_to_byte__greater_0x99(void) +{ + TEST_ASSERT_EQUAL_INT(100, bcd_to_byte(0xa0)); + TEST_ASSERT_EQUAL_INT(110, bcd_to_byte(0xaa)); + TEST_ASSERT_EQUAL_INT(165, bcd_to_byte(0xff)); +} + +static void test_bcd_to_byte(void) +{ + TEST_ASSERT_EQUAL_INT( 1, bcd_to_byte(0x01)); + TEST_ASSERT_EQUAL_INT( 9, bcd_to_byte(0x09)); + TEST_ASSERT_EQUAL_INT(10, bcd_to_byte(0x10)); + TEST_ASSERT_EQUAL_INT(11, bcd_to_byte(0x11)); + TEST_ASSERT_EQUAL_INT(99, bcd_to_byte(0x99)); +} + +Test *tests_bcd_tests(void) +{ + EMB_UNIT_TESTFIXTURES(fixtures) { + new_TestFixture(test_bcd_from_byte__zero), + new_TestFixture(test_bcd_from_byte__greater_99), + new_TestFixture(test_bcd_from_byte), + new_TestFixture(test_bcd_to_byte__zero), + new_TestFixture(test_bcd_to_byte__greater_0x99), + new_TestFixture(test_bcd_to_byte), + }; + + EMB_UNIT_TESTCALLER(bcd_tests, NULL, NULL, fixtures); + + return (Test *)&bcd_tests; +} + +void tests_bcd(void) +{ + TESTS_RUN(tests_bcd_tests()); +} diff --git a/tests/unittests/tests-bcd/tests-bcd.h b/tests/unittests/tests-bcd/tests-bcd.h new file mode 100644 index 0000000000..b002f2dfc0 --- /dev/null +++ b/tests/unittests/tests-bcd/tests-bcd.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2017 Freie Universität Berlin + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @addtogroup unittests + * @{ + * + * @file + * @brief Unittests for the `bcd` header + * + * @author Martine Lenders + */ +#ifndef TESTS_BCD_H +#define TESTS_BCD_H + +#include "embUnit/embUnit.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** +* @brief The entry point of this test suite. +*/ +void tests_bcd(void); + +/** + * @brief Generates tests for bcd + * + * @return embUnit tests if successful, NULL if not. + */ +Test *tests_bcd_tests(void); + +#ifdef __cplusplus +} +#endif + +#endif /* TESTS_BCD_H */ +/** @} */