The test case will make sure each API will filled
with something. So we will not to define an API,
use it, yet forgot to implement.
---
tests/Makefile.am | 9 +++-
tests/vboxuniformedapitest.c | 98 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 105 insertions(+), 2 deletions(-)
create mode 100644 tests/vboxuniformedapitest.c
diff --git a/tests/Makefile.am b/tests/Makefile.am
index bc1040a..f73d25d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -241,7 +241,7 @@ test_programs += esxutilstest
endif WITH_ESX
if WITH_VBOX
-test_programs += vboxsnapshotxmltest
+test_programs += vboxsnapshotxmltest vboxuniformedapitest
endif WITH_VBOX
if WITH_VMX
@@ -638,8 +638,13 @@ vboxsnapshotxmltest_SOURCES = \
testutils.c testutils.h
vbox_LDADDS = ../src/libvirt_driver_vbox_impl.la
vboxsnapshotxmltest_LDADD = $(LDADDS) $(vbox_LDADDS)
+
+vboxuniformedapitest_SOURCES = \
+ vboxuniformedapitest.c \
+ testutils.c testutils.h
+vboxuniformedapitest_LDADD = $(vbox_LDADDS) $(LDADDS)
else ! WITH_VBOX
-EXTRA_DIST += vboxsnapshotxmltest.c
+EXTRA_DIST += vboxsnapshotxmltest.c vboxuniformedapitest.c
endif ! WITH_VBOX
if WITH_VMX
diff --git a/tests/vboxuniformedapitest.c b/tests/vboxuniformedapitest.c
new file mode 100644
index 0000000..933cdb7
--- /dev/null
+++ b/tests/vboxuniformedapitest.c
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2014, Taowei Luo (uaedante(a)gmail.com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <
http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "testutils.h"
+
+#ifdef WITH_VBOX
+
+# include "datatypes.h"
+# include "domain_event.h"
+# include "vbox/vbox_common.h"
+# include "vbox/vbox_uniformed_api.h"
+
+# define VIR_FROM_THIS VIR_FROM_NONE
+
+static vboxUniformedAPI vboxAPI;
+typedef void (*installAPI_f)(vboxUniformedAPI *pVBoxAPI);
+
+/* This test make sure all APIs in vboxUniformedAPI is
+ * filled with something (say not null). It helps to
+ * make sure you will not leave an API defined (and used
+ * probably) but not implemented yet.
+ */
+
+static int testUniformedAPI(const void *args)
+{
+ installAPI_f installAPI = (installAPI_f)args;
+ void **iter;
+
+ memset(&vboxAPI, 0, sizeof(vboxUniformedAPI));
+ installAPI(&vboxAPI);
+
+ /* Assuming that the vboxUniformedAPI is in the range
+ * of [initializeFWatch, fWatchNeedInitialize).
+ */
+ for (iter = (void **)&vboxAPI.initializeFWatch;
+ iter < (void **)&vboxAPI.fWatchNeedInitialize;
+ iter ++)
+ {
+ if ((void *)(*iter) == NULL)
+ return -1;
+ }
+ return 0;
+}
+
+static int
+mymain(void)
+{
+ int ret = 0;
+
+# define TEST(version) \
+ do { \
+ if (virtTestRun("Test uniformedAPI " # version, \
+ testUniformedAPI, \
+ vbox##version##InstallUniformedAPI) < 0) \
+ ret = -1; \
+ } while (0)
+
+ TEST(22);
+ TEST(30);
+ TEST(31);
+ TEST(32);
+ TEST(40);
+ TEST(41);
+ TEST(42);
+ TEST(42_20);
+ TEST(43);
+ TEST(43_4);
+
+ return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+VIRT_TEST_MAIN(mymain)
+
+#else
+
+int main(void)
+{
+ return EXIT_AM_SKIP;
+}
+
+#endif /*WITH_VBOX*/
--
1.7.9.5