test-endianess.c adds test code for htonl(), ntohll()
and the recently introduced ntohll() and htonll()

The test is called in t0070

Signed-off-by: Torsten Bögershausen <tbo...@web.de>
---
 .gitignore             |    1 +
 Makefile               |    3 +++
 t/t0070-fundamental.sh |    3 +++
 test-endianess.c       |   58 ++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 65 insertions(+)
 create mode 100644 test-endianess.c

diff --git a/.gitignore b/.gitignore
index 66199ed..750e7d8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -183,6 +183,7 @@
 /test-date
 /test-delta
 /test-dump-cache-tree
+/test-endianess
 /test-scrap-cache-tree
 /test-genrandom
 /test-index-version
diff --git a/Makefile b/Makefile
index 07b0626..50957c7 100644
--- a/Makefile
+++ b/Makefile
@@ -555,6 +555,7 @@ TEST_PROGRAMS_NEED_X += test-ctype
 TEST_PROGRAMS_NEED_X += test-date
 TEST_PROGRAMS_NEED_X += test-delta
 TEST_PROGRAMS_NEED_X += test-dump-cache-tree
+TEST_PROGRAMS_NEED_X += test-endianess
 TEST_PROGRAMS_NEED_X += test-genrandom
 TEST_PROGRAMS_NEED_X += test-hashmap
 TEST_PROGRAMS_NEED_X += test-index-version
@@ -2275,6 +2276,8 @@ test-date$X: date.o ctype.o
 
 test-delta$X: diff-delta.o patch-delta.o
 
+test-endianess$X: test-endianess.c
+
 test-line-buffer$X: vcs-svn/lib.a
 
 test-parse-options$X: parse-options.o parse-options-cb.o
diff --git a/t/t0070-fundamental.sh b/t/t0070-fundamental.sh
index 5ed69a6..dc687da 100755
--- a/t/t0070-fundamental.sh
+++ b/t/t0070-fundamental.sh
@@ -33,5 +33,8 @@ test_expect_success 'check for a bug in the regex routines' '
        # if this test fails, re-build git with NO_REGEX=1
        test-regex
 '
+test_expect_success 'test endianess, htonll(), ntohll()' '
+       test-endianess
+'
 
 test_done
diff --git a/test-endianess.c b/test-endianess.c
new file mode 100644
index 0000000..5b49175
--- /dev/null
+++ b/test-endianess.c
@@ -0,0 +1,58 @@
+#include "cache.h"
+
+int main(int argc, char **argv)
+{
+       union {
+               uint8_t  bytes[8];
+               uint32_t word32;
+               uint64_t word64;
+       } wordll;
+       volatile uint64_t word64;
+       volatile uint32_t word32;
+
+       wordll.bytes[0] = 0x80;
+       wordll.bytes[1] = 0x81;
+       wordll.bytes[2] = 0x82;
+       wordll.bytes[3] = 0x83;
+       wordll.bytes[4] = 0x00;
+       wordll.bytes[5] = 0x01;
+       wordll.bytes[6] = 0x02;
+       wordll.bytes[7] = 0x03;
+
+       word32 = htonl(wordll.word32);
+       if (word32 != 0x80818283)
+               die("htonl word32 != 0x80818283");
+
+       word64 = htonll(wordll.word64);
+       if (word64 != 0x8081828300010203ULL)
+               die("htonll word64 != 0x8081828300010203");
+
+       word32 = ntohl(wordll.word32);
+       if (word32 != 0x80818283)
+               die("ntohl word32 != 0x80818283");
+
+       word64 = ntohll(wordll.word64);
+       if (word64 != 0x8081828300010203ULL)
+               die("ntohll word64 != 0x8081828300010203");
+
+       wordll.bytes[0] = 0x04;
+       wordll.bytes[4] = 0x84;
+
+       word32 = htonl(wordll.word32);
+       if (word32 != 0x04818283)
+               die("htonl word32 != 0x04818283");
+
+       word64 = htonll(wordll.word64);
+       if (word64 != 0x0481828384010203ULL)
+               die("htonll word64 != 0x0481828384010203");
+
+       word32 = ntohl(wordll.word32);
+       if (word32 != 0x04818283)
+               die("ntohl word32 != 0x04818283");
+
+       word64 = ntohll(wordll.word64);
+       if (word64 != 0x0481828384010203ULL)
+               die("ntohll word64 != 0x0481828384010203");
+
+       return 0;
+}
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to