From e2c5e2760d98144ac65c4c9f15e7675ec7852319 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 11 Sep 2009 18:01:51 +0000 Subject: Only test C++ interface - the C library is used by libdimensionxx anyway, so we've been testing it twice for no good reason. --- tests/Makefile.am | 32 ++--- tests/error.c | 32 ----- tests/error.cpp | 33 +++++ tests/gl.c | 126 -------------------- tests/gl.cpp | 79 ++++++++++++ tests/glxx.cpp | 80 ------------- tests/png.c | 155 ------------------------ tests/png.cpp | 65 ++++++++++ tests/pngxx.cpp | 65 ---------- tests/tests.c | 350 ------------------------------------------------------ tests/tests.cpp | 220 ++++++++++++++++++++++++++++++++++ tests/tests.h | 74 ------------ tests/tests.hpp | 61 ++++++++++ tests/testsxx.cpp | 145 ---------------------- tests/testsxx.hpp | 56 --------- tests/warning.c | 53 --------- tests/warning.cpp | 54 +++++++++ 17 files changed, 521 insertions(+), 1159 deletions(-) delete mode 100644 tests/error.c create mode 100644 tests/error.cpp delete mode 100644 tests/gl.c create mode 100644 tests/gl.cpp delete mode 100644 tests/glxx.cpp delete mode 100644 tests/png.c create mode 100644 tests/png.cpp delete mode 100644 tests/pngxx.cpp delete mode 100644 tests/tests.c create mode 100644 tests/tests.cpp delete mode 100644 tests/tests.h create mode 100644 tests/tests.hpp delete mode 100644 tests/testsxx.cpp delete mode 100644 tests/testsxx.hpp delete mode 100644 tests/warning.c create mode 100644 tests/warning.cpp diff --git a/tests/Makefile.am b/tests/Makefile.am index f4c4107..e26b181 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -17,42 +17,28 @@ ## along with this program. If not, see . ## ########################################################################### -check_LTLIBRARIES = libdimension-tests.la \ - libdimensionxx-tests.la +check_LTLIBRARIES = libdimension-tests.la check_PROGRAMS = warning-test \ error-test \ png-test \ - pngxx-test \ - gl-test \ - glxx-test + gl-test TESTS = $(check_PROGRAMS) XFAIL_TESTS = error-test INCLUDES = -I../libdimension -I../libdimensionxx -libdimension_tests_la_SOURCES = tests.h \ - tests.c -libdimension_tests_la_LIBADD = ../libdimension/libdimension.la +libdimension_tests_la_SOURCES = tests.hpp \ + tests.cpp +libdimension_tests_la_LIBADD = ../libdimensionxx/libdimensionxx.la -libdimensionxx_tests_la_SOURCES = testsxx.hpp \ - testsxx.cpp -libdimensionxx_tests_la_LIBADD = ./libdimension-tests.la \ - ../libdimensionxx/libdimensionxx.la - -warning_test_SOURCES = warning.c +warning_test_SOURCES = warning.cpp warning_test_LDADD = ./libdimension-tests.la -error_test_SOURCES = error.c +error_test_SOURCES = error.cpp error_test_LDADD = ./libdimension-tests.la -png_test_SOURCES = png.c +png_test_SOURCES = png.cpp png_test_LDADD = ./libdimension-tests.la -pngxx_test_SOURCES = pngxx.cpp -pngxx_test_LDADD = ./libdimensionxx-tests.la - -gl_test_SOURCES = gl.c +gl_test_SOURCES = gl.cpp gl_test_LDADD = ./libdimension-tests.la - -glxx_test_SOURCES = glxx.cpp -glxx_test_LDADD = ./libdimensionxx-tests.la diff --git a/tests/error.c b/tests/error.c deleted file mode 100644 index 217db36..0000000 --- a/tests/error.c +++ /dev/null @@ -1,32 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -/* Make sure that errors terminate us - this test should fail */ - -#include "tests.h" -#include - -int -main() -{ - dmnsn_set_resilience(DMNSN_SEVERITY_LOW); - dmnsn_error(DMNSN_SEVERITY_LOW, "This error is expected."); - - return EXIT_SUCCESS; -} diff --git a/tests/error.cpp b/tests/error.cpp new file mode 100644 index 0000000..705e013 --- /dev/null +++ b/tests/error.cpp @@ -0,0 +1,33 @@ +/************************************************************************* + * Copyright (C) 2009 Tavian Barnes * + * * + * 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 . * + *************************************************************************/ + +/* Make sure that errors terminate us - this test should fail */ + +#include "tests.hpp" + +int +main() +{ + using namespace Dimension; + + resilience(SEVERITY_LOW); + dmnsn_error(SEVERITY_LOW, "This error is expected."); + + return EXIT_SUCCESS; +} diff --git a/tests/gl.c b/tests/gl.c deleted file mode 100644 index 8b999af..0000000 --- a/tests/gl.c +++ /dev/null @@ -1,126 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -#include "tests.h" -#include -#include - -int -main() { - dmnsn_display *display; - dmnsn_progress *progress, *barprogress; - dmnsn_scene *scene; - dmnsn_canvas *canvas; - - /* Set the resilience low for tests */ - dmnsn_set_resilience(DMNSN_SEVERITY_LOW); - - /* Create the default test scene */ - scene = dmnsn_new_default_scene(); - if (!scene) { - fprintf(stderr, "--- Couldn't create default scene! ---\n"); - return EXIT_FAILURE; - } - - /* Optimize the canvas for GL drawing */ - if (dmnsn_gl_optimize_canvas(scene->canvas) != 0) { - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Couldn't optimize canvas for GL! ---\n"); - return EXIT_FAILURE; - } - - /* Create a new glX display */ - display = dmnsn_new_display(scene->canvas); - if (!display) { - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Couldn't initialize X or glX! ---\n"); - return EXIT_FAILURE; - } - - /* Render the scene */ - - progress = dmnsn_raytrace_scene_async(scene); - if (!progress) { - dmnsn_delete_display(display); - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Couldn't start raytracing worker thread! ---\n"); - return EXIT_FAILURE; - } - - barprogress = dmnsn_progressbar_async("Raytracing scene: ", progress); - - /* Display the scene as it's rendered */ - while (dmnsn_get_progress(progress) < 1.0) { - if (dmnsn_gl_write_canvas(scene->canvas) != 0) { - dmnsn_delete_display(display); - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Drawing to openGL failed! ---\n"); - return EXIT_FAILURE; - } - dmnsn_display_flush(display); - } - - dmnsn_finish_progress(barprogress); - - if (dmnsn_finish_progress(progress) != 0) { - dmnsn_delete_display(display); - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Raytracing failed! ---\n"); - return EXIT_FAILURE; - } - - /* Make sure we show the completed rendering */ - if (dmnsn_gl_write_canvas(scene->canvas) != 0) { - dmnsn_delete_display(display); - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Drawing to openGL failed! ---\n"); - return EXIT_FAILURE; - } - dmnsn_display_flush(display); - - /* Show the image on screen for a bit */ - sleep(1); - - /* Read a canvas from the GL buffer */ - canvas = dmnsn_gl_read_canvas(0, 0, scene->canvas->x, scene->canvas->y); - if (!canvas) { - dmnsn_delete_display(display); - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Reading canvas from GL buffer failed! ---\n"); - return EXIT_FAILURE; - } - - /* And write it back */ - if (dmnsn_gl_write_canvas(canvas) != 0) { - dmnsn_delete_canvas(canvas); - dmnsn_delete_display(display); - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Drawing to openGL failed! ---\n"); - return EXIT_FAILURE; - } - dmnsn_display_flush(display); - - /* Show the image on screen for a bit */ - sleep(1); - - dmnsn_delete_canvas(canvas); - dmnsn_delete_display(display); - dmnsn_delete_default_scene(scene); - return EXIT_SUCCESS; -} diff --git a/tests/gl.cpp b/tests/gl.cpp new file mode 100644 index 0000000..c01859b --- /dev/null +++ b/tests/gl.cpp @@ -0,0 +1,79 @@ +/************************************************************************* + * Copyright (C) 2009 Tavian Barnes * + * * + * 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 . * + *************************************************************************/ + +#include "tests.hpp" +#include +#include + +int +main() { + using namespace Dimension; + + // Set the resilience low for tests + resilience(SEVERITY_LOW); + + // Create the default test scene + Scene scene = Tests::default_scene(); + + // Create a glX window + Tests::Display display(scene.canvas()); + + { + Raytracer raytracer(scene); + GL_Writer writer(scene.canvas()); + + // Render the scene + Progress progress = raytracer.render_async(); + + std::cout << "Raytracing scene: "; + Progress barprogress = Tests::progressbar_async(std::cout, progress); + + // Display the scene as it's rendered + while (progress.progress() < 1.0) { + writer.write(); + display.flush(); + } + + barprogress.finish(); + std::cout << std::endl; + + // Make sure we show the completed rendering + progress.finish(); + writer.write(); + display.flush(); + } + + // Pause for a second + sleep(1); + + // Read the canvas back from the GL buffer + GL_Reader reader; + Canvas canvas + = reader.read(0, 0, scene.canvas().width(), scene.canvas().height()); + + // And write it again + GL_Writer writer(canvas); + writer.write(); + display.flush(); + + // Pause for a second + sleep(1); + + return EXIT_SUCCESS; +} diff --git a/tests/glxx.cpp b/tests/glxx.cpp deleted file mode 100644 index e44510b..0000000 --- a/tests/glxx.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -#include "tests.h" -#include "testsxx.hpp" -#include -#include - -int -main() { - using namespace Dimension; - - // Set the resilience low for tests - resilience(SEVERITY_LOW); - - // Create the default test scene - Scene scene = Tests::default_scene(); - - // Create a glX window - Tests::Display display(scene.canvas()); - - { - Raytracer raytracer(scene); - GL_Writer writer(scene.canvas()); - - // Render the scene - Progress progress = raytracer.render_async(); - - std::cout << "Raytracing scene: "; - Progress barprogress = Tests::progressbar_async(std::cout, progress); - - // Display the scene as it's rendered - while (progress.progress() < 1.0) { - writer.write(); - display.flush(); - } - - barprogress.finish(); - std::cout << std::endl; - - // Make sure we show the completed rendering - progress.finish(); - writer.write(); - display.flush(); - } - - // Pause for a second - sleep(1); - - // Read the canvas back from the GL buffer - GL_Reader reader; - Canvas canvas - = reader.read(0, 0, scene.canvas().width(), scene.canvas().height()); - - // And write it again - GL_Writer writer(canvas); - writer.write(); - display.flush(); - - // Pause for a second - sleep(1); - - return EXIT_SUCCESS; -} diff --git a/tests/png.c b/tests/png.c deleted file mode 100644 index 488cd56..0000000 --- a/tests/png.c +++ /dev/null @@ -1,155 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -#include "tests.h" -#include -#include - -int -main() { - dmnsn_progress *progress; - FILE *ifile, *ofile; - dmnsn_scene *scene; - dmnsn_canvas *canvas; - - /* Set the resilience low for tests */ - dmnsn_set_resilience(DMNSN_SEVERITY_LOW); - - /* Render the scene */ - { - /* Allocate our default scene */ - scene = dmnsn_new_default_scene(); - if (!scene) { - fprintf(stderr, "--- Allocation of default scene failed! ---\n"); - return EXIT_FAILURE; - } - - /* Optimize the canvas for PNG export */ - if (dmnsn_png_optimize_canvas(scene->canvas) != 0) { - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Couldn't optimize canvas for PNG! ---\n"); - return EXIT_FAILURE; - } - - /* Render scene */ - - progress = dmnsn_raytrace_scene_async(scene); - if (!progress) { - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Couldn't start raytracing worker thread! ---\n"); - return EXIT_FAILURE; - } - - dmnsn_progressbar("Raytracing scene: ", progress); - - if (dmnsn_finish_progress(progress) != 0) { - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Raytracing failed! ---\n"); - return EXIT_FAILURE; - } - - /* Write the image to PNG */ - - ofile = fopen("png1.png", "wb"); - if (!ofile) { - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Couldn't open 'png1.png' for writing! ---\n"); - return EXIT_FAILURE; - } - - progress = dmnsn_png_write_canvas_async(scene->canvas, ofile); - if (!progress) { - fclose(ofile); - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Couldn't start PNG writing worker thread! ---\n"); - return EXIT_FAILURE; - } - - dmnsn_progressbar("Writing PNG file: ", progress); - - if (dmnsn_finish_progress(progress) != 0) { - fclose(ofile); - dmnsn_delete_default_scene(scene); - fprintf(stderr, "--- Writing canvas to PNG failed! ---\n"); - return EXIT_FAILURE; - } - - fclose(ofile); - dmnsn_delete_default_scene(scene); - } - - /* Now test PNG import/export */ - { - /* Read the image back from PNG */ - - ifile = fopen("png1.png", "rb"); - if (!ifile) { - fprintf(stderr, "--- Couldn't open 'png1.png' for reading! ---\n"); - return EXIT_FAILURE; - } - - progress = dmnsn_png_read_canvas_async(&canvas, ifile); - if (!progress) { - fclose(ifile); - fprintf(stderr, "--- Couldn't start PNG reading worker thread! ---\n"); - return EXIT_FAILURE; - } - - dmnsn_progressbar("Reading PNG file: ", progress); - - if (dmnsn_finish_progress(progress) != 0) { - fclose(ifile); - fprintf(stderr, "--- Reading canvas from PNG failed! ---\n"); - return EXIT_FAILURE; - } - - fclose(ifile); - - /* And write it back */ - - ofile = fopen("png2.png", "wb"); - if (!ofile) { - fprintf(stderr, "--- Couldn't open 'png2.png' for writing! ---\n"); - dmnsn_delete_canvas(canvas); - return EXIT_FAILURE; - } - - progress = dmnsn_png_write_canvas_async(canvas, ofile); - if (!progress) { - fclose(ofile); - dmnsn_delete_canvas(canvas); - fprintf(stderr, "--- Couldn't start PNG writing worker thread! ---\n"); - return EXIT_FAILURE; - } - - dmnsn_progressbar("Writing PNG file: ", progress); - - if (dmnsn_finish_progress(progress) != 0) { - fclose(ofile); - dmnsn_delete_canvas(canvas); - fprintf(stderr, "--- Writing canvas to PNG failed! ---\n"); - return EXIT_FAILURE; - } - - fclose(ofile); - dmnsn_delete_canvas(canvas); - } - - return EXIT_SUCCESS; -} diff --git a/tests/png.cpp b/tests/png.cpp new file mode 100644 index 0000000..92a48d1 --- /dev/null +++ b/tests/png.cpp @@ -0,0 +1,65 @@ +/************************************************************************* + * Copyright (C) 2009 Tavian Barnes * + * * + * 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 . * + *************************************************************************/ + +#include "tests.hpp" +#include +#include + +int +main() { + using namespace Dimension; + + // Set the resilience low for tests + resilience(SEVERITY_LOW); + + // Perform the rendering + { + // Get the default test scene + Scene scene = Tests::default_scene(); + + std::ofstream ofile("pngxx1.png"); + PNG_Writer writer(scene.canvas(), ofile); + + // Render the scene + Raytracer raytracer(scene); + Progress rprogress = raytracer.render_async(); + std::cout << "Raytracing scene: " << rprogress << std::endl; + rprogress.finish(); + + // Write the canvas + Progress oprogress = writer.write_async(); + std::cout << "Writing PNG file: " << oprogress << std::endl; + } + + // Now test PNG import/export + { + std::ifstream ifile("pngxx1.png"); + PNG_Reader reader(ifile); + Progress iprogress = reader.read_async(); + std::cout << "Reading PNG file: " << iprogress << std::endl; + + Canvas canvas = PNG_Reader::finish(iprogress); + std::ofstream ofile("pngxx2.png"); + PNG_Writer writer(canvas, ofile); + Progress oprogress = writer.write_async(); + std::cout << "Writing PNG file: " << oprogress << std::endl; + } + + return EXIT_SUCCESS; +} diff --git a/tests/pngxx.cpp b/tests/pngxx.cpp deleted file mode 100644 index 327ccd0..0000000 --- a/tests/pngxx.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -#include "testsxx.hpp" -#include -#include - -int -main() { - using namespace Dimension; - - // Set the resilience low for tests - resilience(SEVERITY_LOW); - - // Perform the rendering - { - // Get the default test scene - Scene scene = Tests::default_scene(); - - std::ofstream ofile("pngxx1.png"); - PNG_Writer writer(scene.canvas(), ofile); - - // Render the scene - Raytracer raytracer(scene); - Progress rprogress = raytracer.render_async(); - std::cout << "Raytracing scene: " << rprogress << std::endl; - rprogress.finish(); - - // Write the canvas - Progress oprogress = writer.write_async(); - std::cout << "Writing PNG file: " << oprogress << std::endl; - } - - // Now test PNG import/export - { - std::ifstream ifile("pngxx1.png"); - PNG_Reader reader(ifile); - Progress iprogress = reader.read_async(); - std::cout << "Reading PNG file: " << iprogress << std::endl; - - Canvas canvas = PNG_Reader::finish(iprogress); - std::ofstream ofile("pngxx2.png"); - PNG_Writer writer(canvas, ofile); - Progress oprogress = writer.write_async(); - std::cout << "Writing PNG file: " << oprogress << std::endl; - } - - return EXIT_SUCCESS; -} diff --git a/tests/tests.c b/tests/tests.c deleted file mode 100644 index f8c02de..0000000 --- a/tests/tests.c +++ /dev/null @@ -1,350 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -#include "tests.h" - -dmnsn_scene * -dmnsn_new_default_scene() -{ - dmnsn_scene *scene; - dmnsn_object *sphere, *cube; - dmnsn_matrix trans; - dmnsn_sRGB sRGB; - dmnsn_color color; - - /* Allocate a new scene */ - scene = dmnsn_new_scene(); - if (!scene) { - return NULL; - } - - /* Background color */ - sRGB.R = 0.0; - sRGB.G = 0.0; - sRGB.B = 0.1; - color = dmnsn_color_from_sRGB(sRGB); - color.filter = 0.1; - scene->background = color; - - /* Allocate a canvas */ - scene->canvas = dmnsn_new_canvas(768, 480); - if (!scene->canvas) { - dmnsn_delete_scene(scene); - return NULL; - } - - /* Set up the transformation matrix for the perspective camera */ - trans = dmnsn_scale_matrix( - dmnsn_vector_construct( - ((double)scene->canvas->x)/scene->canvas->y, 1.0, 1.0 - ) - ); - trans = dmnsn_matrix_mul( - dmnsn_translation_matrix(dmnsn_vector_construct(0.0, 0.0, -4.0)), - trans - ); - trans = dmnsn_matrix_mul( - dmnsn_rotation_matrix(dmnsn_vector_construct(0.0, 1.0, 0.0)), - trans - ); - - /* Create a perspective camera */ - scene->camera = dmnsn_new_perspective_camera(); - if (!scene->camera) { - dmnsn_delete_canvas(scene->canvas); - dmnsn_delete_scene(scene); - return NULL; - } - dmnsn_set_perspective_camera_trans(scene->camera, trans); - - /* Now make our objects */ - - sphere = dmnsn_new_sphere(); - if (!sphere) { - dmnsn_delete_camera(scene->camera); - dmnsn_delete_canvas(scene->canvas); - dmnsn_delete_scene(scene); - return NULL; - } - - sphere->texture = dmnsn_new_texture(); - if (!sphere->texture) { - dmnsn_delete_object(sphere); - dmnsn_delete_camera(scene->camera); - dmnsn_delete_canvas(scene->canvas); - dmnsn_delete_scene(scene); - return NULL; - } - - sphere->texture->pigment = dmnsn_new_solid_pigment(dmnsn_white); - if (!sphere->texture->pigment) { - dmnsn_delete_texture(sphere->texture); - dmnsn_delete_object(sphere); - dmnsn_delete_camera(scene->camera); - dmnsn_delete_canvas(scene->canvas); - dmnsn_delete_scene(scene); - return NULL; - } - - sphere->trans = dmnsn_matrix_inverse( - dmnsn_scale_matrix(dmnsn_vector_construct(1.25, 1.25, 1.25)) - ); - dmnsn_array_push(scene->objects, &sphere); - - cube = dmnsn_new_cube(); - if (!cube) { - dmnsn_delete_pigment(sphere->texture->pigment); - dmnsn_delete_texture(sphere->texture); - dmnsn_delete_object(sphere); - dmnsn_delete_camera(scene->camera); - dmnsn_delete_canvas(scene->canvas); - dmnsn_delete_scene(scene); - return NULL; - } - - cube->trans = dmnsn_matrix_inverse( - dmnsn_rotation_matrix(dmnsn_vector_construct(0.75, 0.0, 0.0)) - ); - dmnsn_array_push(scene->objects, &cube); - - return scene; -} - -void -dmnsn_delete_default_scene(dmnsn_scene *scene) -{ - dmnsn_object *sphere, *cube; - dmnsn_array_get(scene->objects, 0, &sphere); - dmnsn_array_get(scene->objects, 1, &cube); - -// dmnsn_delete_pigment(cube->texture->pigment); - dmnsn_delete_texture(cube->texture); - dmnsn_delete_object(cube); - - dmnsn_delete_pigment(sphere->texture->pigment); - dmnsn_delete_texture(sphere->texture); - dmnsn_delete_object(sphere); - - dmnsn_delete_camera(scene->camera); - dmnsn_delete_canvas(scene->canvas); - dmnsn_delete_scene(scene); -} - -/* XIfEvent callback */ -static Bool -WaitForNotify(Display *d, XEvent *e, char *arg) -{ - return (e->type == MapNotify) && (e->xmap.window == (Window)arg); -} - -dmnsn_display * -dmnsn_new_display(const dmnsn_canvas *canvas) -{ - int attributeList[] = { - GLX_RGBA, - GLX_DOUBLEBUFFER, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - None - }; - dmnsn_display *display; - XVisualInfo *vi; - XSetWindowAttributes swa; - - display = malloc(sizeof(dmnsn_display)); - if (!display) { - return NULL; - } - - /* Get an X connection */ - display->dpy = XOpenDisplay(0); - if (!display->dpy) { - free(display); - return NULL; - } - - /* Get an appropriate visual */ - vi = glXChooseVisual(display->dpy, DefaultScreen(display->dpy), - attributeList); - if (!vi) { - XCloseDisplay(display->dpy); - free(display); - return NULL; - } - - /* Create a GLX context */ - display->cx = glXCreateContext(display->dpy, vi, 0, GL_TRUE); - if (!display->cx) { - XCloseDisplay(display->dpy); - free(display); - return NULL; - } - - /* Create a color map */ - display->cmap = XCreateColormap(display->dpy, - RootWindow(display->dpy, vi->screen), - vi->visual, AllocNone); - if (!display->cmap) { - glXDestroyContext(display->dpy, display->cx); - XCloseDisplay(display->dpy); - free(display); - return NULL; - } - - /* Create a window */ - swa.colormap = display->cmap; - swa.border_pixel = 0; - swa.event_mask = StructureNotifyMask; - display->win = XCreateWindow(display->dpy, - RootWindow(display->dpy, vi->screen), - 0, 0, canvas->x, canvas->y, - 0, vi->depth, InputOutput, vi->visual, - CWBorderPixel|CWColormap|CWEventMask, &swa); - if (!display->win) { - XFreeColormap(display->dpy, display->cmap); - glXDestroyContext(display->dpy, display->cx); - XCloseDisplay(display->dpy); - free(display); - return NULL; - } - - XStoreName(display->dpy, display->win, "glX"); - - XMapWindow(display->dpy, display->win); - XIfEvent(display->dpy, &display->event, WaitForNotify, (char*)display->win); - - /* Connect the context to the window */ - glXMakeCurrent(display->dpy, display->win, display->cx); - - return display; -} - -void -dmnsn_delete_display(dmnsn_display *display) -{ - if (display) { - XDestroyWindow(display->dpy, display->win); - XFreeColormap(display->dpy, display->cmap); - glXDestroyContext(display->dpy, display->cx); - XCloseDisplay(display->dpy); - free(display); - } -} - -void -dmnsn_display_flush(dmnsn_display *display) -{ - glFlush(); - glXSwapBuffers(display->dpy, display->win); -} - -/* Print a progress bar of the progress of `progress' */ -void -dmnsn_progressbar(const char *str, const dmnsn_progress *progress) -{ - dmnsn_progress *barprogress = dmnsn_progressbar_async(str, progress); - if (dmnsn_finish_progress(barprogress) != 0) { - dmnsn_error(DMNSN_SEVERITY_HIGH, - "Progress bar background thread failed."); - } -} - -typedef struct { - dmnsn_progress *barprogress; - const char *str; - const dmnsn_progress *progress; -} dmnsn_progressbar_payload; - -/* Progress bar thread callback */ -static void *dmnsn_progressbar_thread(void *ptr); - -/* Print a progress bar in the background */ -dmnsn_progress * -dmnsn_progressbar_async(const char *str, const dmnsn_progress *progress) -{ - dmnsn_progress *barprogress = dmnsn_new_progress(); - dmnsn_progressbar_payload *payload; - - if (barprogress) { - payload = malloc(sizeof(dmnsn_progressbar_payload)); - if (!payload) { - dmnsn_error(DMNSN_SEVERITY_HIGH, - "Couldn't allocate progress bar payload."); - } - - payload->barprogress = barprogress; - payload->str = str; - payload->progress = progress; - - /* Create the worker thread */ - if (pthread_create(&barprogress->thread, NULL, &dmnsn_progressbar_thread, - payload) != 0) - { - dmnsn_error(DMNSN_SEVERITY_HIGH, - "Couldn't start progress bar background thread."); - } - } - - return barprogress; -} - -/* Actual progress bar implementation */ -static int dmnsn_progressbar_impl(dmnsn_progress *barprogress, const char *str, - const dmnsn_progress *progress); - -/* Progress bar thread callback */ -static void * -dmnsn_progressbar_thread(void *ptr) -{ - dmnsn_progressbar_payload *payload = ptr; - int *retval = malloc(sizeof(int)); - if (retval) { - *retval = dmnsn_progressbar_impl(payload->barprogress, - payload->str, payload->progress); - } - dmnsn_done_progress(payload->barprogress); - free(payload); - return retval; -} - -/* Actual progress bar implementation */ -static int -dmnsn_progressbar_impl(dmnsn_progress *barprogress, - const char *str, const dmnsn_progress *progress) -{ - const unsigned int increments = 32; - unsigned int i; - - dmnsn_new_progress_element(barprogress, increments); - - printf("%s|", str); - fflush(stdout); - for (i = 0; i < increments; ++i) { - dmnsn_wait_progress(progress, ((double)(i + 1))/increments); - - printf("="); - fflush(stdout); - dmnsn_increment_progress(barprogress); - } - printf("|\n"); - fflush(stdout); - - return 0; -} diff --git a/tests/tests.cpp b/tests/tests.cpp new file mode 100644 index 0000000..002adbb --- /dev/null +++ b/tests/tests.cpp @@ -0,0 +1,220 @@ +/************************************************************************* + * Copyright (C) 2009 Tavian Barnes * + * * + * 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 . * + *************************************************************************/ + +#include "tests.hpp" + +namespace Dimension +{ + namespace Tests + { + Scene + default_scene() + { + // Canvas + Canvas canvas(768, 480); + + // Camera + Perspective_Camera camera; + camera.trans( + Matrix::rotation(Vector(0.0, 1.0, 0.0)) + * Matrix::translation(Vector(0.0, 0.0, -4.0)) + * Matrix::scale( + Vector(static_cast(canvas.width())/canvas.height(), + 1.0, + 1.0) + ) + ); + + // Scene + Scene scene(camera, canvas); + + // Objects in scene + + Sphere sphere; + sphere.trans(inverse(Matrix::scale(Vector(1.25, 1.25, 1.25)))); + scene.objects().push(sphere); + + Cube cube; + cube.trans(inverse(Matrix::rotation(Vector(0.75, 0.0, 0.0)))); + scene.objects().push(cube); + + // Background color + Color background = sRGB(0.0, 0.1, 0.25); + background.filter(0.1); + scene.background(background); + + return scene; + } + + namespace + { + /* XIfEvent callback */ + Bool + WaitForNotify(::Display *d, XEvent *e, char *arg) + { + return (e->type == MapNotify) && (e->xmap.window == (Window)arg); + } + } + + Display::Display(const Canvas& canvas) + { + int attributeList[] = { + GLX_RGBA, + GLX_DOUBLEBUFFER, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + None + }; + XVisualInfo *vi; + XSetWindowAttributes swa; + + /* Get an X connection */ + m_dpy = XOpenDisplay(0); + if (!m_dpy) { + throw Dimension_Error("Couldn't create display."); + } + + /* Get an appropriate visual */ + vi = glXChooseVisual(m_dpy, DefaultScreen(m_dpy), + attributeList); + if (!vi) { + XCloseDisplay(m_dpy); + throw Dimension_Error("Couldn't create display."); + } + + /* Create a GLX context */ + m_cx = glXCreateContext(m_dpy, vi, 0, GL_TRUE); + if (!m_cx) { + XCloseDisplay(m_dpy); + throw Dimension_Error("Couldn't create display."); + } + + /* Create a color map */ + m_cmap = XCreateColormap(m_dpy, + RootWindow(m_dpy, vi->screen), + vi->visual, AllocNone); + if (!m_cmap) { + glXDestroyContext(m_dpy, m_cx); + XCloseDisplay(m_dpy); + throw Dimension_Error("Couldn't create display."); + } + + /* Create a window */ + swa.colormap = m_cmap; + swa.border_pixel = 0; + swa.event_mask = StructureNotifyMask; + m_win = XCreateWindow(m_dpy, + RootWindow(m_dpy, vi->screen), + 0, 0, canvas.width(), canvas.height(), + 0, vi->depth, InputOutput, vi->visual, + CWBorderPixel|CWColormap|CWEventMask, &swa); + if (!m_win) { + XFreeColormap(m_dpy, m_cmap); + glXDestroyContext(m_dpy, m_cx); + XCloseDisplay(m_dpy); + throw Dimension_Error("Couldn't create display."); + } + + XStoreName(m_dpy, m_win, "glX"); + + XMapWindow(m_dpy, m_win); + XIfEvent(m_dpy, &m_event, &WaitForNotify, (char*)m_win); + + /* Connect the context to the window */ + glXMakeCurrent(m_dpy, m_win, m_cx); + } + + Display::~Display() + { + XDestroyWindow(m_dpy, m_win); + XFreeColormap(m_dpy, m_cmap); + glXDestroyContext(m_dpy, m_cx); + XCloseDisplay(m_dpy); + } + + void + Display::flush() + { + glFlush(); + glXSwapBuffers(m_dpy, m_win); + } + + namespace + { + struct Progressbar_Payload + { + public: + std::ostream* ostr; + const Progress* progress; + }; + + void * + progressbar_thread(void *ptr) + { + Progressbar_Payload* payload + = reinterpret_cast(ptr); + + *payload->ostr << *payload->progress; + + int* ret = static_cast(std::malloc(sizeof(int))); + if (ret) { + *ret = 0; + } + return ret; + } + } + + Progress progressbar_async(std::ostream& ostr, + const Dimension::Progress& progress) + { + dmnsn_progress* barprogress = dmnsn_new_progress(); + if (!barprogress) { + throw Dimension_Error("Couldn't allocate progress object."); + } + + Progressbar_Payload* payload = new Progressbar_Payload; + payload->ostr = &ostr; + payload->progress = &progress; + + /* Create the worker thread */ + if (pthread_create(&barprogress->thread, NULL, &progressbar_thread, + reinterpret_cast(payload)) != 0) + { + throw Dimension_Error("Couldn't create background thread."); + } + + return Progress(barprogress); + } + } + + // Print a progress bar of the progress of `progress' + 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(i + 1)/increments); + ostr << "=" << std::flush; + } + return ostr << "|" << std::flush; + } +} diff --git a/tests/tests.h b/tests/tests.h deleted file mode 100644 index 19111c8..0000000 --- a/tests/tests.h +++ /dev/null @@ -1,74 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -#ifndef TESTS_H -#define TESTS_H - -#include "../libdimension/dimension.h" -#include -#include -#include -#include - -#ifdef __cplusplus -/* We've been included from a C++ file; mark everything here as extern "C" */ -extern "C" { -#endif - -/* - * Convenience - */ - -dmnsn_scene *dmnsn_new_default_scene(); -void dmnsn_delete_default_scene(dmnsn_scene *scene); - -/* - * Windowing - */ - -typedef struct { - Display *dpy; - Window win; - Colormap cmap; - GLXContext cx; - XEvent event; -} dmnsn_display; - -dmnsn_display *dmnsn_new_display(const dmnsn_canvas *canvas); -void dmnsn_delete_display(dmnsn_display *display); - -/* Flush the GL buffers */ -void dmnsn_display_flush(dmnsn_display *display); - -/* - * Asynchronicity - */ - -/* Print a progress bar of the progress of `progress' */ -void dmnsn_progressbar(const char *str, const dmnsn_progress *progress); -/* Print a progress bar asynchronously, convienently guaranteed to succeed if - it returns so our tests don't get cluttered up */ -dmnsn_progress *dmnsn_progressbar_async(const char *str, - const dmnsn_progress *progress); - -#ifdef __cplusplus -} -#endif - -#endif /* TESTS_H */ diff --git a/tests/tests.hpp b/tests/tests.hpp new file mode 100644 index 0000000..437bd36 --- /dev/null +++ b/tests/tests.hpp @@ -0,0 +1,61 @@ +/************************************************************************* + * Copyright (C) 2009 Tavian Barnes * + * * + * 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 . * + *************************************************************************/ + +#ifndef TESTSXX_HPP +#define TESTSXX_HPP + +#include "../libdimensionxx/dimensionxx.hpp" +#include +#include +#include + +namespace Dimension +{ + namespace Tests + { + // Helper to return a basic scene + Scene default_scene(); + + // Display abstraction + class Display + { + public: + Display(const Canvas& canvas); + ~Display(); + + void flush(); + + private: + ::Display *m_dpy; + Window m_win; + Colormap m_cmap; + GLXContext m_cx; + XEvent m_event; + }; + + Progress progressbar_async(std::ostream& ostr, + const Dimension::Progress& progress); + } + + // Print a progress bar of the progress of `progress' + std::ostream& operator<<(std::ostream& ostr, + const Dimension::Progress& progress); +} + +#endif // TESTSXX_HPP diff --git a/tests/testsxx.cpp b/tests/testsxx.cpp deleted file mode 100644 index fa8c2f0..0000000 --- a/tests/testsxx.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -#include "testsxx.hpp" - -namespace Dimension -{ - namespace Tests - { - Scene - default_scene() - { - // Canvas - Canvas canvas(768, 480); - - // Camera - Perspective_Camera camera; - camera.trans( - Matrix::rotation(Vector(0.0, 1.0, 0.0)) - * Matrix::translation(Vector(0.0, 0.0, -4.0)) - * Matrix::scale( - Vector(static_cast(canvas.width())/canvas.height(), - 1.0, - 1.0) - ) - ); - - // Scene - Scene scene(camera, canvas); - - // Objects in scene - - Sphere sphere; - sphere.trans(inverse(Matrix::scale(Vector(1.25, 1.25, 1.25)))); - scene.objects().push(sphere); - - Cube cube; - cube.trans(inverse(Matrix::rotation(Vector(0.75, 0.0, 0.0)))); - scene.objects().push(cube); - - // Background color - Color background = sRGB(0.0, 0.1, 0.25); - background.filter(0.1); - scene.background(background); - - return scene; - } - - Display::Display(const Canvas& canvas) - : m_display(dmnsn_new_display(canvas.dmnsn())) - { - if (!m_display) { - throw Dimension_Error("Couldn't create display."); - } - } - - Display::~Display() - { - dmnsn_delete_display(m_display); - } - - void - Display::flush() - { - dmnsn_display_flush(m_display); - } - - namespace - { - struct Progressbar_Payload - { - public: - std::ostream* ostr; - const Progress* progress; - }; - - void * - progressbar_thread(void *ptr) - { - Progressbar_Payload* payload - = reinterpret_cast(ptr); - - *payload->ostr << *payload->progress; - - int* ret = static_cast(std::malloc(sizeof(int))); - if (ret) { - *ret = 0; - } - return ret; - } - } - - Progress progressbar_async(std::ostream& ostr, - const Dimension::Progress& progress) - { - dmnsn_progress* barprogress = dmnsn_new_progress(); - if (!barprogress) { - throw Dimension_Error("Couldn't allocate progress object."); - } - - Progressbar_Payload* payload = new Progressbar_Payload; - payload->ostr = &ostr; - payload->progress = &progress; - - /* Create the worker thread */ - if (pthread_create(&barprogress->thread, NULL, &progressbar_thread, - reinterpret_cast(payload)) != 0) - { - throw Dimension_Error("Couldn't create background thread."); - } - - return Progress(barprogress); - } - } - - // Print a progress bar of the progress of `progress' - 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(i + 1)/increments); - ostr << "=" << std::flush; - } - return ostr << "|" << std::flush; - } -} diff --git a/tests/testsxx.hpp b/tests/testsxx.hpp deleted file mode 100644 index e2b654f..0000000 --- a/tests/testsxx.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -#ifndef TESTSXX_HPP -#define TESTSXX_HPP - -#include "tests.h" -#include "../libdimensionxx/dimensionxx.hpp" -#include - -namespace Dimension -{ - namespace Tests - { - // Helper to return a basic scene - Scene default_scene(); - - // Display abstraction - class Display - { - public: - Display(const Canvas& canvas); - ~Display(); - - void flush(); - - private: - dmnsn_display* m_display; - }; - - Progress progressbar_async(std::ostream& ostr, - const Dimension::Progress& progress); - } - - // Print a progress bar of the progress of `progress' - std::ostream& operator<<(std::ostream& ostr, - const Dimension::Progress& progress); -} - -#endif // TESTSXX_HPP diff --git a/tests/warning.c b/tests/warning.c deleted file mode 100644 index 7b6aac3..0000000 --- a/tests/warning.c +++ /dev/null @@ -1,53 +0,0 @@ -/************************************************************************* - * Copyright (C) 2009 Tavian Barnes * - * * - * 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 . * - *************************************************************************/ - -/* Make sure warnings don't kill us - this test should pass */ - -#include "tests.h" -#include - -int -main() -{ - if (dmnsn_get_resilience() != DMNSN_SEVERITY_MEDIUM) { - return EXIT_FAILURE; - } - - dmnsn_set_resilience(DMNSN_SEVERITY_LOW); - if (dmnsn_get_resilience() != DMNSN_SEVERITY_LOW) { - return EXIT_FAILURE; - } - - dmnsn_set_resilience(DMNSN_SEVERITY_MEDIUM); - if (dmnsn_get_resilience() != DMNSN_SEVERITY_MEDIUM) { - return EXIT_FAILURE; - } - - dmnsn_error(DMNSN_SEVERITY_LOW, "This warning is expected."); - - dmnsn_set_resilience(DMNSN_SEVERITY_HIGH); - if (dmnsn_get_resilience() != DMNSN_SEVERITY_HIGH) { - return EXIT_FAILURE; - } - - dmnsn_error(DMNSN_SEVERITY_LOW, "This warning is expected."); - dmnsn_error(DMNSN_SEVERITY_MEDIUM, "This warning is expected."); - - return EXIT_SUCCESS; -} diff --git a/tests/warning.cpp b/tests/warning.cpp new file mode 100644 index 0000000..9d74e9d --- /dev/null +++ b/tests/warning.cpp @@ -0,0 +1,54 @@ +/************************************************************************* + * Copyright (C) 2009 Tavian Barnes * + * * + * 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 . * + *************************************************************************/ + +/* Make sure warnings don't kill us - this test should pass */ + +#include "tests.hpp" + +int +main() +{ + using namespace Dimension; + + if (resilience() != SEVERITY_MEDIUM) { + return EXIT_FAILURE; + } + + resilience(SEVERITY_LOW); + if (resilience() != SEVERITY_LOW) { + return EXIT_FAILURE; + } + + resilience(SEVERITY_MEDIUM); + if (resilience() != SEVERITY_MEDIUM) { + return EXIT_FAILURE; + } + + dmnsn_error(SEVERITY_LOW, "This warning is expected."); + + resilience(SEVERITY_HIGH); + if (resilience() != SEVERITY_HIGH) { + return EXIT_FAILURE; + } + + dmnsn_error(SEVERITY_LOW, "This warning is expected."); + dmnsn_error(SEVERITY_MEDIUM, "This warning is expected."); + + return EXIT_SUCCESS; +} -- cgit v1.2.3