From f696f12fbe84f49d650f48c45ce1a24b94547ad2 Mon Sep 17 00:00:00 2001
From: Justin Pettit <jpettit@nicira.com>
Date: Sat, 15 Jan 2011 11:12:12 -0800
Subject: [PATCH] tests: Add test suite for packets.h.

This only tests ip_is_cidr(), since that is the only tricky function
currently defined.  This will get more use once IPv6 functions are
added.
---
 tests/.gitignore     |  1 +
 tests/automake.mk    |  6 ++++++
 tests/library.at     |  4 ++++
 tests/test-packets.c | 48 ++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 59 insertions(+)
 create mode 100644 tests/test-packets.c

diff --git a/tests/.gitignore b/tests/.gitignore
index 71c24998..90f17378 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -20,6 +20,7 @@
 /test-lockfile
 /test-multipath
 /test-ovsdb
+/test-packets
 /test-random
 /test-reconnect
 /test-strtok_r
diff --git a/tests/automake.mk b/tests/automake.mk
index f67c0e78..09ec23f2 100644
--- a/tests/automake.mk
+++ b/tests/automake.mk
@@ -78,6 +78,7 @@ lcov_wrappers = \
 	tests/lcov/test-lockfile \
 	tests/lcov/test-multipath \
 	tests/lcov/test-ovsdb \
+	tests/lcov/test-packets \
 	tests/lcov/test-random \
 	tests/lcov/test-reconnect \
 	tests/lcov/test-sha1 \
@@ -130,6 +131,7 @@ valgrind_wrappers = \
 	tests/valgrind/test-lockfile \
 	tests/valgrind/test-multipath \
 	tests/valgrind/test-ovsdb \
+	tests/valgrind/test-packets \
 	tests/valgrind/test-random \
 	tests/valgrind/test-reconnect \
 	tests/valgrind/test-sha1 \
@@ -227,6 +229,10 @@ noinst_PROGRAMS += tests/test-multipath
 tests_test_multipath_SOURCES = tests/test-multipath.c
 tests_test_multipath_LDADD = lib/libopenvswitch.a
 
+noinst_PROGRAMS += tests/test-packets
+tests_test_packets_SOURCES = tests/test-packets.c
+tests_test_packets_LDADD = lib/libopenvswitch.a
+
 noinst_PROGRAMS += tests/test-random
 tests_test_random_SOURCES = tests/test-random.c
 tests_test_random_LDADD = lib/libopenvswitch.a
diff --git a/tests/library.at b/tests/library.at
index 418b2797..d199373c 100644
--- a/tests/library.at
+++ b/tests/library.at
@@ -22,6 +22,10 @@ AT_SETUP([test linked lists])
 AT_CHECK([test-list], [0], [ignore])
 AT_CLEANUP
 
+AT_SETUP([test packet library])
+AT_CHECK([test-packets])
+AT_CLEANUP
+
 AT_SETUP([test SHA-1])
 AT_CHECK([test-sha1], [0], [ignore])
 AT_CLEANUP
diff --git a/tests/test-packets.c b/tests/test-packets.c
new file mode 100644
index 00000000..464a8eb7
--- /dev/null
+++ b/tests/test-packets.c
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2011 Nicira Networks.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <config.h>
+#include "packets.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#undef NDEBUG
+#include <assert.h>
+
+
+static void
+test_ipv4_cidr(void)
+{
+    assert(ip_is_cidr(htonl(0x00000000)));
+    assert(ip_is_cidr(htonl(0x80000000)));
+    assert(ip_is_cidr(htonl(0xf0000000)));
+    assert(ip_is_cidr(htonl(0xffffffe0)));
+    assert(ip_is_cidr(htonl(0xffffffff)));
+
+    assert(!ip_is_cidr(htonl(0x00000001)));
+    assert(!ip_is_cidr(htonl(0x40000000)));
+    assert(!ip_is_cidr(htonl(0x0fffffff)));
+    assert(!ip_is_cidr(htonl(0xffffffd0)));
+}
+
+int
+main(void)
+{
+    test_ipv4_cidr();
+
+    return 0;
+}
-- 
2.30.2