Home | History | Annotate | Line # | Download | only in libntp
strtolfp.c revision 1.1.1.3.10.2
      1 /*	$NetBSD: strtolfp.c,v 1.1.1.3.10.2 2015/11/08 01:55:37 riz 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 void test_NegativeInteger(void);
     15 void test_PositiveFraction(void);
     16 void test_NegativeFraction(void);
     17 void test_PositiveMsFraction(void);
     18 void test_NegativeMsFraction(void);
     19 void test_InvalidChars(void);
     20 
     21 
     22 void test_PositiveInteger(void) {
     23 	const char *str = "500";
     24 	const char *str_ms = "500000";
     25 
     26 	l_fp expected = {{500},0};
     27 	l_fp actual, actual_ms;
     28 
     29 	TEST_ASSERT_TRUE(atolfp(str, &actual));
     30 	TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
     31 
     32 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
     33 	TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
     34 }
     35 
     36 void test_NegativeInteger(void) {
     37 	const char *str = "-300";
     38 	const char *str_ms = "-300000";
     39 
     40 	l_fp expected;
     41 	expected.l_i = -300;
     42 	expected.l_uf = 0;
     43 
     44 	l_fp actual, actual_ms;
     45 
     46 	TEST_ASSERT_TRUE(atolfp(str, &actual));
     47 	TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
     48 
     49 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
     50 	TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
     51 }
     52 
     53 void test_PositiveFraction(void) {
     54 	const char *str = "+500.5";
     55 	const char *str_ms = "500500.0";
     56 
     57 	l_fp expected = {{500}, HALF};
     58 	l_fp actual, actual_ms;
     59 
     60 	TEST_ASSERT_TRUE(atolfp(str, &actual));
     61 	TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
     62 
     63 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
     64 	TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
     65 }
     66 
     67 void test_NegativeFraction(void) {
     68 	const char *str = "-300.75";
     69 	const char *str_ms = "-300750";
     70 
     71 	l_fp expected;
     72 	expected.l_i = -301;
     73 	expected.l_uf = QUARTER;
     74 
     75 	l_fp actual, actual_ms;
     76 
     77 	TEST_ASSERT_TRUE(atolfp(str, &actual));
     78 	TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
     79 
     80 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
     81 	TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
     82 }
     83 
     84 void test_PositiveMsFraction(void) {
     85 	const char *str = "300.00025";
     86 	const char *str_ms = "300000.25";
     87 
     88 	l_fp expected = {{300}, QUARTER_PROMILLE_APPRX};
     89 	l_fp actual, actual_ms;
     90 
     91 
     92 	TEST_ASSERT_TRUE(atolfp(str, &actual));
     93 	TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
     94 
     95 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
     96 	TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
     97 
     98 }
     99 
    100 void test_NegativeMsFraction(void) {
    101 	const char *str = "-199.99975";
    102 	const char *str_ms = "-199999.75";
    103 
    104 	l_fp expected;
    105 	expected.l_i = -200;
    106 	expected.l_uf = QUARTER_PROMILLE_APPRX;
    107 
    108 	l_fp actual, actual_ms;
    109 
    110 	TEST_ASSERT_TRUE(atolfp(str, &actual));
    111 	TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
    112 
    113 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
    114 	TEST_ASSERT_TRUE(IsEqual(expected, actual_ms));
    115 
    116 }
    117 
    118 void test_InvalidChars(void) {
    119 	const char *str = "500.4a2";
    120 	l_fp actual, actual_ms;
    121 
    122 	TEST_ASSERT_FALSE(atolfp(str, &actual));
    123 	TEST_ASSERT_FALSE(mstolfp(str, &actual_ms));
    124 }
    125 
    126