1290001Sglebius#include "config.h"
2290001Sglebius
3290001Sglebius#include "ntp_net.h"
4290001Sglebius#include "ntp_refclock.h"
5290001Sglebius
6290001Sglebius#include "unity.h"
7290001Sglebius
8290001Sglebius
9290001Sglebius/* Might need to be updated if a new refclock gets this id. */
10290001Sglebiusstatic const int UNUSED_REFCLOCK_ID = 250;
11290001Sglebius
12293896Sglebiusvoid setUp(void);
13290001Sglebiusvoid test_LocalClock(void);
14290001Sglebiusvoid test_UnknownId(void);
15290001Sglebius
16290001Sglebius
17290001Sglebiusvoid
18293896SglebiussetUp(void)
19293896Sglebius{
20293896Sglebius	init_lib();
21293896Sglebius
22293896Sglebius	return;
23293896Sglebius}
24293896Sglebius
25293896Sglebius
26293896Sglebiusvoid
27290001Sglebiustest_LocalClock(void) {
28290001Sglebius#ifdef REFCLOCK		/* clockname() is useless otherwise */
29290001Sglebius	/* We test with a refclock address of type LOCALCLOCK.
30290001Sglebius	 * with id 8
31290001Sglebius	 */
32290001Sglebius	u_int32 addr = REFCLOCK_ADDR;
33290001Sglebius	addr |= REFCLK_LOCALCLOCK << 8;
34290001Sglebius	addr |= 0x8;
35290001Sglebius
36290001Sglebius	sockaddr_u address;
37290001Sglebius	address.sa4.sin_family = AF_INET;
38290001Sglebius	address.sa4.sin_addr.s_addr = htonl(addr);
39293896Sglebius
40290001Sglebius	char stringStart[100]= "";
41290001Sglebius
42290001Sglebius	strcat(stringStart, clockname(REFCLK_LOCALCLOCK));
43290001Sglebius	strcat(stringStart, "(8)");
44290001Sglebius
45290001Sglebius	char * expected = stringStart;
46290001Sglebius
47290001Sglebius	TEST_ASSERT_EQUAL_STRING(expected, refnumtoa(&address));
48293896Sglebius#else
49290001Sglebius	TEST_IGNORE_MESSAGE("REFCLOCK NOT DEFINED, SKIPPING TEST");
50290001Sglebius#endif	/* REFCLOCK */
51290001Sglebius}
52290001Sglebius
53290001Sglebiusvoid
54290001Sglebiustest_UnknownId(void) {
55290001Sglebius#ifdef REFCLOCK		/* refnumtoa() is useless otherwise */
56290001Sglebius	/* We test with a currently unused refclock ID */
57290001Sglebius	u_int32 addr = REFCLOCK_ADDR;
58290001Sglebius	addr |= UNUSED_REFCLOCK_ID << 8;
59290001Sglebius	addr |= 0x4;
60290001Sglebius
61290001Sglebius	sockaddr_u address;
62290001Sglebius	address.sa4.sin_family = AF_INET;
63290001Sglebius	address.sa4.sin_addr.s_addr = htonl(addr);
64293896Sglebius
65290001Sglebius	char stringStart[100]= "REFCLK(";
66293896Sglebius	char value[100] ;
67290001Sglebius	snprintf(value, sizeof(value), "%d", UNUSED_REFCLOCK_ID);
68290001Sglebius	strcat(stringStart,value);
69290001Sglebius	strcat(stringStart,",4)");
70290001Sglebius	char * expected = stringStart;
71290001Sglebius
72290001Sglebius	TEST_ASSERT_EQUAL_STRING(expected, refnumtoa(&address));
73293896Sglebius#else
74290001Sglebius	TEST_IGNORE_MESSAGE("REFCLOCK NOT DEFINED, SKIPPING TEST");
75290001Sglebius#endif	/* REFCLOCK */
76290001Sglebius}
77