summaryrefslogtreecommitdiff
path: root/tests/libntp/refnumtoa.cpp
blob: 75460c0b52ba5c704b0ab6a54bbb8c28a6a01fe7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "libntptest.h"

#include "ntp_net.h"
#include "ntp_refclock.h"

#include <sstream>

class refnumtoaTest : public libntptest {
protected:
	/* Might need to be updated if a new refclock gets this id. */
	static const int UNUSED_REFCLOCK_ID = 250;
};

#ifdef REFCLOCK		/* clockname() is useless otherwise */
TEST_F(refnumtoaTest, LocalClock) {
	/* We test with a refclock address of type LOCALCLOCK.
	 * with id 8
	 */
	u_int32 addr = REFCLOCK_ADDR;
	addr |= REFCLK_LOCALCLOCK << 8;
	addr |= 0x8;

	sockaddr_u address;
	address.sa4.sin_family = AF_INET;
	address.sa4.sin_addr.s_addr = htonl(addr);

	std::ostringstream expected;
	expected << clockname(REFCLK_LOCALCLOCK)
			 << "(8)";

	EXPECT_STREQ(expected.str().c_str(), refnumtoa(&address));
}
#endif	/* REFCLOCK */

#ifdef REFCLOCK		/* refnumtoa() is useless otherwise */
TEST_F(refnumtoaTest, UnknownId) {
	/* We test with a currently unused refclock ID */
	u_int32 addr = REFCLOCK_ADDR;
	addr |= UNUSED_REFCLOCK_ID << 8;
	addr |= 0x4;

	sockaddr_u address;
	address.sa4.sin_family = AF_INET;
	address.sa4.sin_addr.s_addr = htonl(addr);

	std::ostringstream expected;
	expected << "REFCLK(" << UNUSED_REFCLOCK_ID
			 << ",4)";

	EXPECT_STREQ(expected.str().c_str(), refnumtoa(&address));
}
#endif	/* REFCLOCK */