1290001Sglebius#include "config.h" 2290001Sglebius 3290001Sglebius#include "ntp_stdlib.h" 4290001Sglebius#include "ntp_calendar.h" 5290001Sglebius 6290001Sglebius#include "unity.h" 7290001Sglebius#include "lfptest.h" 8290001Sglebius 9290001Sglebius/* This file tests both atolfp and mstolfp */ 10290001Sglebius 11293896Sglebiusvoid setUp(void); 12290001Sglebiusvoid test_PositiveInteger(void); 13290001Sglebiusvoid test_NegativeInteger(void); 14290001Sglebiusvoid test_PositiveFraction(void); 15290001Sglebiusvoid test_NegativeFraction(void); 16290001Sglebiusvoid test_PositiveMsFraction(void); 17290001Sglebiusvoid test_NegativeMsFraction(void); 18290001Sglebiusvoid test_InvalidChars(void); 19290001Sglebius 20290001Sglebius 21293896Sglebiusvoid 22293896SglebiussetUp(void) 23293896Sglebius{ 24293896Sglebius init_lib(); 25293896Sglebius 26293896Sglebius return; 27293896Sglebius} 28293896Sglebius 29293896Sglebius 30290001Sglebiusvoid test_PositiveInteger(void) { 31290001Sglebius const char *str = "500"; 32290001Sglebius const char *str_ms = "500000"; 33290001Sglebius 34290001Sglebius l_fp expected = {{500},0}; 35290001Sglebius l_fp actual, actual_ms; 36290001Sglebius 37290001Sglebius TEST_ASSERT_TRUE(atolfp(str, &actual)); 38290001Sglebius TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 39290001Sglebius 40290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual)); 41290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 42290001Sglebius} 43290001Sglebius 44290001Sglebiusvoid test_NegativeInteger(void) { 45290001Sglebius const char *str = "-300"; 46290001Sglebius const char *str_ms = "-300000"; 47290001Sglebius 48290001Sglebius l_fp expected; 49290001Sglebius expected.l_i = -300; 50290001Sglebius expected.l_uf = 0; 51290001Sglebius 52290001Sglebius l_fp actual, actual_ms; 53290001Sglebius 54290001Sglebius TEST_ASSERT_TRUE(atolfp(str, &actual)); 55290001Sglebius TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 56290001Sglebius 57290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual)); 58290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 59290001Sglebius} 60290001Sglebius 61290001Sglebiusvoid test_PositiveFraction(void) { 62290001Sglebius const char *str = "+500.5"; 63290001Sglebius const char *str_ms = "500500.0"; 64290001Sglebius 65290001Sglebius l_fp expected = {{500}, HALF}; 66290001Sglebius l_fp actual, actual_ms; 67290001Sglebius 68290001Sglebius TEST_ASSERT_TRUE(atolfp(str, &actual)); 69290001Sglebius TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 70290001Sglebius 71290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual)); 72290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 73290001Sglebius} 74290001Sglebius 75290001Sglebiusvoid test_NegativeFraction(void) { 76290001Sglebius const char *str = "-300.75"; 77290001Sglebius const char *str_ms = "-300750"; 78290001Sglebius 79290001Sglebius l_fp expected; 80290001Sglebius expected.l_i = -301; 81290001Sglebius expected.l_uf = QUARTER; 82290001Sglebius 83290001Sglebius l_fp actual, actual_ms; 84290001Sglebius 85290001Sglebius TEST_ASSERT_TRUE(atolfp(str, &actual)); 86290001Sglebius TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 87290001Sglebius 88290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual)); 89290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 90290001Sglebius} 91290001Sglebius 92290001Sglebiusvoid test_PositiveMsFraction(void) { 93290001Sglebius const char *str = "300.00025"; 94290001Sglebius const char *str_ms = "300000.25"; 95290001Sglebius 96290001Sglebius l_fp expected = {{300}, QUARTER_PROMILLE_APPRX}; 97290001Sglebius l_fp actual, actual_ms; 98290001Sglebius 99290001Sglebius 100290001Sglebius TEST_ASSERT_TRUE(atolfp(str, &actual)); 101290001Sglebius TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 102290001Sglebius 103290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual)); 104290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 105290001Sglebius 106290001Sglebius} 107290001Sglebius 108290001Sglebiusvoid test_NegativeMsFraction(void) { 109290001Sglebius const char *str = "-199.99975"; 110290001Sglebius const char *str_ms = "-199999.75"; 111290001Sglebius 112290001Sglebius l_fp expected; 113290001Sglebius expected.l_i = -200; 114290001Sglebius expected.l_uf = QUARTER_PROMILLE_APPRX; 115290001Sglebius 116290001Sglebius l_fp actual, actual_ms; 117290001Sglebius 118290001Sglebius TEST_ASSERT_TRUE(atolfp(str, &actual)); 119290001Sglebius TEST_ASSERT_TRUE(mstolfp(str_ms, &actual_ms)); 120290001Sglebius 121290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual)); 122290001Sglebius TEST_ASSERT_TRUE(IsEqual(expected, actual_ms)); 123290001Sglebius 124290001Sglebius} 125290001Sglebius 126290001Sglebiusvoid test_InvalidChars(void) { 127290001Sglebius const char *str = "500.4a2"; 128290001Sglebius l_fp actual, actual_ms; 129290001Sglebius 130290001Sglebius TEST_ASSERT_FALSE(atolfp(str, &actual)); 131290001Sglebius TEST_ASSERT_FALSE(mstolfp(str, &actual_ms)); 132290001Sglebius} 133290001Sglebius 134