From 08a2aed46db3b07ace76960ab658b6ee6cb3c5af Mon Sep 17 00:00:00 2001 From: Hauke Petersen <hauke.petersen@fu-berlin.de> Date: Thu, 21 Apr 2016 17:54:32 +0200 Subject: [PATCH] unittests: added test for printf with floats --- tests/unittests/tests-printf_float/Makefile | 1 + .../tests-printf_float/Makefile.include | 1 + .../tests-printf_float/tests-printf_float.c | 78 +++++++++++++++++++ .../tests-printf_float/tests-printf_float.h | 38 +++++++++ 4 files changed, 118 insertions(+) create mode 100644 tests/unittests/tests-printf_float/Makefile create mode 100644 tests/unittests/tests-printf_float/Makefile.include create mode 100644 tests/unittests/tests-printf_float/tests-printf_float.c create mode 100644 tests/unittests/tests-printf_float/tests-printf_float.h diff --git a/tests/unittests/tests-printf_float/Makefile b/tests/unittests/tests-printf_float/Makefile new file mode 100644 index 0000000000..48422e909a --- /dev/null +++ b/tests/unittests/tests-printf_float/Makefile @@ -0,0 +1 @@ +include $(RIOTBASE)/Makefile.base diff --git a/tests/unittests/tests-printf_float/Makefile.include b/tests/unittests/tests-printf_float/Makefile.include new file mode 100644 index 0000000000..4f383954c9 --- /dev/null +++ b/tests/unittests/tests-printf_float/Makefile.include @@ -0,0 +1 @@ +USEMODULE += printf_float diff --git a/tests/unittests/tests-printf_float/tests-printf_float.c b/tests/unittests/tests-printf_float/tests-printf_float.c new file mode 100644 index 0000000000..dbcb0074aa --- /dev/null +++ b/tests/unittests/tests-printf_float/tests-printf_float.c @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2016 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 Implementations of unit tests for printing floating point numbers + * + * @author Hauke Petersen <hauke.petersen@fu-berlin.de> + * @} + */ + +#include <errno.h> +#include <stdio.h> +#include <string.h> + +#include "embUnit/embUnit.h" + +#include "tests-printf_float.h" + +#define BUFSIZE (10) + +static const double in0 = 2016.0349; +static const double in1 = 123.4567; +static const double in2 = 0.0; + +static void sfprintf_float(void) +{ + char tmp[BUFSIZE]; + char *str = tmp; + + snprintf(str, BUFSIZE, "%f", in0); + TEST_ASSERT_EQUAL_STRING("2016.0349", str); + + snprintf(str, BUFSIZE, "%.2f", in0); + TEST_ASSERT_EQUAL_STRING("2016.03", str); + + snprintf(str, BUFSIZE, "%.f", in0); + TEST_ASSERT_EQUAL_STRING("2016", str); + + snprintf(str, BUFSIZE, "%.4f", in1); + TEST_ASSERT_EQUAL_STRING("123.4567", str); + + snprintf(str, BUFSIZE, "%.2f", in1); + TEST_ASSERT_EQUAL_STRING("123.46", str); + + snprintf(str, BUFSIZE, "%4.f", in2); + TEST_ASSERT_EQUAL_STRING(" 0", str); + + snprintf(str, BUFSIZE, "%.3f", in2); + TEST_ASSERT_EQUAL_STRING("0.000", str); + + snprintf(str, BUFSIZE, "%2.04f", in2); + TEST_ASSERT_EQUAL_STRING("0.0000", str); +} + +Test *tests_printf_float_tests(void) +{ + EMB_UNIT_TESTFIXTURES(fixtures) { + new_TestFixture(sfprintf_float) + }; + + EMB_UNIT_TESTCALLER(pkt_tests, NULL, NULL, fixtures); + + return (Test *)&pkt_tests; +} + +void tests_printf_float(void) +{ + TESTS_RUN(tests_printf_float_tests()); +} diff --git a/tests/unittests/tests-printf_float/tests-printf_float.h b/tests/unittests/tests-printf_float/tests-printf_float.h new file mode 100644 index 0000000000..01afa14dd6 --- /dev/null +++ b/tests/unittests/tests-printf_float/tests-printf_float.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2016 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 Unit tests for printing floating point numbers + * + * @author Hauke Petersen <hauke.petersen@fu-berlin.de> + */ + +#ifndef TESTS_PRINTF_FLOAT_H_ +#define TESTS_PRINTF_FLOAT_H_ + +#include "embUnit.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief The entry point of this test suite + */ +void tests_printf_float(void); + +#ifdef __cplusplus +} +#endif + +#endif /* TESTS_PRINTF_FLOAT_H_ */ +/** @} */ -- GitLab