buftvtots.c revision 284990
1#include "config.h" 2#include "ntp_types.h" 3#include "ntp_stdlib.h" 4 5#include "lfptest.h" 6 7#include "ntp_unixtime.h" 8 9#include "unity.h" 10 11// Required for Solaris. 12#include <math.h> 13 14 15 16void test_ZeroBuffer() { 17#ifndef SYS_WINNT 18 const struct timeval input = {0, 0}; 19 const l_fp expected = {0 + JAN_1970, 0}; 20 21 l_fp actual; 22 23 TEST_ASSERT_TRUE(buftvtots((const char*)(&input), &actual)); 24 TEST_ASSERT_TRUE(IsEqual(expected, actual)); 25#else 26 TEST_IGNORE_MESSAGE("Test only for Windows, skipping..."); 27#endif 28} 29 30void test_IntegerAndFractionalBuffer() { 31#ifndef SYS_WINNT 32 const struct timeval input = {5, 500000}; // 5.5 33 const l_fp expected = {5 + JAN_1970, HALF}; 34 35 l_fp actual; 36 37 TEST_ASSERT_TRUE(buftvtots((const char*)(&input), &actual)); 38 39 // Compare the fractional part with an absolute error given. 40 TEST_ASSERT_EQUAL(expected.l_ui, actual.l_ui); 41 42 double expectedDouble, actualDouble; 43 M_LFPTOD(0, expected.l_uf, expectedDouble); 44 M_LFPTOD(0, actual.l_uf, actualDouble); 45 46 // The error should be less than 0.5 us 47 TEST_ASSERT_DOUBLE_WITHIN(0.0000005,expectedDouble,actualDouble); //delta,epected,actual //_EXPECT_NEAR(expectedDouble, actualDouble, 0.0000005); 48#else 49 TEST_IGNORE_MESSAGE("Test only for Windows, skipping..."); 50#endif 51} 52 53void test_IllegalMicroseconds() { 54#ifndef SYS_WINNT 55 const struct timeval input = {0, 1100000}; // > 999 999 microseconds. 56 57 l_fp actual; 58 59 TEST_ASSERT_FALSE(buftvtots((const char*)(&input), &actual)); 60#else 61 TEST_IGNORE_MESSAGE("Test only for Windows, skipping..."); 62#endif 63} 64 65 66void test_AlwaysFalseOnWindows() { 67#ifdef SYS_WINNT 68 /* 69 * Under Windows, buftvtots will just return 70 * 0 (false). 71 */ 72 l_fp actual; 73 TEST_ASSERT_FALSE(buftvtots("", &actual)); 74#else 75 TEST_IGNORE_MESSAGE("Non-Windows test, skipping..."); 76#endif 77} 78 79