]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
vi64ops.c:
authorDamir Tomic <viperus@ntp.org>
Sat, 13 Jun 2015 21:35:39 +0000 (23:35 +0200)
committerDamir Tomic <viperus@ntp.org>
Sat, 13 Jun 2015 21:35:39 +0000 (23:35 +0200)
  new file
Makefile.am:
  added stuff related to vi64ops.c
g_vi64ops.cpp:
  Rename: tests/libntp/vi64ops.cpp -> tests/libntp/g_vi64ops.cpp

bk: 557ca22bVKPBQ_kybc5MMrRokgpl1w

tests/libntp/Makefile.am
tests/libntp/g_vi64ops.cpp [moved from tests/libntp/vi64ops.cpp with 100% similarity]
tests/libntp/vi64ops.c [new file with mode: 0644]

index 01c6f4d60c602da5e50c9eeb090f35617bfbab6b..4e5e67d019a58165333a6a871ce69ed06e2946df 100644 (file)
@@ -6,7 +6,7 @@ run_unity =     cd $(srcdir) && ruby ../../sntp/unity/auto/generate_test_runner.rb
 
 #removed test-libntp
 check_PROGRAMS = test-modetoa test-uglydate test-ymd2yd test-statestr test-numtoa test-numtohost \
-test-hextoint test-atoint test-atouint test-authkeys test-a_md5encrypt test-lfpfunc
+test-hextoint test-atoint test-atouint test-authkeys test-a_md5encrypt test-lfpfunc test-vi64ops
 
 if GTEST_AVAILABLE
 check_PROGRAMS += tests
@@ -81,7 +81,7 @@ tests_SOURCES = $(top_srcdir)/sntp/tests_main.cpp     \
                tstotv.cpp              \
                tvtots.cpp              \
                g_uglydate.cpp          \
-               vi64ops.cpp             \
+               g_vi64ops.cpp           \
                g_ymd2yd.cpp            \
                $(NULL)
 
@@ -204,7 +204,22 @@ test_lfpfunc_LDADD =                       \
        $(unity_tests_LDADD)            \
        $(NULL)
 
+test_lfpfunc_CFLAGS =                          \
+       -I$(top_srcdir)/sntp/unity      \
+       -DUNITY_INCLUDE_DOUBLE          \
+       $(NULL)
+
+test_lfpfunc_LDADD =                   \
+       $(unity_tests_LDADD)            \
+       $(NULL)
 
+test_vi64ops_CFLAGS =                          \
+       -I$(top_srcdir)/sntp/unity      \
+       $(NULL)
+
+test_vi64ops_LDADD =                   \
+       $(unity_tests_LDADD)            \
+       $(NULL)
 
 
 #removed one combined test, because unity devs suggested we use one program per test
@@ -276,6 +291,10 @@ test_lfpfunc_SOURCES =                             \
        run-test-lfpfunc.c                      \
        $(NULL)
 
+test_vi64ops_SOURCES =                         \
+       vi64ops.c                               \
+       run-test-vi64ops.c                      \
+       $(NULL)
 
 
 $(srcdir)/run-test-modetoa.c: $(srcdir)/modetoa.c $(std_unity_list)
@@ -314,6 +333,8 @@ $(srcdir)/run-test-authkeys.c: $(srcdir)/authkeys.c $(std_unity_list)
 $(srcdir)/run-test-lfpfunc.c: $(srcdir)/lfpfunc.c $(std_unity_list)
        $(run_unity) lfpfunc.c run-test-lfpfunc.c
 
+$(srcdir)/run-test-vi64ops.c: $(srcdir)/vi64ops.c $(std_unity_list)
+       $(run_unity) vi64ops.c run-test-vi64ops.c
 
 
 TESTS =
diff --git a/tests/libntp/vi64ops.c b/tests/libntp/vi64ops.c
new file mode 100644 (file)
index 0000000..ff5e578
--- /dev/null
@@ -0,0 +1,72 @@
+#include "config.h"
+
+#include "ntp_stdlib.h"
+//#include "ntp_calendar.h"
+
+#include "vint64ops.h"
+#include "unity.h"
+
+//technically bool
+//int IsEqual(const vint64 &expected, const vint64 &actual) {
+int IsEqual(const vint64 expected, const vint64 actual) {
+       if (0 == memcmp(&expected, &actual, sizeof(vint64))) {
+               printf( "%x.", expected.D_s.hi); //<< std::hex << expected.D_s.hi << '.'
+               printf("%x",expected.D_s.lo);//<< std::hex << expected.D_s.lo
+               printf(" but was ");
+               printf("%x.",actual.D_s.hi); //<< std::hex << actual.D_s.hi << '.'
+               printf("%x\n",actual.D_s.lo); //<< std::hex << actual.D_s.lo;
+               return TRUE;
+       } else {
+               
+               printf("expected: ");
+               printf( "%d.", expected.D_s.hi); //<< std::hex << expected.D_s.hi << '.'
+               printf("%d",expected.D_s.lo);//<< std::hex << expected.D_s.lo
+               printf(" but was ");
+               printf("%d",actual.D_s.lo); //<< std::hex << actual.D_s.hi << '.'
+               printf("%d",actual.D_s.lo); //<< std::hex << actual.D_s.lo;
+               return FALSE;
+       }
+}
+
+// ----------------------------------------------------------------------
+// test number parser
+void test_ParseVUI64_pos() {
+       vint64 act, exp;
+       const char *sp;
+       char       *ep;
+
+       sp         = "1234x";
+       exp.D_s.hi = 0;
+       exp.D_s.lo = 1234;
+       act        = strtouv64(sp, &ep, 0);
+
+       TEST_ASSERT_TRUE(IsEqual(exp, act));
+       TEST_ASSERT_EQUAL(*ep, 'x');
+}
+
+void test_ParseVUI64_neg() {
+       vint64 act, exp;
+       const char *sp;
+       char       *ep;
+
+       sp         = "-1234x";
+       exp.D_s.hi = ~0;
+       exp.D_s.lo = -1234;
+       act        = strtouv64(sp, &ep, 0);
+       TEST_ASSERT_TRUE(IsEqual(exp, act));
+       TEST_ASSERT_EQUAL(*ep, 'x');
+}
+
+void test_ParseVUI64_case() {
+       vint64 act, exp;
+       const char *sp;
+       char       *ep;
+
+       sp         = "0123456789AbCdEf";
+       exp.D_s.hi = 0x01234567;
+       exp.D_s.lo = 0x89ABCDEF;
+       act        = strtouv64(sp, &ep, 16);
+       TEST_ASSERT_TRUE(IsEqual(exp, act));
+       TEST_ASSERT_EQUAL(*ep, '\0');
+}
+