Home | History | Annotate | Line # | Download | only in libntp
strtolfp.c revision 1.1.1.5.14.1
      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