1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

Merge pull request #5568 from gebart/haukepetersen-fix_test_printffloat

tests: moved printf_float test to unittests [adopted]
This commit is contained in:
kYc0o 2016-07-19 02:22:54 +02:00 committed by GitHub
commit 75c16702e3
6 changed files with 118 additions and 57 deletions

View File

@ -1,6 +0,0 @@
APPLICATION = test_printf_float
include ../Makefile.tests_common
USEMODULE += printf_float
include $(RIOTBASE)/Makefile.include

View File

@ -1,51 +0,0 @@
/*
* Copyright (C) 2016 Alexandre Abadie <alexandre.abadie@inria.fr>
*
* 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.
*/
/**
* @ingroup tests
* @{
*
* @file
* @brief print floating point values test application
*
* This test is supposed to check that floating point values can be
* displayed with printf function.
*
* @author Alexandre Abadie <alexandre.abadie@inria.fr>
*
* @}
*/
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
static const char * expected_result = "2016.0";
static const double floating_point_value = 2016.0317;
int main(void)
{
const uint8_t str_len = strlen(expected_result);
char result[str_len];
snprintf(result, str_len + 1,
"%.1f", floating_point_value);
printf("Value displayed: %s\n", result);
if (strcmp(result, expected_result) == 0) {
printf("[OK]\n");
}
else {
printf("[FAILED] Values are not equal:\n"
"actual: %s\n"
"expected: %s\n", result, expected_result);
return 1;
}
return 0;
}

View File

@ -0,0 +1 @@
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1 @@
USEMODULE += printf_float

View File

@ -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());
}

View File

@ -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_ */
/** @} */