[PATCH 6/6] testing/fulltests/unit-tests: Add netsnmp_parse_ep_str() unit test

Bart Van Assche <[email protected]>
Newsgroups gmane.network.net-snmp.devel
Message-ID <[email protected]>
---
 testing/fulltests/support/clib_build          |  1 +
 .../T022netsnmp_parse_ep_str_clib.c           | 55 +++++++++++++++++++
 2 files changed, 56 insertions(+)
 create mode 100644 testing/fulltests/unit-tests/T022netsnmp_parse_ep_str_clib.c

diff --git a/testing/fulltests/support/clib_build b/testing/fulltests/support/clib_build
index f94bebd02e36..3ae4dc9b5b7f 100755
--- a/testing/fulltests/support/clib_build
+++ b/testing/fulltests/support/clib_build
@@ -15,6 +15,7 @@ cat >>"$2.c" <<EOF
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/library/large_fd_set.h>
+#include <net-snmp/library/snmpIPBaseDomain.h>
 
 /* testing specific header */
 #include <net-snmp/library/testing.h>
diff --git a/testing/fulltests/unit-tests/T022netsnmp_parse_ep_str_clib.c b/testing/fulltests/unit-tests/T022netsnmp_parse_ep_str_clib.c
new file mode 100644
index 000000000000..7f06746ad299
--- /dev/null
+++ b/testing/fulltests/unit-tests/T022netsnmp_parse_ep_str_clib.c
@@ -0,0 +1,55 @@
+/*
+ * HEADER Testing netsnmp_parse_ep_str()
+ */
+
+struct one_test_data {
+    const char *in;
+    int res;
+    struct netsnmp_ep_str expected;
+};
+
+static struct one_test_data test_data[] = {
+    { "9999",              1, { "",         "",   9999 } },
+    { ":777",              1, { "",         "",   777  } },
+    { "hostname:777",      1, { "hostname", "",   777  } },
+    { "hostname",          1, { "hostname", "",   0    } },
+    { "1.2.3.4",           1, { "1.2.3.4",  "",   0    } },
+    { "hostname@if",       1, { "hostname", "if", 0    } },
+    { "hostname@if:833",   1, { "hostname", "if", 833  } },
+    { "[hostname]@if:833", 1, { "hostname", "if", 833  } },
+    { "[hostname]?",       0, {                        } },
+    { "[hostname",         0, {                        } },
+    { "@if:844",           1, { "",         "if", 844  } },
+    { "[::1]",             1, { "::1",      "",   0    } },
+    { "[::1]:2",           1, { "::1",      "",   2    } },
+    { "[::1]@if:2",        1, { "::1",      "if", 2    } },
+    { "[::1]:2@if",        0, {                        } },
+};
+
+SOCK_STARTUP;
+
+{
+    int i;
+
+    for (i = 0; i < sizeof(test_data) / sizeof(test_data[0]); i++) {
+        const struct one_test_data *p = &test_data[i];
+        struct netsnmp_ep_str ep_str;
+        int res;
+
+        memset(&ep_str, 0, sizeof(ep_str));
+        res = netsnmp_parse_ep_str(&ep_str, p->in);
+        OKF(res == p->res, ("%s: return value %d <> %d", p->in, res, p->res));
+        if (res && p->res) {
+            OKF(strcmp(ep_str.addr,  p->expected.addr)  == 0,
+                ("%s: network address %s <> %s", p->in, ep_str.addr,
+                 p->expected.addr));
+            OKF(strcmp(ep_str.iface, p->expected.iface) == 0,
+                ("%s: network interface %s <> %s", p->in, ep_str.iface,
+                 p->expected.iface));
+            OKF(ep_str.port == p->expected.port,
+                ("%s: port %d <> %d", p->in, ep_str.port, p->expected.port));
+        }
+    }
+}
+
+SOCK_CLEANUP;
-- 
2.19.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.