[PATCH] Test code for htonll, ntohll

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <tboegi@xxxxxx>
---
 .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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]