From 654b98bafec4845e5d4af39cda58a2a1aa293d32 Mon Sep 17 00:00:00 2001
From: Tavian Barnes <tavianator@tavianator.com>
Date: Tue, 19 Aug 2014 17:32:55 -0400
Subject: libdimension: Test each module header in isolation.

---
 libdimension/dimension/concurrency.h     |  2 ++
 libdimension/dimension/platform.h        |  2 ++
 libdimension/tests/Makefile.am           | 52 ++++++++++++++++++++------------
 libdimension/tests/modules/base.c        | 29 ++++++++++++++++++
 libdimension/tests/modules/canvas.c      | 29 ++++++++++++++++++
 libdimension/tests/modules/color.c       | 29 ++++++++++++++++++
 libdimension/tests/modules/concurrency.c | 29 ++++++++++++++++++
 libdimension/tests/modules/math.c        | 29 ++++++++++++++++++
 libdimension/tests/modules/model.c       | 29 ++++++++++++++++++
 libdimension/tests/modules/pattern.c     | 29 ++++++++++++++++++
 libdimension/tests/modules/platform.c    | 29 ++++++++++++++++++
 libdimension/tests/modules/render.c      | 29 ++++++++++++++++++
 12 files changed, 297 insertions(+), 20 deletions(-)
 create mode 100644 libdimension/tests/modules/base.c
 create mode 100644 libdimension/tests/modules/canvas.c
 create mode 100644 libdimension/tests/modules/color.c
 create mode 100644 libdimension/tests/modules/concurrency.c
 create mode 100644 libdimension/tests/modules/math.c
 create mode 100644 libdimension/tests/modules/model.c
 create mode 100644 libdimension/tests/modules/pattern.c
 create mode 100644 libdimension/tests/modules/platform.c
 create mode 100644 libdimension/tests/modules/render.c

diff --git a/libdimension/dimension/concurrency.h b/libdimension/dimension/concurrency.h
index 6c8c29c..d712873 100644
--- a/libdimension/dimension/concurrency.h
+++ b/libdimension/dimension/concurrency.h
@@ -30,6 +30,8 @@
 extern "C" {
 #endif
 
+#include <dimension/base.h>
+
 #include <dimension/concurrency/future.h>
 
 #ifdef __cplusplus
diff --git a/libdimension/dimension/platform.h b/libdimension/dimension/platform.h
index 4c01709..d85a252 100644
--- a/libdimension/dimension/platform.h
+++ b/libdimension/dimension/platform.h
@@ -30,6 +30,8 @@
 extern "C" {
 #endif
 
+#include <dimension/base.h>
+
 #include <dimension/platform/timer.h>
 
 #ifdef __cplusplus
diff --git a/libdimension/tests/Makefile.am b/libdimension/tests/Makefile.am
index 9829642..f9ff11f 100644
--- a/libdimension/tests/Makefile.am
+++ b/libdimension/tests/Makefile.am
@@ -20,24 +20,25 @@
 AM_CFLAGS = -I$(top_srcdir)/libdimension
 AM_CXXFLAGS = $(AM_CFLAGS)
 
-check_LTLIBRARIES = libdimension-tests.la                                      \
-                    libdimension-unit-test.la
-check_PROGRAMS    = c89.test                                                   \
-                    c99.test                                                   \
-                    c++03.test                                                 \
-                    c++11.test                                                 \
-                    warning.test                                               \
-                    warning-as-error.test                                      \
-                    error.test                                                 \
-                    custom-error-fn.test                                       \
-                    pool.test                                                  \
-                    dictionary.test                                            \
-                    polynomial.test                                            \
-                    prtree.test                                                \
-                    future.test                                                \
-                    png.test                                                   \
-                    gl.test                                                    \
-                    render.test
+check_LTLIBRARIES = libdimension-tests.la \
+  libdimension-unit-test.la
+check_PROGRAMS    = modules.test \
+  c89.test \
+  c99.test \
+  c++03.test \
+  c++11.test \
+  warning.test \
+  warning-as-error.test \
+  error.test \
+  custom-error-fn.test \
+  pool.test \
+  dictionary.test \
+  polynomial.test \
+  prtree.test \
+  future.test \
+  png.test \
+  gl.test \
+  render.test
 TESTS             = $(check_PROGRAMS)
 XFAIL_TESTS       = warning-as-error.test error.test
 
@@ -51,8 +52,8 @@ if !GL
 XFAIL_TESTS += gl.test
 endif
 
-libdimension_tests_la_SOURCES = test_canvas.c                                  \
-                                tests.h
+libdimension_tests_la_SOURCES = test_canvas.c \
+  tests.h
 libdimension_tests_la_LIBADD  = $(top_builddir)/libdimension/libdimension.la
 
 if GLX
@@ -66,6 +67,17 @@ libdimension_unit_test_la_SOURCES = unit-test.c
 libdimension_unit_test_la_CFLAGS  = $(CHECK_CFLAGS) $(AM_CFLAGS)
 libdimension_unit_test_la_LIBADD  = $(CHECK_LIBS) $(top_builddir)/libdimension/libdimension.la
 
+modules_test_SOURCES = modules/base.c \
+  modules/canvas.c \
+  modules/color.c \
+  modules/concurrency.c \
+  modules/math.c \
+  modules/model.c \
+  modules/pattern.c \
+  modules/platform.c \
+  modules/render.c
+modules_test_LDADD   = libdimension-unit-test.la
+
 c89_test_SOURCES = c89.c
 c89_test_LDADD   = libdimension-tests.la
 
diff --git a/libdimension/tests/modules/base.c b/libdimension/tests/modules/base.c
new file mode 100644
index 0000000..665c62f
--- /dev/null
+++ b/libdimension/tests/modules/base.c
@@ -0,0 +1,29 @@
+/*************************************************************************
+ * Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>          *
+ *                                                                       *
+ * This file is part of The Dimension Test Suite.                        *
+ *                                                                       *
+ * The Dimension Test Suite is free software; you can redistribute it    *
+ * and/or modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the    *
+ * License, or (at your option) any later version.                       *
+ *                                                                       *
+ * The Dimension Test Suite 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  *
+ * General Public License for more details.                              *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+/**
+ * @file
+ * Test the base module in isolation.
+ */
+
+#include "dimension/base.h"
+
+#ifndef DMNSN_INLINE
+#error "Missing #include <dimension/base.h>"
+#endif
diff --git a/libdimension/tests/modules/canvas.c b/libdimension/tests/modules/canvas.c
new file mode 100644
index 0000000..e9e0471
--- /dev/null
+++ b/libdimension/tests/modules/canvas.c
@@ -0,0 +1,29 @@
+/*************************************************************************
+ * Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>          *
+ *                                                                       *
+ * This file is part of The Dimension Test Suite.                        *
+ *                                                                       *
+ * The Dimension Test Suite is free software; you can redistribute it    *
+ * and/or modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the    *
+ * License, or (at your option) any later version.                       *
+ *                                                                       *
+ * The Dimension Test Suite 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  *
+ * General Public License for more details.                              *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+/**
+ * @file
+ * Test the canvas module in isolation.
+ */
+
+#include "dimension/canvas.h"
+
+#ifndef DMNSN_INLINE
+#error "Missing #include <dimension/base.h>"
+#endif
diff --git a/libdimension/tests/modules/color.c b/libdimension/tests/modules/color.c
new file mode 100644
index 0000000..6c9e63f
--- /dev/null
+++ b/libdimension/tests/modules/color.c
@@ -0,0 +1,29 @@
+/*************************************************************************
+ * Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>          *
+ *                                                                       *
+ * This file is part of The Dimension Test Suite.                        *
+ *                                                                       *
+ * The Dimension Test Suite is free software; you can redistribute it    *
+ * and/or modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the    *
+ * License, or (at your option) any later version.                       *
+ *                                                                       *
+ * The Dimension Test Suite 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  *
+ * General Public License for more details.                              *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+/**
+ * @file
+ * Test the color module in isolation.
+ */
+
+#include "dimension/color.h"
+
+#ifndef DMNSN_INLINE
+#error "Missing #include <dimension/base.h>"
+#endif
diff --git a/libdimension/tests/modules/concurrency.c b/libdimension/tests/modules/concurrency.c
new file mode 100644
index 0000000..16bb305
--- /dev/null
+++ b/libdimension/tests/modules/concurrency.c
@@ -0,0 +1,29 @@
+/*************************************************************************
+ * Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>          *
+ *                                                                       *
+ * This file is part of The Dimension Test Suite.                        *
+ *                                                                       *
+ * The Dimension Test Suite is free software; you can redistribute it    *
+ * and/or modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the    *
+ * License, or (at your option) any later version.                       *
+ *                                                                       *
+ * The Dimension Test Suite 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  *
+ * General Public License for more details.                              *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+/**
+ * @file
+ * Test the concurrency module in isolation.
+ */
+
+#include "dimension/concurrency.h"
+
+#ifndef DMNSN_INLINE
+#error "Missing #include <dimension/base.h>"
+#endif
diff --git a/libdimension/tests/modules/math.c b/libdimension/tests/modules/math.c
new file mode 100644
index 0000000..5bf3ac1
--- /dev/null
+++ b/libdimension/tests/modules/math.c
@@ -0,0 +1,29 @@
+/*************************************************************************
+ * Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>          *
+ *                                                                       *
+ * This file is part of The Dimension Test Suite.                        *
+ *                                                                       *
+ * The Dimension Test Suite is free software; you can redistribute it    *
+ * and/or modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the    *
+ * License, or (at your option) any later version.                       *
+ *                                                                       *
+ * The Dimension Test Suite 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  *
+ * General Public License for more details.                              *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+/**
+ * @file
+ * Test the math module in isolation.
+ */
+
+#include "dimension/math.h"
+
+#ifndef DMNSN_INLINE
+#error "Missing #include <dimension/base.h>"
+#endif
diff --git a/libdimension/tests/modules/model.c b/libdimension/tests/modules/model.c
new file mode 100644
index 0000000..9bd5f00
--- /dev/null
+++ b/libdimension/tests/modules/model.c
@@ -0,0 +1,29 @@
+/*************************************************************************
+ * Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>          *
+ *                                                                       *
+ * This file is part of The Dimension Test Suite.                        *
+ *                                                                       *
+ * The Dimension Test Suite is free software; you can redistribute it    *
+ * and/or modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the    *
+ * License, or (at your option) any later version.                       *
+ *                                                                       *
+ * The Dimension Test Suite 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  *
+ * General Public License for more details.                              *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+/**
+ * @file
+ * Test the model module in isolation.
+ */
+
+#include "dimension/model.h"
+
+#ifndef DMNSN_INLINE
+#error "Missing #include <dimension/base.h>"
+#endif
diff --git a/libdimension/tests/modules/pattern.c b/libdimension/tests/modules/pattern.c
new file mode 100644
index 0000000..46bb99e
--- /dev/null
+++ b/libdimension/tests/modules/pattern.c
@@ -0,0 +1,29 @@
+/*************************************************************************
+ * Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>          *
+ *                                                                       *
+ * This file is part of The Dimension Test Suite.                        *
+ *                                                                       *
+ * The Dimension Test Suite is free software; you can redistribute it    *
+ * and/or modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the    *
+ * License, or (at your option) any later version.                       *
+ *                                                                       *
+ * The Dimension Test Suite 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  *
+ * General Public License for more details.                              *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+/**
+ * @file
+ * Test the pattern module in isolation.
+ */
+
+#include "dimension/pattern.h"
+
+#ifndef DMNSN_INLINE
+#error "Missing #include <dimension/base.h>"
+#endif
diff --git a/libdimension/tests/modules/platform.c b/libdimension/tests/modules/platform.c
new file mode 100644
index 0000000..b0fc978
--- /dev/null
+++ b/libdimension/tests/modules/platform.c
@@ -0,0 +1,29 @@
+/*************************************************************************
+ * Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>          *
+ *                                                                       *
+ * This file is part of The Dimension Test Suite.                        *
+ *                                                                       *
+ * The Dimension Test Suite is free software; you can redistribute it    *
+ * and/or modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the    *
+ * License, or (at your option) any later version.                       *
+ *                                                                       *
+ * The Dimension Test Suite 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  *
+ * General Public License for more details.                              *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+/**
+ * @file
+ * Test the platform module in isolation.
+ */
+
+#include "dimension/platform.h"
+
+#ifndef DMNSN_INLINE
+#error "Missing #include <dimension/base.h>"
+#endif
diff --git a/libdimension/tests/modules/render.c b/libdimension/tests/modules/render.c
new file mode 100644
index 0000000..a508c9f
--- /dev/null
+++ b/libdimension/tests/modules/render.c
@@ -0,0 +1,29 @@
+/*************************************************************************
+ * Copyright (C) 2014 Tavian Barnes <tavianator@tavianator.com>          *
+ *                                                                       *
+ * This file is part of The Dimension Test Suite.                        *
+ *                                                                       *
+ * The Dimension Test Suite is free software; you can redistribute it    *
+ * and/or modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the    *
+ * License, or (at your option) any later version.                       *
+ *                                                                       *
+ * The Dimension Test Suite 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  *
+ * General Public License for more details.                              *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+/**
+ * @file
+ * Test the render module in isolation.
+ */
+
+#include "dimension/render.h"
+
+#ifndef DMNSN_INLINE
+#error "Missing #include <dimension/base.h>"
+#endif
-- 
cgit v1.2.3