summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/tests/libntp/refnumtoa.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/tests/libntp/refnumtoa.c')
-rw-r--r--contrib/ntp/tests/libntp/refnumtoa.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/contrib/ntp/tests/libntp/refnumtoa.c b/contrib/ntp/tests/libntp/refnumtoa.c
new file mode 100644
index 0000000..8a37690
--- /dev/null
+++ b/contrib/ntp/tests/libntp/refnumtoa.c
@@ -0,0 +1,64 @@
+#include "config.h"
+
+#include "ntp_net.h"
+#include "ntp_refclock.h"
+
+#include "unity.h"
+
+
+/* Might need to be updated if a new refclock gets this id. */
+static const int UNUSED_REFCLOCK_ID = 250;
+
+
+void test_LocalClock() {
+#ifdef REFCLOCK /* clockname() is useless otherwise */
+ /* 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);
+
+ char stringStart [100]= "";
+
+ strcat(stringStart,clockname(REFCLK_LOCALCLOCK));
+ strcat(stringStart,"(8)");
+
+ char * expected = stringStart;
+
+ TEST_ASSERT_EQUAL_STRING(expected, refnumtoa(&address));
+#else
+ TEST_IGNORE_MESSAGE("REFCLOCK NOT DEFINED, SKIPPING TEST");
+#endif /* REFCLOCK */
+}
+
+
+
+void test_UnknownId() {
+#ifdef REFCLOCK /* refnumtoa() is useless otherwise */
+ /* 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);
+
+ char stringStart [100]= "REFCLK(";
+ char value [100] ;
+ snprintf(value, sizeof(value), "%d", UNUSED_REFCLOCK_ID);
+ strcat(stringStart,value);
+ strcat(stringStart,",4)");
+ char * expected = stringStart;
+
+ TEST_ASSERT_EQUAL_STRING(expected, refnumtoa(&address));
+#else
+ TEST_IGNORE_MESSAGE("REFCLOCK NOT DEFINED, SKIPPING TEST");
+#endif /* REFCLOCK */
+}
+
OpenPOWER on IntegriCloud