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 11 void setUp(void); 12 void test_PositiveInteger(void); 13 void test_NegativeInteger(void); 14 void test_PositiveFraction(void); 15 void test_NegativeFraction(void); 16 void test_PositiveMsFraction(void); 17 void test_NegativeMsFraction(void); 18 void test_InvalidChars(void); 19 20 21 void 22 setUp(void) 23 { 24 init_lib(); 25 26 return; 27 } 28 29 30 void 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 44 void 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 61 void 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 75 void 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 92 void 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 108 void 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 126 void 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