diff options
Diffstat (limited to 'tests/libntp/strtolfp.c')
-rw-r--r-- | tests/libntp/strtolfp.c | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/tests/libntp/strtolfp.c b/tests/libntp/strtolfp.c new file mode 100644 index 0000000000000..f40ab508a4afd --- /dev/null +++ b/tests/libntp/strtolfp.c @@ -0,0 +1,123 @@ +#include "config.h" + +#include "ntp_stdlib.h" +#include "ntp_calendar.h" + +#include "unity.h" +#include "lfptest.h" + +/* This file tests both atolfp and mstolfp */ + +void test_PositiveInteger(void); +void test_NegativeInteger(void); +void test_PositiveFraction(void); +void test_NegativeFraction(void); +void test_PositiveMsFraction(void); +void test_NegativeMsFraction(void); +void test_InvalidChars(void); + + +void test_PositiveInteger(void) { + const char *str = "500"; + const char *str_ms = "500000"; + + l_fp expected = {{500},0}; + l_fp actual, actual_ms; + + TEST_ASSERT_TRUE(atolfp(str, &actual)); + TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); + + TEST_ASSERT_TRUE(IsEqual(expected, actual)); + TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); +} + +void test_NegativeInteger(void) { + const char *str = "-300"; + const char *str_ms = "-300000"; + + l_fp expected; + expected.l_i = -300; + expected.l_uf = 0; + + l_fp actual, actual_ms; + + TEST_ASSERT_TRUE(atolfp(str, &actual)); + TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); + + TEST_ASSERT_TRUE(IsEqual(expected, actual)); + TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); +} + +void test_PositiveFraction(void) { + const char *str = "+500.5"; + const char *str_ms = "500500.0"; + + l_fp expected = {{500}, HALF}; + l_fp actual, actual_ms; + + TEST_ASSERT_TRUE(atolfp(str, &actual)); + TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); + + TEST_ASSERT_TRUE(IsEqual(expected, actual)); + TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); +} + +void test_NegativeFraction(void) { + const char *str = "-300.75"; + const char *str_ms = "-300750"; + + l_fp expected; + expected.l_i = -301; + expected.l_uf = QUARTER; + + l_fp actual, actual_ms; + + TEST_ASSERT_TRUE(atolfp(str, &actual)); + TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); + + TEST_ASSERT_TRUE(IsEqual(expected, actual)); + TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); +} + +void test_PositiveMsFraction(void) { + const char *str = "300.00025"; + const char *str_ms = "300000.25"; + + l_fp expected = {{300}, QUARTER_PROMILLE_APPRX}; + l_fp actual, actual_ms; + + + TEST_ASSERT_TRUE(atolfp(str, &actual)); + TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); + + TEST_ASSERT_TRUE(IsEqual(expected, actual)); + TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); + +} + +void test_NegativeMsFraction(void) { + const char *str = "-199.99975"; + const char *str_ms = "-199999.75"; + + l_fp expected; + expected.l_i = -200; + expected.l_uf = QUARTER_PROMILLE_APPRX; + + l_fp actual, actual_ms; + + TEST_ASSERT_TRUE(atolfp(str, &actual)); + TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); + + TEST_ASSERT_TRUE(IsEqual(expected, actual)); + TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); + +} + +void test_InvalidChars(void) { + const char *str = "500.4a2"; + l_fp actual, actual_ms; + + TEST_ASSERT_FALSE(atolfp(str, &actual)); + TEST_ASSERT_FALSE(mstolfp(str, &actual_ms)); +} + |