From: Adam Stokes <astokes(a)fedoraproject.org>
- Using core c api's for unittesting with cxxtest
---
src/CMakeLists.txt | 8 +++++
src/tests/CMakeLists.txt | 3 ++
src/tests/mh_api_network.h | 56 +++++++++++++++++++++++++++++++++++
src/tests/mh_api_network_unittest.h | 47 +++++++++++++++++++++++++++++
4 files changed, 114 insertions(+), 0 deletions(-)
create mode 100644 src/tests/CMakeLists.txt
create mode 100644 src/tests/mh_api_network.h
create mode 100644 src/tests/mh_api_network_unittest.h
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4636ee2..8c9736c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,13 @@
#set(CMAKE_VERBOSE_MAKEFILE ON)
+find_package(CxxTest)
+if(CXXTEST_FOUND)
+ include_directories(${CXXTEST_INCLUDE_DIR})
+ ENABLE_TESTING()
+ CXXTEST_ADD_TEST(mh_api_network_unittest mh_api_network_unittest.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/mh_api_network.h)
+ target_link_libraries(mh_api_network_unittest mh_api_network_unittest)
+endif(CXXTEST_FOUND)
+
if(WIN32)
set(VARIANT "windows")
set(SUPPORT_TRACING 0)
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
new file mode 100644
index 0000000..21bc609
--- /dev/null
+++ b/src/tests/CMakeLists.txt
@@ -0,0 +1,3 @@
+file(GLOB SRCS "*.cpp")
+file(GLOB HEADERS "*.h")
+#install(FILES ${SRCS} ${HEADERS} DESTINATION share/matahari/tests)
diff --git a/src/tests/mh_api_network.h b/src/tests/mh_api_network.h
new file mode 100644
index 0000000..30b9888
--- /dev/null
+++ b/src/tests/mh_api_network.h
@@ -0,0 +1,56 @@
+#ifndef __MH_API_NETWORK_UNITTEST_H
+#define __MH_API_NETWORK_UNITTEST_H
+#include <iostream>
+#include <string>
+#include <utility>
+#include <vector>
+#include <cstdlib>
+#include <cstdio>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <cxxtest/TestSuite.h>
+
+extern "C" {
+#include "matahari/network.h"
+#include "matahari/host.h"
+#include <sigar.h>
+#include <sigar_format.h>
+#include <glib.h>
+};
+
+using namespace std;
+
+class MhApiNetworkSuite : public CxxTest::TestSuite
+{
+ public:
+ GList *plist;
+ GList *interface_list;
+ sigar_net_interface_config_t *ifconfig;
+ vector<char*> iface_names;
+
+ void setUp (void)
+ {
+ interface_list = mh_network_get_interfaces();
+ for (plist = g_list_first(interface_list); plist;
+ plist = g_list_next(plist)) {
+ ifconfig = (sigar_net_interface_config_t *)plist->data;
+ iface_names.push_back(ifconfig->name);
+ }
+ }
+
+ void tearDown (void)
+ {
+ g_list_free(interface_list);
+ }
+
+ void testListNetworkDevices(void)
+ {
+ unsigned int i;
+
+ for(i=0; i<iface_names.size(); i++) {
+ TS_ASSERT(iface_names[i]);
+ }
+ }
+};
+
+#endif
diff --git a/src/tests/mh_api_network_unittest.h b/src/tests/mh_api_network_unittest.h
new file mode 100644
index 0000000..9e69462
--- /dev/null
+++ b/src/tests/mh_api_network_unittest.h
@@ -0,0 +1,47 @@
+#ifndef __MH_API_NETWORK_UNITTEST_H
+#define __MH_API_NETWORK_UNITTEST_H
+#include <iostream>
+#include <string>
+#include <utility>
+#include <vector>
+#include <cstdlib>
+#include <cstdio>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <cxxtest/TestSuite.h>
+
+extern "C" {
+#include "matahari/network.h"
+#include "matahari/host.h"
+#include <sigar.h>
+#include <sigar_format.h>
+#include <glib.h>
+};
+
+using namespace std;
+
+class MhApiNetworkSuite : public CxxTest::TestSuite
+{
+ public:
+ void setUp (void)
+ {
+ // will be setup
+ }
+
+ void tearDown (void)
+ {
+ // teardown
+
+ }
+
+ void testListNetworkDevices(void)
+ {
+ GList *plist = NULL;
+ GList *interface_list = NULL;
+
+ interface_list = mh_network_get_interfaces();
+ TS_ASSERT (!interface_list.empty());
+ }
+};
+
+#endif
--
1.7.4.4