summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2009-06-24 21:29:09 +0000
committerTavian Barnes <tavianator@gmail.com>2009-06-24 21:29:09 +0000
commita91667e54e042889de5480dd56b950923837335d (patch)
treec777f770889f95e4619c1bb987eb7e9dd2189d70
parent603712c38a127e297eddd23975fb950499a0c10c (diff)
downloaddimension-a91667e54e042889de5480dd56b950923837335d.tar.xz
New convienence libraries for tests.
-rw-r--r--tests/Makefile.am31
-rw-r--r--tests/error.c2
-rw-r--r--tests/png.c30
-rw-r--r--tests/pngxx.cpp28
-rw-r--r--tests/raytrace.c2
-rw-r--r--tests/tests.c39
-rw-r--r--tests/tests.h24
-rw-r--r--tests/testsxx.cpp34
-rw-r--r--tests/testsxx.hpp25
-rw-r--r--tests/warning.c2
10 files changed, 152 insertions, 65 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 513e57a..5d09994 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -17,23 +17,30 @@
## along with this program. If not, see <http://www.gnu.org/licenses/>. ##
###########################################################################
-check_PROGRAMS = warning error png pngxx raytrace
-TESTS = $(check_PROGRAMS)
-XFAIL_TESTS = error
+check_LTLIBRARIES = libdimension-tests.la libdimensionxx-tests.la
+check_PROGRAMS = warning error png pngxx raytrace
+TESTS = $(check_PROGRAMS)
+XFAIL_TESTS = error
INCLUDES = -I../libdimension -I../libdimensionxx
-warning_SOURCES = warning.c
-warning_LDADD = ../libdimension/libdimension.la
+libdimension_tests_la_SOURCES = tests.h tests.c
+libdimension_tests_la_LIBADD = ../libdimension/libdimension.la
-error_SOURCES = error.c
-error_LDADD = ../libdimension/libdimension.la
+libdimensionxx_tests_la_SOURCES = testsxx.hpp testsxx.cpp
+libdimensionxx_tests_la_LIBADD = ../libdimensionxx/libdimensionxx.la
-png_SOURCES = png.c
-png_LDADD = ../libdimension/libdimension.la
+warning_SOURCES = warning.c
+warning_LDADD = ./libdimension-tests.la
-pngxx_SOURCES = pngxx.cpp
-pngxx_LDADD = ../libdimensionxx/libdimensionxx.la
+error_SOURCES = error.c
+error_LDADD = ./libdimension-tests.la
+
+png_SOURCES = png.c
+png_LDADD = ./libdimension-tests.la
+
+pngxx_SOURCES = pngxx.cpp
+pngxx_LDADD = ./libdimensionxx-tests.la
raytrace_SOURCES = raytrace.c
-raytrace_LDADD = ../libdimension/libdimension.la
+raytrace_LDADD = ./libdimension-tests.la
diff --git a/tests/error.c b/tests/error.c
index f1ef6ee..7bd8ef6 100644
--- a/tests/error.c
+++ b/tests/error.c
@@ -18,7 +18,7 @@
* <http://www.gnu.org/licenses/>. *
*************************************************************************/
-#include "../libdimension/dimension.h"
+#include "tests.h"
#include <stdlib.h>
int
diff --git a/tests/png.c b/tests/png.c
index 213e176..b80af04 100644
--- a/tests/png.c
+++ b/tests/png.c
@@ -18,7 +18,7 @@
* <http://www.gnu.org/licenses/>. *
*************************************************************************/
-#include "../libdimension/dimension.h"
+#include "tests.h"
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
@@ -27,7 +27,6 @@ int
main() {
dmnsn_canvas *canvas;
dmnsn_progress *progress;
- double prog;
dmnsn_color color;
dmnsn_CIE_xyY xyY;
dmnsn_CIE_Lab Lab;
@@ -118,14 +117,7 @@ main() {
return EXIT_FAILURE;
}
- /* Give an ellipsis progress indication */
- prog = 0.0;
- while ((prog += 1.0/10.0) < 1.0) {
- dmnsn_wait_progress(progress, prog);
- printf(".");
- fflush(stdout);
- }
- printf("\n");
+ progressbar("Writing PNG file: ", progress);
if (dmnsn_finish_progress(progress) != 0) {
fprintf(stderr, "--- Writing canvas to PNG failed! ---\n");
@@ -150,14 +142,7 @@ main() {
return EXIT_FAILURE;
}
- /* Give an ellipsis progress indication */
- prog = 0.0;
- while ((prog += 1.0/10.0) < 1.0) {
- dmnsn_wait_progress(progress, prog);
- printf(".");
- fflush(stdout);
- }
- printf("\n");
+ progressbar("Reading PNG file: ", progress);
if (dmnsn_finish_progress(progress) != 0) {
fprintf(stderr, "--- Reading canvas from PNG failed! ---\n");
@@ -181,14 +166,7 @@ main() {
return EXIT_FAILURE;
}
- /* Give an ellipsis progress indication */
- prog = 0.0;
- while ((prog += 1.0/10.0) < 1.0) {
- dmnsn_wait_progress(progress, prog);
- printf(".");
- fflush(stdout);
- }
- printf("\n");
+ progressbar("Writing PNG file: ", progress);
if (dmnsn_finish_progress(progress) != 0) {
fprintf(stderr, "--- Writing canvas to PNG failed! ---\n");
diff --git a/tests/pngxx.cpp b/tests/pngxx.cpp
index 2bb9fdb..4a99370 100644
--- a/tests/pngxx.cpp
+++ b/tests/pngxx.cpp
@@ -18,9 +18,8 @@
* <http://www.gnu.org/licenses/>. *
*************************************************************************/
-#include "../libdimensionxx/dimensionxx.hpp"
+#include "testsxx.hpp"
#include <fstream>
-#include <iostream>
int
main()
@@ -95,14 +94,7 @@ main()
}
Dimension::Progress progress = ocanvas.write_async();
-
- // Display ellipsis progress bar
- double prog = 0.0;
- while ((prog += 1.0/10.0) <= 1.0) {
- progress.wait(prog);
- std::cout << "." << std::flush;
- }
- std::cout << std::endl;
+ std::cout << "Writing PNG file: " << progress << std::endl;
}
std::ifstream ifstr("dimensionxx1.png", std::ios::binary);
@@ -110,24 +102,12 @@ main()
Dimension::Progress iprogress
= Dimension::PNG_Canvas::read_async(ifstr);
-
- double iprog = 0.0;
- while ((iprog += 1.0/10.0) <= 1.0) {
- iprogress.wait(iprog);
- std::cout << "." << std::flush;
- }
- std::cout << std::endl;
+ std::cout << "Reading PNG file: " << iprogress << std::endl;
Dimension::PNG_Canvas iocanvas(iprogress, ofstr);
Dimension::Progress oprogress = iocanvas.write_async();
-
- double oprog = 0.0;
- while ((oprog += 1.0/10.0) <= 1.0) {
- oprogress.wait(oprog);
- std::cout << "." << std::flush;
- }
- std::cout << std::endl;
+ std::cout << "Writing PNG file: " << oprogress << std::endl;
return 0;
}
diff --git a/tests/raytrace.c b/tests/raytrace.c
index abd4093..bb26f58 100644
--- a/tests/raytrace.c
+++ b/tests/raytrace.c
@@ -18,7 +18,7 @@
* <http://www.gnu.org/licenses/>. *
*************************************************************************/
-#include "../libdimension/dimension.h"
+#include "tests.h"
#include <stdlib.h>
#include <stdio.h>
diff --git a/tests/tests.c b/tests/tests.c
new file mode 100644
index 0000000..67e5ee1
--- /dev/null
+++ b/tests/tests.c
@@ -0,0 +1,39 @@
+/*************************************************************************
+ * Copyright (C) 2008 Tavian Barnes <tavianator@gmail.com> *
+ * *
+ * This file is part of The Dimension Test Suite. *
+ * *
+ * Dimension 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 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * Dimension 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 program. If not, see *
+ * <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+#include "tests.h"
+
+void
+progressbar(const char *str, const dmnsn_progress *progress)
+{
+ const unsigned int increments = 32;
+ unsigned int i;
+
+ printf("%s|", str);
+ fflush(stdout);
+ for (i = 0; i < increments; ++i) {
+ dmnsn_wait_progress(progress, ((double)(i + 1))/increments);
+
+ printf("=");
+ fflush(stdout);
+ }
+ printf("|\n");
+ fflush(stdout);
+}
diff --git a/tests/tests.h b/tests/tests.h
new file mode 100644
index 0000000..c6b0de6
--- /dev/null
+++ b/tests/tests.h
@@ -0,0 +1,24 @@
+/*************************************************************************
+ * Copyright (C) 2008 Tavian Barnes <tavianator@gmail.com> *
+ * *
+ * This file is part of The Dimension Test Suite. *
+ * *
+ * Dimension 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 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * Dimension 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 program. If not, see *
+ * <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+#include "../libdimension/dimension.h"
+#include <stdio.h>
+
+void progressbar(const char *str, const dmnsn_progress *progress);
diff --git a/tests/testsxx.cpp b/tests/testsxx.cpp
new file mode 100644
index 0000000..a4a7d7b
--- /dev/null
+++ b/tests/testsxx.cpp
@@ -0,0 +1,34 @@
+/*************************************************************************
+ * Copyright (C) 2008 Tavian Barnes <tavianator@gmail.com> *
+ * *
+ * This file is part of The Dimension Test Suite. *
+ * *
+ * Dimension 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 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * Dimension 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 program. If not, see *
+ * <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+#include "testsxx.hpp"
+
+std::ostream&
+operator<<(std::ostream& ostr, const Dimension::Progress& progress)
+{
+ const unsigned int increments = 32;
+
+ ostr << "|" << std::flush;
+ for (unsigned int i = 0; i < increments; ++i) {
+ progress.wait(static_cast<double>(i + 1)/increments);
+ ostr << "=" << std::flush;
+ }
+ return ostr << "|" << std::flush;
+}
diff --git a/tests/testsxx.hpp b/tests/testsxx.hpp
new file mode 100644
index 0000000..43c7593
--- /dev/null
+++ b/tests/testsxx.hpp
@@ -0,0 +1,25 @@
+/*************************************************************************
+ * Copyright (C) 2008 Tavian Barnes <tavianator@gmail.com> *
+ * *
+ * This file is part of The Dimension Test Suite. *
+ * *
+ * Dimension 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 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * Dimension 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 program. If not, see *
+ * <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+#include "../libdimensionxx/dimensionxx.hpp"
+#include <iostream>
+
+std::ostream& operator<<(std::ostream& ostr,
+ const Dimension::Progress& progress);
diff --git a/tests/warning.c b/tests/warning.c
index 7816cc8..80199c9 100644
--- a/tests/warning.c
+++ b/tests/warning.c
@@ -18,7 +18,7 @@
* <http://www.gnu.org/licenses/>. *
*************************************************************************/
-#include "../libdimension/dimension.h"
+#include "tests.h"
#include <stdlib.h>
int