strtolfp.c revision 293893
1#include "config.h" 2 3#include "ntp_stdlib.h" 4#include "ntp_calendar.h" 5 6#include "unity.h" 7#include "lfptest.h" 8 9/* This file tests both atolfp and mstolfp */ 10 11void setUp(void); 12void test_PositiveInteger(void); 13void test_NegativeInteger(void); 14void test_PositiveFraction(void); 15void test_NegativeFraction(void); 16void test_PositiveMsFraction(void); 17void test_NegativeMsFraction(void); 18void test_InvalidChars(void); 19 20 21void 22setUp(void) 23{ 24 init_lib(); 25 26 return; 27} 28 29 30void test_PositiveInteger(void) { 31 const char *str = "500"; 32 const char *str_ms = "500000"; 33 34 l_fp expected = {{500},0}; 35 l_fp actual, actual_ms; 36 37 TEST_ASSERT_TRUE(atolfp(str, &actual)); 38 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 39 40 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 41 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 42} 43 44void test_NegativeInteger(void) { 45 const char *str = "-300"; 46 const char *str_ms = "-300000"; 47 48 l_fp expected; 49 expected.l_i = -300; 50 expected.l_uf = 0; 51 52 l_fp actual, actual_ms; 53 54 TEST_ASSERT_TRUE(atolfp(str, &actual)); 55 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 56 57 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 58 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 59} 60 61void test_PositiveFraction(void) { 62 const char *str = "+500.5"; 63 const char *str_ms = "500500.0"; 64 65 l_fp expected = {{500}, HALF}; 66 l_fp actual, actual_ms; 67 68 TEST_ASSERT_TRUE(atolfp(str, &actual)); 69 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 70 71 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 72 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 73} 74 75void test_NegativeFraction(void) { 76 const char *str = "-300.75"; 77 const char *str_ms = "-300750"; 78 79 l_fp expected; 80 expected.l_i = -301; 81 expected.l_uf = QUARTER; 82 83 l_fp actual, actual_ms; 84 85 TEST_ASSERT_TRUE(atolfp(str, &actual)); 86 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 87 88 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 89 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 90} 91 92void test_PositiveMsFraction(void) { 93 const char *str = "300.00025"; 94 const char *str_ms = "300000.25"; 95 96 l_fp expected = {{300}, QUARTER_PROMILLE_APPRX}; 97 l_fp actual, actual_ms; 98 99 100 TEST_ASSERT_TRUE(atolfp(str, &actual)); 101 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 102 103 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 104 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 105 106} 107 108void test_NegativeMsFraction(void) { 109 const char *str = "-199.99975"; 110 const char *str_ms = "-199999.75"; 111 112 l_fp expected; 113 expected.l_i = -200; 114 expected.l_uf = QUARTER_PROMILLE_APPRX; 115 116 l_fp actual, actual_ms; 117 118 TEST_ASSERT_TRUE(atolfp(str, &actual)); 119 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 120 121 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 122 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 123 124} 125 126void test_InvalidChars(void) { 127 const char *str = "500.4a2"; 128 l_fp actual, actual_ms; 129 130 TEST_ASSERT_FALSE(atolfp(str, &actual)); 131 TEST_ASSERT_FALSE(mstolfp(str, &actual_ms)); 132} 133 134