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