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