From: Linux Karlsson Date: Fri, 29 Oct 2010 18:13:53 +0000 (+0200) Subject: Fixed floating point test errors. X-Git-Tag: NTP_4_2_7P75~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d35420b3ce861fa4ab47ea437b8e2148e02a3b63;p=thirdparty%2Fntp.git Fixed floating point test errors. bk: 4ccb0ee1igDj5zZ0vXVnqpX-WjHUSA --- diff --git a/tests/libntp/buftvtots.cpp b/tests/libntp/buftvtots.cpp index 3bfa575be..09c9e709d 100644 --- a/tests/libntp/buftvtots.cpp +++ b/tests/libntp/buftvtots.cpp @@ -18,14 +18,23 @@ TEST_F(buftvtotsTest, ZeroBuffer) { EXPECT_TRUE(IsEqual(expected, actual)); } -TEST_F(buftvtotsTest, DISABLED_IntegerAndFractionalBuffer) { +TEST_F(buftvtotsTest, IntegerAndFractionalBuffer) { const timeval input = {5, 500000}; // 5.5 const l_fp expected = {5 + JAN_1970, HALF}; l_fp actual; ASSERT_TRUE(buftvtots((const char*)(&input), &actual)); - EXPECT_TRUE(IsEqual(expected, actual)); + + // Compare the fractional part with an absolute error given. + EXPECT_EQ(expected.l_ui, actual.l_ui); + + double expectedDouble, actualDouble; + M_LFPTOD(0, expected.l_uf, expectedDouble); + M_LFPTOD(0, actual.l_uf, actualDouble); + + // The error should be less than 0.5 us + EXPECT_NEAR(expectedDouble, actualDouble, 0.0000005); } TEST_F(buftvtotsTest, IllegalMicroseconds) { diff --git a/tests/libntp/tvtots.cpp b/tests/libntp/tvtots.cpp index cad22aebb..06a432338 100644 --- a/tests/libntp/tvtots.cpp +++ b/tests/libntp/tvtots.cpp @@ -31,13 +31,21 @@ TEST_F(tvtotsTest, MicrosecondsRounded) { EXPECT_TRUE(IsEqual(expected, actual)); } -TEST_F(tvtotsTest, DISABLED_MicrosecondsExact) { +TEST_F(tvtotsTest, MicrosecondsExact) { // 0.5 can be represented exact in both l_fp and timeval. - - timeval input = {10, 500000}; // 0.5 exact - l_fp expected = {10, HALF}; // 0.5 exact + const timeval input = {10, 500000}; // 0.5 exact + const l_fp expected = {10, HALF}; // 0.5 exact l_fp actual; TVTOTS(&input, &actual); - EXPECT_TRUE(IsEqual(expected, actual)); + + // Compare the fractional part with an absolute error given. + EXPECT_EQ(expected.l_ui, actual.l_ui); + + double expectedDouble, actualDouble; + M_LFPTOD(0, expected.l_uf, expectedDouble); + M_LFPTOD(0, actual.l_uf, actualDouble); + + // The error should be less than 0.5 us + EXPECT_NEAR(expectedDouble, actualDouble, 0.0000005); }