test: Add unit test cases for util
Change-Id: I75cc1c1642bd4160191853d6ebfa5427e7f534c3
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/Makefile.am b/Makefile.am
index f2a9174..003ba37 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -67,3 +67,5 @@
@mkdir -p `dirname $@`
$(SDBUSPLUSPLUS) -r $(srcdir) interface server-header xyz.openbmc_project.Network.IP.Create > $@
sed -i '5i #include \"xyz\/openbmc_project\/Network\/IP\/server.hpp\"' $@
+
+SUBDIRS = test
diff --git a/configure.ac b/configure.ac
index 93df373..0ddf0ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -82,5 +82,5 @@
AC_DEFINE_UNQUOTED([NETWORK_CONF_DIR], ["$NETWORK_CONF_DIR"], [Network configuration directory])
# Create configured output.
-AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([Makefile test/Makefile])
AC_OUTPUT
diff --git a/test/Makefile.am b/test/Makefile.am
new file mode 100644
index 0000000..5899847
--- /dev/null
+++ b/test/Makefile.am
@@ -0,0 +1,18 @@
+AM_CPPFLAGS = -I${top_srcdir}
+
+TESTS = $(check_PROGRAMS)
+
+check_PROGRAMS = test
+
+test_SOURCES = \
+ test_util.cpp
+
+test_CPPFLAGS = -Igtest $(GTEST_CPPFLAGS) $(AM_CPPFLAGS)
+test_CXXFLAGS = $(PTHREAD_CFLAGS)
+
+test_LDFLAGS = -lgtest_main -lgtest -lstdc++fs \
+ $(OESDK_TESTCASE_FLAGS) \
+ $(SYSTEMD_LIBS) \
+ $(SDBUSPLUS_LIBS)
+
+test_LDADD = $(top_builddir)/util.cpp
diff --git a/test/test_util.cpp b/test/test_util.cpp
new file mode 100644
index 0000000..d0888ca
--- /dev/null
+++ b/test/test_util.cpp
@@ -0,0 +1,89 @@
+#include <gtest/gtest.h>
+#include <netinet/in.h>
+#include "util.hpp"
+
+namespace phosphor
+{
+namespace network
+{
+
+class TestUtil : public testing::Test
+{
+ public:
+ TestUtil()
+ {
+ // Empty
+ }
+
+};
+
+TEST_F(TestUtil, ConvertV4MasktoPrefix)
+{
+ std::string mask = "255.255.255.0";
+ uint8_t prefix = toCidr(AF_INET, mask);
+ EXPECT_EQ(prefix, 24);
+
+ mask = "255.255.0.0";
+ prefix = toCidr(AF_INET, mask);
+ EXPECT_EQ(prefix, 16);
+
+ mask = "255.0.0.0";
+ prefix = toCidr(AF_INET, mask);
+ EXPECT_EQ(prefix, 8);
+
+ mask = "255.224.0.0";
+ prefix = toCidr(AF_INET, mask);
+ EXPECT_EQ(prefix, 11);
+
+ //Invalid Mask
+ mask = "255.0.255.0";
+ prefix = toCidr(AF_INET, mask);
+ EXPECT_EQ(prefix, 0);
+}
+
+TEST_F(TestUtil, convertV6MasktoPrefix)
+{
+ std::string mask = "ffff:ffff::";
+ uint8_t prefix = toCidr(AF_INET6, mask);
+ EXPECT_EQ(prefix, 32);
+
+ mask = "ffff:ffff:ffff::";
+ prefix = toCidr(AF_INET6, mask);
+ EXPECT_EQ(prefix, 48);
+
+ mask = "ffff:ffff:fc00::";
+ prefix = toCidr(AF_INET6, mask);
+ EXPECT_EQ(prefix, 38);
+
+ //Invalid Mask
+ mask = "ffff:0fff::";
+ prefix = toCidr(AF_INET6, mask);
+ EXPECT_EQ(prefix, 0);
+}
+
+TEST_F(TestUtil, isLinLocaladdress)
+{
+ std::string ipaddress = "fe80:fec0::";
+ EXPECT_TRUE(isLinkLocal(ipaddress));
+
+ ipaddress = "2000:4567:789::";
+ EXPECT_FALSE(isLinkLocal(ipaddress));
+
+ ipaddress = "2000:fe80::";
+ EXPECT_FALSE(isLinkLocal(ipaddress));
+}
+
+TEST_F(TestUtil, convertPrefixToMask)
+{
+ std::string mask = toMask(AF_INET, 24);
+ EXPECT_EQ(mask, "255.255.255.0");
+
+ mask = toMask(AF_INET, 8);
+ EXPECT_EQ(mask, "255.0.0.0");
+
+ mask = toMask(AF_INET, 27);
+ EXPECT_EQ(mask, "255.255.255.224");
+}
+
+}// namespce network
+}// namespace phosphor