1 /* $NetBSD: strtolfp.c,v 1.1.1.2 2015/07/10 13:11:14 christos Exp $ */ 2 3 #include "config.h" 4 5 #include "ntp_stdlib.h" 6 #include "ntp_calendar.h" 7 8 #include "unity.h" 9 #include "lfptest.h" 10 11 /* This file tests both atolfp and mstolfp */ 12 13 void test_PositiveInteger(void) { 14 const char *str = "500"; 15 const char *str_ms = "500000"; 16 17 l_fp expected = {500,0}; 18 l_fp actual, actual_ms; 19 20 TEST_ASSERT_TRUE(atolfp(str, &actual)); 21 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 22 23 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 24 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 25 } 26 27 void test_NegativeInteger(void) { 28 const char *str = "-300"; 29 const char *str_ms = "-300000"; 30 31 l_fp expected; 32 expected.l_i = -300; 33 expected.l_uf = 0; 34 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_PositiveFraction(void) { 45 const char *str = "+500.5"; 46 const char *str_ms = "500500.0"; 47 48 l_fp expected = {500, HALF}; 49 l_fp actual, actual_ms; 50 51 TEST_ASSERT_TRUE(atolfp(str, &actual)); 52 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 53 54 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 55 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 56 } 57 58 void test_NegativeFraction(void) { 59 const char *str = "-300.75"; 60 const char *str_ms = "-300750"; 61 62 l_fp expected; 63 expected.l_i = -301; 64 expected.l_uf = QUARTER; 65 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_PositiveMsFraction(void) { 76 const char *str = "300.00025"; 77 const char *str_ms = "300000.25"; 78 79 l_fp expected = {300, QUARTER_PROMILLE_APPRX}; 80 l_fp actual, actual_ms; 81 82 83 TEST_ASSERT_TRUE(atolfp(str, &actual)); 84 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 85 86 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 87 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 88 89 } 90 91 void test_NegativeMsFraction(void) { 92 const char *str = "-199.99975"; 93 const char *str_ms = "-199999.75"; 94 95 l_fp expected; 96 expected.l_i = -200; 97 expected.l_uf = QUARTER_PROMILLE_APPRX; 98 99 l_fp actual, actual_ms; 100 101 TEST_ASSERT_TRUE(atolfp(str, &actual)); 102 TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 103 104 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 105 TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 106 107 } 108 109 void test_InvalidChars(void) { 110 const char *str = "500.4a2"; 111 l_fp actual, actual_ms; 112 113 TEST_ASSERT_FALSE(atolfp(str, &actual)); 114 TEST_ASSERT_FALSE(mstolfp(str, &actual_ms)); 115 } 116 117