+++ /dev/null
-#include "sockaddrtest.h"
-
-class decodenetnumTest : public sockaddrtest {
-};
-
-TEST_F(decodenetnumTest, IPv4AddressOnly) {
- const char *str = "192.0.2.1";
- sockaddr_u actual;
-
- sockaddr_u expected;
- expected.sa4.sin_family = AF_INET;
- expected.sa4.sin_addr.s_addr = inet_addr("192.0.2.1");
- SET_PORT(&expected, NTP_PORT);
-
- ASSERT_TRUE(decodenetnum(str, &actual));
- EXPECT_TRUE(IsEqual(expected, actual));
-}
-
-TEST_F(decodenetnumTest, IPv4AddressWithPort) {
- const char *str = "192.0.2.2:2000";
- sockaddr_u actual;
-
- sockaddr_u expected;
- expected.sa4.sin_family = AF_INET;
- expected.sa4.sin_addr.s_addr = inet_addr("192.0.2.2");
- SET_PORT(&expected, 2000);
-
- ASSERT_TRUE(decodenetnum(str, &actual));
- EXPECT_TRUE(IsEqual(expected, actual));
-}
-
-TEST_F(decodenetnumTest, IPv6AddressOnly) {
- const struct in6_addr address = {
- 0x20, 0x01, 0x0d, 0xb8,
- 0x85, 0xa3, 0x08, 0xd3,
- 0x13, 0x19, 0x8a, 0x2e,
- 0x03, 0x70, 0x73, 0x34
- };
-
- const char *str = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";
- sockaddr_u actual;
-
- sockaddr_u expected;
- expected.sa6.sin6_family = AF_INET6;
- expected.sa6.sin6_addr = address;
- SET_PORT(&expected, NTP_PORT);
-
- ASSERT_TRUE(decodenetnum(str, &actual));
- EXPECT_TRUE(IsEqual(expected, actual));
-}
-
-TEST_F(decodenetnumTest, IPv6AddressWithPort) {
- const struct in6_addr address = {
- 0x20, 0x01, 0x0d, 0xb8,
- 0x85, 0xa3, 0x08, 0xd3,
- 0x13, 0x19, 0x8a, 0x2e,
- 0x03, 0x70, 0x73, 0x34
- };
-
- const char *str = "[2001:0db8:85a3:08d3:1319:8a2e:0370:7334]:3000";
- sockaddr_u actual;
-
- sockaddr_u expected;
- expected.sa6.sin6_family = AF_INET6;
- expected.sa6.sin6_addr = address;
- SET_PORT(&expected, 3000);
-
- ASSERT_TRUE(decodenetnum(str, &actual));
- EXPECT_TRUE(IsEqual(expected, actual));
-}
-
-TEST_F(decodenetnumTest, IllegalAddress) {
- const char *str = "192.0.2.270:2000";
- sockaddr_u actual;
-
- ASSERT_FALSE(decodenetnum(str, &actual));
-}
-
-TEST_F(decodenetnumTest, IllegalCharInPort) {
- /* An illegal port does not make the decodenetnum fail, but instead
- * makes it use the standard port.
- */
- const char *str = "192.0.2.1:a700";
- sockaddr_u actual;
-
- sockaddr_u expected;
- expected.sa4.sin_family = AF_INET;
- expected.sa4.sin_addr.s_addr = inet_addr("192.0.2.1");
- SET_PORT(&expected, NTP_PORT);
-
- ASSERT_TRUE(decodenetnum(str, &actual));
- EXPECT_TRUE(IsEqual(expected, actual));
-}
+++ /dev/null
-#include "lfptest.h"
-
-class hextolfpTest : public lfptest {
-};
-
-TEST_F(hextolfpTest, PositiveInteger) {
- const char *str = "00001000.00000000";
- l_fp actual;
-
- l_fp expected = {4096, 0}; // 16^3, no fraction part.
-
- ASSERT_TRUE(hextolfp(str, &actual));
- EXPECT_TRUE(IsEqual(expected, actual));
-}
-
-TEST_F(hextolfpTest, NegativeInteger) {
- const char *str = "ffffffff.00000000"; // -1 decimal
- l_fp actual;
-
- l_fp expected = {-1, 0};
-
- ASSERT_TRUE(hextolfp(str, &actual));
- EXPECT_TRUE(IsEqual(expected, actual));
-}
-
-TEST_F(hextolfpTest, PositiveFraction) {
- const char *str = "00002000.80000000"; // 8196.5 decimal
- l_fp actual;
-
- l_fp expected = {8192, HALF};
-
- ASSERT_TRUE(hextolfp(str, &actual));
- EXPECT_TRUE(IsEqual(expected, actual));
-}
-
-TEST_F(hextolfpTest, NegativeFraction) {
- const char *str = "ffffffff.40000000"; // -1 + 0.25 decimal
- l_fp actual;
-
- l_fp expected = {-1, QUARTER}; //-1 + 0.25
-
- ASSERT_TRUE(hextolfp(str, &actual));
- EXPECT_TRUE(IsEqual(expected, actual));
-}
-
-TEST_F(hextolfpTest, IllegalNumberOfInteger) {
- const char *str = "1000000.00000000"; // Missing one digit in integral part.
- l_fp actual;
-
- ASSERT_FALSE(hextolfp(str, &actual));
-}
-
-TEST_F(hextolfpTest, IllegalChar) {
- const char *str = "10000000.0000h000"; // Illegal character h.
- l_fp actual;
-
- ASSERT_FALSE(hextolfp(str, &actual));
-}
+++ /dev/null
-/*
- * This file contains test for both mfptoa and mfptoms (which uses dolfptoa),
- * since all these functions are very similar. It also tests ulfptoa, which is
- * a macro.
- */
-
-#include "libntptest.h"
-
-extern "C" {
-#include "ntp_fp.h"
-};
-
-class lfptostrTest : public libntptest {
-protected:
- static const int LFP_MAX_PRECISION = 10;
- static const int LFP_MAX_PRECISION_MS = 7;
-
- static const int ONE_FOURTH = 1073741824; // (1 << 30)
- static const int HALF = (1 << 31);
- static const int THREE_FOURTH = -ONE_FOURTH;
- static const int HALF_PROMILLE_UP = 2147484; // slightly more than 0.0005
- static const int HALF_PROMILLE_DOWN = 2147483; // slightly less than 0.0005
-};
-
-TEST_F(lfptostrTest, PositiveInteger) {
- l_fp test = {200, 0}; // exact 200.0000000000
-
- EXPECT_STREQ("200.0000000000", mfptoa(test.l_ui, test.l_uf, LFP_MAX_PRECISION));
- EXPECT_STREQ("200000.0000000", mfptoms(test.l_ui, test.l_uf, LFP_MAX_PRECISION_MS));
-}
-
-TEST_F(lfptostrTest, NegativeInteger) {
- l_fp test = {-100, 0}; // -100
-
- EXPECT_STREQ("-100.0000000000", lfptoa(&test, LFP_MAX_PRECISION));
- EXPECT_STREQ("-100000.0000000", lfptoms(&test, LFP_MAX_PRECISION_MS));
-}
-
-TEST_F(lfptostrTest, PositiveIntegerWithFraction) {
- l_fp test = {200, ONE_FOURTH}; // 200.25
-
- EXPECT_STREQ("200.2500000000", lfptoa(&test, LFP_MAX_PRECISION));
- EXPECT_STREQ("200250.0000000", lfptoms(&test, LFP_MAX_PRECISION_MS));
-}
-
-TEST_F(lfptostrTest, NegativeIntegerWithFraction) {
- l_fp test = {-100, ONE_FOURTH}; // -99.75
-
- EXPECT_STREQ("-99.7500000000", lfptoa(&test, LFP_MAX_PRECISION));
- EXPECT_STREQ("-99750.0000000", lfptoms(&test, LFP_MAX_PRECISION_MS));
-}
-
-TEST_F(lfptostrTest, RoundingDownToInteger) {
- l_fp test = {10, ONE_FOURTH}; // 10.25
-
- EXPECT_STREQ("10", lfptoa(&test, 0));
- EXPECT_STREQ("10250", lfptoms(&test, 0));
-}
-
-TEST_F(lfptostrTest, RoundingMiddleToInteger) {
- l_fp test = {10, HALF}; // 10.5
-
- EXPECT_STREQ("11", lfptoa(&test, 0));
- EXPECT_STREQ("10500", lfptoms(&test, 0));
-}
-
-TEST_F(lfptostrTest, RoundingUpToInteger) {
- l_fp test = {5, THREE_FOURTH}; // 5.75
-
- EXPECT_STREQ("6", lfptoa(&test, 0));
- EXPECT_STREQ("5750", lfptoms(&test, 0));
-}
-
-TEST_F(lfptostrTest, SingleDecimal) {
- l_fp test = {8, ONE_FOURTH}; // 8.25
-
- EXPECT_STREQ("8.3", lfptoa(&test, 1));
- EXPECT_STREQ("8250.0", lfptoms(&test, 1));
-}
-
-TEST_F(lfptostrTest, MillisecondsRoundingUp) {
- l_fp test = {1, HALF_PROMILLE_UP}; //slightly more than 1.0005
-
- EXPECT_STREQ("1.0", lfptoa(&test, 1));
-
- EXPECT_STREQ("1000.5", lfptoms(&test, 1));
- EXPECT_STREQ("1001", lfptoms(&test, 0));
-}
-
-TEST_F(lfptostrTest, MillisecondsRoundingDown) {
- l_fp test = {1, HALF_PROMILLE_DOWN}; // slightly less than 1.0005
-
- EXPECT_STREQ("1.0", lfptoa(&test, 1));
-
- EXPECT_STREQ("1000.5", lfptoms(&test, 1));
- EXPECT_STREQ("1000", lfptoms(&test, 0));
-}
-
-TEST_F(lfptostrTest, UnsignedInteger) {
- l_fp test = {3000000000UL, 0};
-
- EXPECT_STREQ("3000000000.0", ulfptoa(&test, 1));
-}
+++ /dev/null
-#include "sockaddrtest.h"
-
-class netofTest : public sockaddrtest {
-};
-
-TEST_F(netofTest, ClassBAddress) {
- sockaddr_u input = CreateSockaddr4("172.16.2.1", NTP_PORT);
- sockaddr_u expected = CreateSockaddr4("172.16.0.0", NTP_PORT);
-
- sockaddr_u* actual = netof(&input);
-
- ASSERT_TRUE(actual != NULL);
- EXPECT_TRUE(IsEqual(expected, *actual));
-}
-
-TEST_F(netofTest, ClassCAddress) {
- sockaddr_u input = CreateSockaddr4("192.0.2.255", NTP_PORT);
- sockaddr_u expected = CreateSockaddr4("192.0.2.0", NTP_PORT);
-
- sockaddr_u* actual = netof(&input);
-
- ASSERT_TRUE(actual != NULL);
- EXPECT_TRUE(IsEqual(expected, *actual));
-}
-
-TEST_F(netofTest, ClassAAddress) {
- /* Class A addresses are assumed to be classless,
- * thus the same address should be returned.
- */
- sockaddr_u input = CreateSockaddr4("10.20.30.40", NTP_PORT);
- sockaddr_u expected = CreateSockaddr4("10.20.30.40", NTP_PORT);
-
- sockaddr_u* actual = netof(&input);
-
- ASSERT_TRUE(actual != NULL);
- EXPECT_TRUE(IsEqual(expected, *actual));
-}
-
-TEST_F(netofTest, IPv6Address) {
- /* IPv6 addresses are assumed to have 64-bit host- and 64-bit network parts. */
- const struct in6_addr input_address = {
- 0x20, 0x01, 0x0d, 0xb8,
- 0x85, 0xa3, 0x08, 0xd3,
- 0x13, 0x19, 0x8a, 0x2e,
- 0x03, 0x70, 0x73, 0x34
- }; // 2001:0db8:85a3:08d3:1319:8a2e:0370:7334
-
- const struct in6_addr expected_address = {
- 0x20, 0x01, 0x0d, 0xb8,
- 0x85, 0xa3, 0x08, 0xd3,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00
- }; // 2001:0db8:85a3:08d3:0000:0000:0000:0000
-
- sockaddr_u input;
- input.sa6.sin6_family = AF_INET6;
- input.sa6.sin6_addr = input_address;
- SET_PORT(&input, 3000);
-
- sockaddr_u expected;
- expected.sa6.sin6_family = AF_INET6;
- expected.sa6.sin6_addr = expected_address;
- SET_PORT(&expected, 3000);
-
- sockaddr_u* actual = netof(&input);
-
- ASSERT_TRUE(actual != NULL);
- EXPECT_TRUE(IsEqual(expected, *actual));
-}
+++ /dev/null
-#include "libntptest.h"
-
-class octtointTest : public libntptest {
-};
-
-TEST_F(octtointTest, SingleDigit) {
- const char* str = "5";
- u_long actual;
-
- ASSERT_TRUE(octtoint(str, &actual));
- EXPECT_EQ(5, actual);
-}
-
-TEST_F(octtointTest, MultipleDigits) {
- const char* str = "271";
- u_long actual;
-
- ASSERT_TRUE(octtoint(str, &actual));
- EXPECT_EQ(185, actual);
-}
-
-TEST_F(octtointTest, Zero) {
- const char* str = "0";
- u_long actual;
-
- ASSERT_TRUE(octtoint(str, &actual));
- EXPECT_EQ(0, actual);
-}
-
-TEST_F(octtointTest, MaximumUnsigned32bit) {
- const char* str = "37777777777";
- u_long actual;
-
- ASSERT_TRUE(octtoint(str, &actual));
- EXPECT_EQ(4294967295UL, actual);
-}
-
-TEST_F(octtointTest, Overflow) {
- const char* str = "40000000000";
- u_long actual;
-
- ASSERT_FALSE(octtoint(str, &actual));
-}
-
-TEST_F(octtointTest, IllegalCharacter) {
- const char* str = "5ac2";
- u_long actual;
-
- ASSERT_FALSE(octtoint(str, &actual));
-}
-
-TEST_F(octtointTest, IllegalDigit) {
- const char* str = "5283";
- u_long actual;
-
- ASSERT_FALSE(octtoint(str, &actual));
-}
+++ /dev/null
-#include "lfptest.h"
-
-/* This class tests both atolfp and mstolfp */
-
-class strtolfpTest : public lfptest {
-};
-
-TEST_F(strtolfpTest, PositiveInteger) {
- const char *str = "500";
- const char *str_ms = "500000";
-
- l_fp expected = {500,0};
- l_fp actual, actual_ms;
-
- ASSERT_TRUE(atolfp(str, &actual));
- ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
-
- EXPECT_TRUE(IsEqual(expected, actual));
- EXPECT_TRUE(IsEqual(expected, actual_ms));
-}
-
-TEST_F(strtolfpTest, NegativeInteger) {
- const char *str = "-300";
- const char *str_ms = "-300000";
-
- l_fp expected;
- expected.l_i = -300;
- expected.l_uf = 0;
-
- l_fp actual, actual_ms;
-
- ASSERT_TRUE(atolfp(str, &actual));
- ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
-
- EXPECT_TRUE(IsEqual(expected, actual));
- EXPECT_TRUE(IsEqual(expected, actual_ms));
-}
-
-TEST_F(strtolfpTest, PositiveFraction) {
- const char *str = "+500.5";
- const char *str_ms = "500500.0";
-
- l_fp expected = {500, HALF};
- l_fp actual, actual_ms;
-
- ASSERT_TRUE(atolfp(str, &actual));
- ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
-
- EXPECT_TRUE(IsEqual(expected, actual));
- EXPECT_TRUE(IsEqual(expected, actual_ms));
-}
-
-TEST_F(strtolfpTest, NegativeFraction) {
- const char *str = "-300.75";
- const char *str_ms = "-300750";
-
- l_fp expected;
- expected.l_i = -301;
- expected.l_uf = QUARTER;
-
- l_fp actual, actual_ms;
-
- ASSERT_TRUE(atolfp(str, &actual));
- ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
-
- EXPECT_TRUE(IsEqual(expected, actual));
- EXPECT_TRUE(IsEqual(expected, actual_ms));
-}
-
-TEST_F(strtolfpTest, PositiveMsFraction) {
- const char *str = "300.00025";
- const char *str_ms = "300000.25";
-
- l_fp expected = {300, QUARTER_PROMILLE_APPRX};
- l_fp actual, actual_ms;
-
- ASSERT_TRUE(atolfp(str, &actual));
- ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
-
- EXPECT_TRUE(IsEqual(expected, actual));
- EXPECT_TRUE(IsEqual(expected, actual_ms));
-}
-
-TEST_F(strtolfpTest, NegativeMsFraction) {
- const char *str = "-199.99975";
- const char *str_ms = "-199999.75";
-
- l_fp expected;
- expected.l_i = -200;
- expected.l_uf = QUARTER_PROMILLE_APPRX;
-
- l_fp actual, actual_ms;
-
- ASSERT_TRUE(atolfp(str, &actual));
- ASSERT_TRUE(mstolfp(str_ms, &actual_ms));
-
- EXPECT_TRUE(IsEqual(expected, actual));
- EXPECT_TRUE(IsEqual(expected, actual_ms));
-}
-
-TEST_F(strtolfpTest, InvalidChars) {
- const char *str = "500.4a2";
- l_fp actual, actual_ms;
-
- ASSERT_FALSE(atolfp(str, &actual));
- ASSERT_FALSE(mstolfp(str, &actual_ms));
-}