CppUnit is really too large for our needs, would require to be precompiled for many platforms, in all combinations of debug and release modes, with additional variants for libstdc++ versions. We replace it with our own lightweight implementation, LolUnit. Good riddance.legacy
| @@ -10,11 +10,9 @@ set -e | |||||
| PATH="$PATH:./contrib/gtk-2.22.1/bin" | PATH="$PATH:./contrib/gtk-2.22.1/bin" | ||||
| M4PATH="$M4PATH:./contrib/gtk-2.22.1/share/aclocal" | M4PATH="$M4PATH:./contrib/gtk-2.22.1/share/aclocal" | ||||
| M4PATH="$M4PATH:./contrib/cppunit-1.12.2/share/aclocal" | |||||
| export M4PATH # This looks necessary | export M4PATH # This looks necessary | ||||
| PKG_CONFIG_PATH="$PKG_CONFIG_PATH:`pwd`/contrib/gtkglarea-2.0.1/lib/pkgconfig" | PKG_CONFIG_PATH="$PKG_CONFIG_PATH:`pwd`/contrib/gtkglarea-2.0.1/lib/pkgconfig" | ||||
| PKG_CONFIG_PATH="$PKG_CONFIG_PATH:`pwd`/contrib/cppunit-1.12.2/lib/pkgconfig" | |||||
| export PKG_CONFIG_PATH # This looks necessary, too | export PKG_CONFIG_PATH # This looks necessary, too | ||||
| # SDL include path | # SDL include path | ||||
| @@ -36,9 +34,6 @@ CPPFLAGS="$CPPFLAGS -I`pwd`/contrib/gtk-2.22.1/include/gdk-pixbuf-2.0" | |||||
| CPPFLAGS="$CPPFLAGS -I`pwd`/contrib/gtk-2.22.1/include/atk-1.0" | CPPFLAGS="$CPPFLAGS -I`pwd`/contrib/gtk-2.22.1/include/atk-1.0" | ||||
| CPPFLAGS="$CPPFLAGS -I`pwd`/contrib/gtkglarea-2.0.1/include" | CPPFLAGS="$CPPFLAGS -I`pwd`/contrib/gtkglarea-2.0.1/include" | ||||
| # CppUnit include path | |||||
| CPPFLAGS="$CPPFLAGS -I`pwd`/contrib/cppunit-1.12.2/include" | |||||
| # SDL library path | # SDL library path | ||||
| LDFLAGS="$LDFLAGS -L`pwd`/contrib/sdl-1.2.14/lib" | LDFLAGS="$LDFLAGS -L`pwd`/contrib/sdl-1.2.14/lib" | ||||
| LDFLAGS="$LDFLAGS -L`pwd`/contrib/sdl-image-1.2.10/lib" | LDFLAGS="$LDFLAGS -L`pwd`/contrib/sdl-image-1.2.10/lib" | ||||
| @@ -52,9 +47,6 @@ LDFLAGS="$LDFLAGS -L`pwd`/contrib/gtk-2.22.1/lib" | |||||
| LDFLAGS="$LDFLAGS -L`pwd`/contrib/gtk-2.22.1/bin" | LDFLAGS="$LDFLAGS -L`pwd`/contrib/gtk-2.22.1/bin" | ||||
| LDFLAGS="$LDFLAGS -L`pwd`/contrib/gtkglarea-2.0.1/lib" | LDFLAGS="$LDFLAGS -L`pwd`/contrib/gtkglarea-2.0.1/lib" | ||||
| # CppUnit library path | |||||
| LDFLAGS="$LDFLAGS -L`pwd`/contrib/cppunit-1.12.2/lib" | |||||
| # Prevent issues with GTK+ internals | # Prevent issues with GTK+ internals | ||||
| CPPFLAGS="$CPPFLAGS -mms-bitfields" | CPPFLAGS="$CPPFLAGS -mms-bitfields" | ||||
| @@ -14,7 +14,6 @@ | |||||
| windows-i386) | windows-i386) | ||||
| PATH="$''PATH:./contrib/gtk-2.22.1/bin"; | PATH="$''PATH:./contrib/gtk-2.22.1/bin"; | ||||
| M4PATH="$''M4PATH:./contrib/gtk-2.22.1/share/aclocal"; | M4PATH="$''M4PATH:./contrib/gtk-2.22.1/share/aclocal"; | ||||
| M4PATH="$''M4PATH:./contrib/cppunit-1.12.2/share/aclocal"; | |||||
| PATH="$''PATH" M4PATH="$''M4PATH" ./bootstrap; | PATH="$''PATH" M4PATH="$''M4PATH" ./bootstrap; | ||||
| ;; | ;; | ||||
| *) | *) | ||||
| @@ -34,7 +33,6 @@ | |||||
| ;; | ;; | ||||
| windows-i386) | windows-i386) | ||||
| PKG_CONFIG_PATH="$''PKG_CONFIG_PATH:$''PWD/contrib/gtkglarea-2.0.1/lib/pkgconfig"; | PKG_CONFIG_PATH="$''PKG_CONFIG_PATH:$''PWD/contrib/gtkglarea-2.0.1/lib/pkgconfig"; | ||||
| PKG_CONFIG_PATH="$''PKG_CONFIG_PATH:$''PWD/contrib/cppunit-1.12.2/lib/pkgconfig"; | |||||
| CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/sdl-1.2.14/include"; | CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/sdl-1.2.14/include"; | ||||
| CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/sdl-image-1.2.10/include"; | CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/sdl-image-1.2.10/include"; | ||||
| CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/sdl-mixer-1.2.11/include"; | CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/sdl-mixer-1.2.11/include"; | ||||
| @@ -48,7 +46,6 @@ | |||||
| CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/gtk-2.22.1/include/gdk-pixbuf-2.0"; | CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/gtk-2.22.1/include/gdk-pixbuf-2.0"; | ||||
| CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/gtk-2.22.1/include/atk-1.0"; | CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/gtk-2.22.1/include/atk-1.0"; | ||||
| CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/gtkglarea-2.0.1/include"; | CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/gtkglarea-2.0.1/include"; | ||||
| CPPFLAGS="$''CPPFLAGS -I$''PWD/contrib/cppunit-1.12.2/include"; | |||||
| LDFLAGS="$''LDFLAGS -L$''PWD/contrib/sdl-1.2.14/lib"; | LDFLAGS="$''LDFLAGS -L$''PWD/contrib/sdl-1.2.14/lib"; | ||||
| LDFLAGS="$''LDFLAGS -L$''PWD/contrib/sdl-image-1.2.10/lib"; | LDFLAGS="$''LDFLAGS -L$''PWD/contrib/sdl-image-1.2.10/lib"; | ||||
| LDFLAGS="$''LDFLAGS -L$''PWD/contrib/sdl-mixer-1.2.11/lib"; | LDFLAGS="$''LDFLAGS -L$''PWD/contrib/sdl-mixer-1.2.11/lib"; | ||||
| @@ -56,7 +53,6 @@ | |||||
| LDFLAGS="$''LDFLAGS -L$''PWD/contrib/gtk-2.22.1/lib"; | LDFLAGS="$''LDFLAGS -L$''PWD/contrib/gtk-2.22.1/lib"; | ||||
| LDFLAGS="$''LDFLAGS -L$''PWD/contrib/gtk-2.22.1/bin"; | LDFLAGS="$''LDFLAGS -L$''PWD/contrib/gtk-2.22.1/bin"; | ||||
| LDFLAGS="$''LDFLAGS -L$''PWD/contrib/gtkglarea-2.0.1/lib"; | LDFLAGS="$''LDFLAGS -L$''PWD/contrib/gtkglarea-2.0.1/lib"; | ||||
| LDFLAGS="$''LDFLAGS -L$''PWD/contrib/cppunit-1.12.2/lib"; | |||||
| CPPFLAGS="$''CPPFLAGS -mms-bitfields"; | CPPFLAGS="$''CPPFLAGS -mms-bitfields"; | ||||
| LDFLAGS="$''LDFLAGS -static-libgcc -static-libstdc++"; | LDFLAGS="$''LDFLAGS -static-libgcc -static-libstdc++"; | ||||
| GTK_LIBS="$''GTK_LIBS -lgtkgl-2.0 -lopengl32 -lglew32 -lgdi32"; | GTK_LIBS="$''GTK_LIBS -lgtkgl-2.0 -lopengl32 -lglew32 -lgdi32"; | ||||
| @@ -46,9 +46,6 @@ AC_ARG_ENABLE(release, | |||||
| AC_ARG_ENABLE(experimental, | AC_ARG_ENABLE(experimental, | ||||
| [ --enable-experimental experimental build (default no)]) | [ --enable-experimental experimental build (default no)]) | ||||
| AC_ARG_ENABLE(cppunit, | |||||
| [ --enable-cppunit use cppunit for unit tests (autodetected)]) | |||||
| AC_CHECK_HEADERS(stdio.h stdarg.h inttypes.h endian.h stdint.h getopt.h fastmath.h) | AC_CHECK_HEADERS(stdio.h stdarg.h inttypes.h endian.h stdint.h getopt.h fastmath.h) | ||||
| if test "${enable_debug}" = "yes"; then | if test "${enable_debug}" = "yes"; then | ||||
| @@ -242,11 +239,6 @@ fi | |||||
| AM_CONDITIONAL(USE_GTKGL, test "${ac_cv_my_have_gtkgl}" != "no") | AM_CONDITIONAL(USE_GTKGL, test "${ac_cv_my_have_gtkgl}" != "no") | ||||
| dnl Use cppunit for unit tests? | |||||
| PKG_CHECK_MODULES(CPPUNIT, cppunit, [CPPUNIT="yes"], [CPPUNIT="no"]) | |||||
| AM_CONDITIONAL(USE_CPPUNIT, test "$CPPUNIT" = "yes") | |||||
| dnl How to use the Lol Engine inside this tree | dnl How to use the Lol Engine inside this tree | ||||
| LOL_CFLAGS="$LOL_CFLAGS -I \$(top_srcdir)/src" | LOL_CFLAGS="$LOL_CFLAGS -I \$(top_srcdir)/src" | ||||
| LOL_CFLAGS="$LOL_CFLAGS $SDL_CFLAGS $GL_CFLAGS $EGL_CFLAGS $LIBPNG_CFLAGS" | LOL_CFLAGS="$LOL_CFLAGS $SDL_CFLAGS $GL_CFLAGS $EGL_CFLAGS $LIBPNG_CFLAGS" | ||||
| @@ -12,6 +12,8 @@ liblol_a_SOURCES = \ | |||||
| worldentity.cpp worldentity.h gradient.cpp gradient.h half.cpp half.h \ | worldentity.cpp worldentity.h gradient.cpp gradient.h half.cpp half.h \ | ||||
| platform.cpp platform.h sprite.cpp sprite.h trig.cpp trig.h \ | platform.cpp platform.h sprite.cpp sprite.h trig.cpp trig.h \ | ||||
| \ | \ | ||||
| lol/unit.h \ | |||||
| \ | |||||
| eglapp.cpp eglapp.h \ | eglapp.cpp eglapp.h \ | ||||
| \ | \ | ||||
| platform/sdl/sdlapp.cpp platform/sdl/sdlapp.h \ | platform/sdl/sdlapp.cpp platform/sdl/sdlapp.h \ | ||||
| @@ -0,0 +1,182 @@ | |||||
| // | |||||
| // Lol Engine | |||||
| // | |||||
| // Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net> | |||||
| // This program is free software; you can redistribute it and/or | |||||
| // modify it under the terms of the Do What The Fuck You Want To | |||||
| // Public License, Version 2, as published by Sam Hocevar. See | |||||
| // http://sam.zoy.org/projects/COPYING.WTFPL for more details. | |||||
| // | |||||
| // | |||||
| // The Unit test framework | |||||
| // ----------------------- | |||||
| // | |||||
| #if !defined __LOL_UNIT_H__ | |||||
| #define __LOL_UNIT_H__ | |||||
| #include <iostream> | |||||
| #include <cstdio> | |||||
| #include <cmath> | |||||
| namespace lol | |||||
| { | |||||
| using namespace std; | |||||
| class FixtureBase | |||||
| { | |||||
| friend class TestRunner; | |||||
| public: | |||||
| virtual void setUp(void) {}; | |||||
| virtual void tearDown(void) {}; | |||||
| protected: | |||||
| FixtureBase() : m_next(NULL), m_tests(0), m_fails(0) {} | |||||
| virtual ~FixtureBase() {} | |||||
| /* The FixtureBase class keeps track of all instanciated children | |||||
| * fixtures through this method. */ | |||||
| static FixtureBase *GetOrSetTest(FixtureBase *set = NULL) | |||||
| { | |||||
| static FixtureBase *head = NULL, *tail = NULL; | |||||
| if (set) | |||||
| { | |||||
| if (!head) | |||||
| head = set; | |||||
| if (tail) | |||||
| tail->m_next = set; | |||||
| tail = set; | |||||
| } | |||||
| return head; | |||||
| } | |||||
| virtual int RunFixture() = 0; | |||||
| /* Prevent compiler complaints about unreachable code */ | |||||
| static inline bool True() { return true; } | |||||
| FixtureBase *m_next; | |||||
| int m_tests, m_fails; | |||||
| }; | |||||
| template<class T> class Fixture : protected FixtureBase | |||||
| { | |||||
| public: | |||||
| typedef T FixtureClass; | |||||
| class TestCase | |||||
| { | |||||
| public: | |||||
| void (FixtureClass::* m_fun)(); | |||||
| char const *m_name; | |||||
| TestCase *m_next; | |||||
| static void AddTestCase(TestCase *that, char const *name, | |||||
| void (FixtureClass::*fun)()) | |||||
| { | |||||
| that->m_name = name; | |||||
| that->m_fun = fun; | |||||
| GetOrSetTestCase(that); | |||||
| } | |||||
| }; | |||||
| Fixture<T>() | |||||
| { | |||||
| GetOrSetTest(this); | |||||
| } | |||||
| /* Run all test cases in this fixture. */ | |||||
| virtual int RunFixture() | |||||
| { | |||||
| for (TestCase *head = GetOrSetTestCase(); head; head = head->m_next) | |||||
| { | |||||
| (static_cast<FixtureClass *>(this)->*head->m_fun)(); | |||||
| std::cout << "."; | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| /* Each Fixture class specialisation keeps track of its instanciated | |||||
| * test cases through this method. */ | |||||
| static TestCase *GetOrSetTestCase(TestCase *set = NULL) | |||||
| { | |||||
| static TestCase *head = NULL, *tail = NULL; | |||||
| if (set) | |||||
| { | |||||
| if (!head) head = set; | |||||
| if (tail) tail->m_next = set; | |||||
| tail = set; | |||||
| } | |||||
| return head; | |||||
| } | |||||
| }; | |||||
| class TestRunner | |||||
| { | |||||
| public: | |||||
| int Run() | |||||
| { | |||||
| int ret = 0; | |||||
| for (FixtureBase *head = FixtureBase::GetOrSetTest(); head; head = head->m_next) | |||||
| { | |||||
| head->setUp(); | |||||
| if (head->RunFixture()) | |||||
| ret = 1; | |||||
| head->tearDown(); | |||||
| } | |||||
| std::cout << std::endl; | |||||
| return ret; | |||||
| } | |||||
| }; | |||||
| #define LOLUNIT_FIXTURE(FixtureName) \ | |||||
| class FixtureName : public lol::Fixture<FixtureName> | |||||
| #define LOLUNIT_TEST(TestCaseName) \ | |||||
| class TestCase##TestCaseName : public TestCase \ | |||||
| { \ | |||||
| public: \ | |||||
| TestCase##TestCaseName() \ | |||||
| { \ | |||||
| AddTestCase(this, #TestCaseName, \ | |||||
| (void (FixtureClass::*)()) &FixtureClass::TestCaseName); \ | |||||
| } \ | |||||
| }; \ | |||||
| TestCase##TestCaseName test_case_##TestCaseName; \ | |||||
| void TestCaseName() | |||||
| #define LOLUNIT_SETUP_FIXTURE(ClassName) \ | |||||
| ClassName ClassName##Test_Instance; | |||||
| #define LOLUNIT_ASSERT(cond) \ | |||||
| do { if (True() && !(cond)) \ | |||||
| { \ | |||||
| std::cout << "FAIL! " #cond << std::endl; \ | |||||
| return; \ | |||||
| } } while(!True()) | |||||
| #define LOLUNIT_ASSERT_EQUAL(a, b) \ | |||||
| do { if (True() && (a) != (b)) \ | |||||
| { \ | |||||
| std::cout << "FAIL! " #a " != " #b << std::endl; \ | |||||
| std::cout << "expected: " << (a) << std::endl; \ | |||||
| std::cout << "returned: " << (b) << std::endl; \ | |||||
| return; \ | |||||
| } } while(!True()) | |||||
| #define LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, t) \ | |||||
| do { if (True() && fabs((a) - (b)) > fabs((t))) \ | |||||
| { \ | |||||
| std::cout << "FAIL! " #a " != " #b << std::endl; \ | |||||
| std::cout << "expected: " << (a) << std::endl; \ | |||||
| std::cout << "returned: " << (b) << std::endl; \ | |||||
| return; \ | |||||
| } } while(!True()) | |||||
| } /* namespace lol */ | |||||
| #endif // __LOL_UNIT_H__ | |||||
| @@ -1,10 +1,6 @@ | |||||
| AM_CPPFLAGS = -I$(top_srcdir)/src | AM_CPPFLAGS = -I$(top_srcdir)/src | ||||
| if USE_CPPUNIT | |||||
| cppunit_tests = lol-test | |||||
| endif | |||||
| bench: lol-bench$(EXEEXT) | bench: lol-bench$(EXEEXT) | ||||
| ./lol-bench$(EXEEXT) | ./lol-bench$(EXEEXT) | ||||
| @@ -12,17 +8,16 @@ all-local: quad$(EXEEXT) lol-bench$(EXEEXT) | |||||
| test x$(MAKE_FSELF) = xno || make_fself quad$(EXEEXT) quad.self | test x$(MAKE_FSELF) = xno || make_fself quad$(EXEEXT) quad.self | ||||
| test x$(MAKE_FSELF) = xno || make_fself sandbox$(EXEEXT) sandbox.self | test x$(MAKE_FSELF) = xno || make_fself sandbox$(EXEEXT) sandbox.self | ||||
| test x$(MAKE_FSELF) = xno || make_fself lol-bench$(EXEEXT) lol-bench.self | test x$(MAKE_FSELF) = xno || make_fself lol-bench$(EXEEXT) lol-bench.self | ||||
| test x$(MAKE_FSELF) = xno || make_fself lol-test$(EXEEXT) lol-test.self | |||||
| CLEANFILES = quad.self sandbox lol-bench.self | |||||
| CLEANFILES = quad.self sandbox lol-bench.self lol-test.self | |||||
| noinst_PROGRAMS = quad sandbox lol-bench $(cppunit_tests) | |||||
| noinst_PROGRAMS = quad sandbox lol-bench lol-test | |||||
| TESTS = $(cppunit_tests) | |||||
| TESTS = lol-test | |||||
| lol_test_SOURCES = lol-test.cpp matrix.cpp half.cpp trig.cpp | lol_test_SOURCES = lol-test.cpp matrix.cpp half.cpp trig.cpp | ||||
| lol_test_CXXFLAGS = $(CPPUNIT_CFLAGS) | |||||
| lol_test_CPPFLAGS = @LOL_CFLAGS@ @PIPI_CFLAGS@ | lol_test_CPPFLAGS = @LOL_CFLAGS@ @PIPI_CFLAGS@ | ||||
| lol_test_LDADD = $(CPPUNIT_LIBS) | |||||
| lol_test_LDFLAGS = $(top_builddir)/src/liblol.a @LOL_LIBS@ @PIPI_LIBS@ | lol_test_LDFLAGS = $(top_builddir)/src/liblol.a @LOL_LIBS@ @PIPI_LIBS@ | ||||
| lol_test_DEPENDENCIES = $(top_builddir)/src/liblol.a | lol_test_DEPENDENCIES = $(top_builddir)/src/liblol.a | ||||
| @@ -12,14 +12,10 @@ | |||||
| # include "config.h" | # include "config.h" | ||||
| #endif | #endif | ||||
| #include <cppunit/extensions/HelperMacros.h> | |||||
| #include <cppunit/TestCaller.h> | |||||
| #include <cppunit/TestCase.h> | |||||
| #include <cppunit/TestSuite.h> | |||||
| #include <cmath> | #include <cmath> | ||||
| #include "core.h" | #include "core.h" | ||||
| #include "lol/unit.h" | |||||
| /* Ensure isnan() is present even on systems that don't define it, or | /* Ensure isnan() is present even on systems that don't define it, or | ||||
| * when -ffast-math is being used. */ | * when -ffast-math is being used. */ | ||||
| @@ -37,159 +33,139 @@ static inline int isnan(float f) | |||||
| namespace lol | namespace lol | ||||
| { | { | ||||
| class HalfTest : public CppUnit::TestCase | |||||
| LOLUNIT_FIXTURE(HalfTest) | |||||
| { | { | ||||
| CPPUNIT_TEST_SUITE(HalfTest); | |||||
| CPPUNIT_TEST(test_half_from_float); | |||||
| CPPUNIT_TEST(test_half_makeaccurate); | |||||
| CPPUNIT_TEST(test_half_makebits); | |||||
| CPPUNIT_TEST(test_half_is_nan); | |||||
| CPPUNIT_TEST(test_half_is_inf); | |||||
| CPPUNIT_TEST(test_half_is_finite); | |||||
| CPPUNIT_TEST(test_half_is_normal); | |||||
| CPPUNIT_TEST(test_half_classify); | |||||
| CPPUNIT_TEST(test_half_to_float); | |||||
| CPPUNIT_TEST(test_half_to_int); | |||||
| CPPUNIT_TEST(test_float_op_half); | |||||
| CPPUNIT_TEST(test_half_op_float); | |||||
| CPPUNIT_TEST_SUITE_END(); | |||||
| public: | public: | ||||
| HalfTest() : CppUnit::TestCase("Matrix Test") {} | |||||
| void setUp() | |||||
| { | |||||
| } | |||||
| void setUp() {} | |||||
| void tearDown() {} | void tearDown() {} | ||||
| void test_half_from_float() | |||||
| LOLUNIT_TEST(test_half_from_float) | |||||
| { | { | ||||
| for (size_t i = 0; i < sizeof(pairs) / sizeof(*pairs); i++) | for (size_t i = 0; i < sizeof(pairs) / sizeof(*pairs); i++) | ||||
| { | { | ||||
| half a = (half)pairs[i].f; | half a = (half)pairs[i].f; | ||||
| uint16_t b = pairs[i].x; | uint16_t b = pairs[i].x; | ||||
| CPPUNIT_ASSERT_EQUAL(a.bits, b); | |||||
| LOLUNIT_ASSERT_EQUAL(a.bits, b); | |||||
| } | } | ||||
| } | } | ||||
| void test_half_makeaccurate() | |||||
| LOLUNIT_TEST(test_half_makeaccurate) | |||||
| { | { | ||||
| for (size_t i = 0; i < sizeof(pairs) / sizeof(*pairs); i++) | for (size_t i = 0; i < sizeof(pairs) / sizeof(*pairs); i++) | ||||
| { | { | ||||
| half a = half::makeaccurate(pairs[i].f); | half a = half::makeaccurate(pairs[i].f); | ||||
| uint16_t b = pairs[i].x; | uint16_t b = pairs[i].x; | ||||
| CPPUNIT_ASSERT_EQUAL(a.bits, b); | |||||
| LOLUNIT_ASSERT_EQUAL(a.bits, b); | |||||
| } | } | ||||
| } | } | ||||
| void test_half_makebits() | |||||
| LOLUNIT_TEST(test_half_makebits) | |||||
| { | { | ||||
| for (unsigned int i = 0; i < 0x10000; i++) | for (unsigned int i = 0; i < 0x10000; i++) | ||||
| { | { | ||||
| half a = half::makebits(i); | half a = half::makebits(i); | ||||
| uint16_t b = i; | uint16_t b = i; | ||||
| CPPUNIT_ASSERT_EQUAL(a.bits, b); | |||||
| LOLUNIT_ASSERT_EQUAL(a.bits, b); | |||||
| } | } | ||||
| } | } | ||||
| void test_half_is_nan() | |||||
| LOLUNIT_TEST(test_half_is_nan) | |||||
| { | { | ||||
| CPPUNIT_ASSERT(half::makebits(0x7c01).is_nan()); | |||||
| CPPUNIT_ASSERT(half::makebits(0xfc01).is_nan()); | |||||
| CPPUNIT_ASSERT(half::makebits(0x7e00).is_nan()); | |||||
| CPPUNIT_ASSERT(half::makebits(0xfe00).is_nan()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0x7c00).is_nan()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0xfc00).is_nan()); | |||||
| CPPUNIT_ASSERT(!half(0.0f).is_nan()); | |||||
| CPPUNIT_ASSERT(!half(-0.0f).is_nan()); | |||||
| CPPUNIT_ASSERT(!half(2.0f).is_nan()); | |||||
| CPPUNIT_ASSERT(!half(-2.0f).is_nan()); | |||||
| LOLUNIT_ASSERT(half::makebits(0x7c01).is_nan()); | |||||
| LOLUNIT_ASSERT(half::makebits(0xfc01).is_nan()); | |||||
| LOLUNIT_ASSERT(half::makebits(0x7e00).is_nan()); | |||||
| LOLUNIT_ASSERT(half::makebits(0xfe00).is_nan()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0x7c00).is_nan()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0xfc00).is_nan()); | |||||
| LOLUNIT_ASSERT(!half(0.0f).is_nan()); | |||||
| LOLUNIT_ASSERT(!half(-0.0f).is_nan()); | |||||
| LOLUNIT_ASSERT(!half(2.0f).is_nan()); | |||||
| LOLUNIT_ASSERT(!half(-2.0f).is_nan()); | |||||
| } | } | ||||
| void test_half_is_inf() | |||||
| LOLUNIT_TEST(test_half_is_inf) | |||||
| { | { | ||||
| CPPUNIT_ASSERT(half(65536.0f).is_inf()); | |||||
| CPPUNIT_ASSERT(half(-65536.0f).is_inf()); | |||||
| LOLUNIT_ASSERT(half(65536.0f).is_inf()); | |||||
| LOLUNIT_ASSERT(half(-65536.0f).is_inf()); | |||||
| CPPUNIT_ASSERT(!half(0.0f).is_inf()); | |||||
| CPPUNIT_ASSERT(!half(-0.0f).is_inf()); | |||||
| CPPUNIT_ASSERT(!half(65535.0f).is_inf()); | |||||
| CPPUNIT_ASSERT(!half(-65535.0f).is_inf()); | |||||
| LOLUNIT_ASSERT(!half(0.0f).is_inf()); | |||||
| LOLUNIT_ASSERT(!half(-0.0f).is_inf()); | |||||
| LOLUNIT_ASSERT(!half(65535.0f).is_inf()); | |||||
| LOLUNIT_ASSERT(!half(-65535.0f).is_inf()); | |||||
| CPPUNIT_ASSERT(half::makebits(0x7c00).is_inf()); | |||||
| CPPUNIT_ASSERT(half::makebits(0xfc00).is_inf()); | |||||
| LOLUNIT_ASSERT(half::makebits(0x7c00).is_inf()); | |||||
| LOLUNIT_ASSERT(half::makebits(0xfc00).is_inf()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0x7e00).is_inf()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0xfe00).is_inf()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0x7e00).is_inf()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0xfe00).is_inf()); | |||||
| } | } | ||||
| void test_half_is_finite() | |||||
| LOLUNIT_TEST(test_half_is_finite) | |||||
| { | { | ||||
| CPPUNIT_ASSERT(half(0.0f).is_finite()); | |||||
| CPPUNIT_ASSERT(half(-0.0f).is_finite()); | |||||
| CPPUNIT_ASSERT(half(65535.0f).is_finite()); | |||||
| CPPUNIT_ASSERT(half(-65535.0f).is_finite()); | |||||
| LOLUNIT_ASSERT(half(0.0f).is_finite()); | |||||
| LOLUNIT_ASSERT(half(-0.0f).is_finite()); | |||||
| LOLUNIT_ASSERT(half(65535.0f).is_finite()); | |||||
| LOLUNIT_ASSERT(half(-65535.0f).is_finite()); | |||||
| CPPUNIT_ASSERT(!half(65536.0f).is_finite()); | |||||
| CPPUNIT_ASSERT(!half(-65536.0f).is_finite()); | |||||
| LOLUNIT_ASSERT(!half(65536.0f).is_finite()); | |||||
| LOLUNIT_ASSERT(!half(-65536.0f).is_finite()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0x7c00).is_finite()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0xfc00).is_finite()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0x7c00).is_finite()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0xfc00).is_finite()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0x7e00).is_finite()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0xfe00).is_finite()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0x7e00).is_finite()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0xfe00).is_finite()); | |||||
| } | } | ||||
| void test_half_is_normal() | |||||
| LOLUNIT_TEST(test_half_is_normal) | |||||
| { | { | ||||
| CPPUNIT_ASSERT(half(0.0f).is_normal()); | |||||
| CPPUNIT_ASSERT(half(-0.0f).is_normal()); | |||||
| CPPUNIT_ASSERT(half(65535.0f).is_normal()); | |||||
| CPPUNIT_ASSERT(half(-65535.0f).is_normal()); | |||||
| LOLUNIT_ASSERT(half(0.0f).is_normal()); | |||||
| LOLUNIT_ASSERT(half(-0.0f).is_normal()); | |||||
| LOLUNIT_ASSERT(half(65535.0f).is_normal()); | |||||
| LOLUNIT_ASSERT(half(-65535.0f).is_normal()); | |||||
| CPPUNIT_ASSERT(!half(65536.0f).is_normal()); | |||||
| CPPUNIT_ASSERT(!half(-65536.0f).is_normal()); | |||||
| LOLUNIT_ASSERT(!half(65536.0f).is_normal()); | |||||
| LOLUNIT_ASSERT(!half(-65536.0f).is_normal()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0x7c00).is_normal()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0xfc00).is_normal()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0x7c00).is_normal()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0xfc00).is_normal()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0x7e00).is_normal()); | |||||
| CPPUNIT_ASSERT(!half::makebits(0xfe00).is_normal()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0x7e00).is_normal()); | |||||
| LOLUNIT_ASSERT(!half::makebits(0xfe00).is_normal()); | |||||
| } | } | ||||
| void test_half_classify() | |||||
| LOLUNIT_TEST(test_half_classify) | |||||
| { | { | ||||
| for (uint32_t i = 0; i < 0x10000; i++) | for (uint32_t i = 0; i < 0x10000; i++) | ||||
| { | { | ||||
| half h = half::makebits(i); | half h = half::makebits(i); | ||||
| if (h.is_nan()) | if (h.is_nan()) | ||||
| { | { | ||||
| CPPUNIT_ASSERT(!h.is_inf()); | |||||
| CPPUNIT_ASSERT(!h.is_normal()); | |||||
| CPPUNIT_ASSERT(!h.is_finite()); | |||||
| LOLUNIT_ASSERT(!h.is_inf()); | |||||
| LOLUNIT_ASSERT(!h.is_normal()); | |||||
| LOLUNIT_ASSERT(!h.is_finite()); | |||||
| } | } | ||||
| else if (h.is_inf()) | else if (h.is_inf()) | ||||
| { | { | ||||
| CPPUNIT_ASSERT(!h.is_normal()); | |||||
| CPPUNIT_ASSERT(!h.is_finite()); | |||||
| LOLUNIT_ASSERT(!h.is_normal()); | |||||
| LOLUNIT_ASSERT(!h.is_finite()); | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| CPPUNIT_ASSERT(h.is_finite()); | |||||
| LOLUNIT_ASSERT(h.is_finite()); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void test_half_to_float() | |||||
| LOLUNIT_TEST(test_half_to_float) | |||||
| { | { | ||||
| for (size_t i = 0; i < sizeof(pairs) / sizeof(*pairs); i++) | for (size_t i = 0; i < sizeof(pairs) / sizeof(*pairs); i++) | ||||
| { | { | ||||
| float a = (float)half::makebits(pairs[i].x); | float a = (float)half::makebits(pairs[i].x); | ||||
| float b = pairs[i].f; | float b = pairs[i].f; | ||||
| CPPUNIT_ASSERT_EQUAL(a, b); | |||||
| LOLUNIT_ASSERT_EQUAL(a, b); | |||||
| } | } | ||||
| for (uint32_t i = 0; i < 0x10000; i++) | for (uint32_t i = 0; i < 0x10000; i++) | ||||
| @@ -199,73 +175,73 @@ public: | |||||
| half g = (half)f; | half g = (half)f; | ||||
| if (h.is_nan()) | if (h.is_nan()) | ||||
| { | { | ||||
| CPPUNIT_ASSERT(isnan(f)); | |||||
| CPPUNIT_ASSERT(g.is_nan()); | |||||
| LOLUNIT_ASSERT(isnan(f)); | |||||
| LOLUNIT_ASSERT(g.is_nan()); | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| CPPUNIT_ASSERT(!isnan(f)); | |||||
| CPPUNIT_ASSERT_EQUAL(g.bits, h.bits); | |||||
| LOLUNIT_ASSERT(!isnan(f)); | |||||
| LOLUNIT_ASSERT_EQUAL(g.bits, h.bits); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void test_half_to_int() | |||||
| LOLUNIT_TEST(test_half_to_int) | |||||
| { | { | ||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(0.0f), 0); | |||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(-0.0f), 0); | |||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(0.9f), 0); | |||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(-0.9f), 0); | |||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(1.0f), 1); | |||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(-1.0f), -1); | |||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(1.9f), 1); | |||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(-1.9f), -1); | |||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(65504.0f), 65504); | |||||
| CPPUNIT_ASSERT_EQUAL((int)(half)(-65504.0f), -65504); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(0.0f), 0); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(-0.0f), 0); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(0.9f), 0); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(-0.9f), 0); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(1.0f), 1); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(-1.0f), -1); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(1.9f), 1); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(-1.9f), -1); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(65504.0f), 65504); | |||||
| LOLUNIT_ASSERT_EQUAL((int)(half)(-65504.0f), -65504); | |||||
| } | } | ||||
| void test_float_op_half() | |||||
| LOLUNIT_TEST(test_float_op_half) | |||||
| { | { | ||||
| half zero = 0; | half zero = 0; | ||||
| half one = 1; | half one = 1; | ||||
| half two = 2; | half two = 2; | ||||
| float a = zero + one; | float a = zero + one; | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| a += zero; | a += zero; | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| a -= zero; | a -= zero; | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| a *= one; | a *= one; | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| a /= one; | a /= one; | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, a); | |||||
| float b = one + zero; | float b = one + zero; | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, b); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, b); | |||||
| b += one; | b += one; | ||||
| CPPUNIT_ASSERT_EQUAL(2.0f, b); | |||||
| LOLUNIT_ASSERT_EQUAL(2.0f, b); | |||||
| b *= two; | b *= two; | ||||
| CPPUNIT_ASSERT_EQUAL(4.0f, b); | |||||
| LOLUNIT_ASSERT_EQUAL(4.0f, b); | |||||
| b -= two; | b -= two; | ||||
| CPPUNIT_ASSERT_EQUAL(2.0f, b); | |||||
| LOLUNIT_ASSERT_EQUAL(2.0f, b); | |||||
| b /= two; | b /= two; | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, b); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, b); | |||||
| float c = one - zero; | float c = one - zero; | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, c); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, c); | |||||
| float d = two - one; | float d = two - one; | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, d); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, d); | |||||
| float e = two + (-one); | float e = two + (-one); | ||||
| CPPUNIT_ASSERT_EQUAL(1.0f, e); | |||||
| LOLUNIT_ASSERT_EQUAL(1.0f, e); | |||||
| float f = (two * two) / (one + one); | float f = (two * two) / (one + one); | ||||
| CPPUNIT_ASSERT_EQUAL(2.0f, f); | |||||
| LOLUNIT_ASSERT_EQUAL(2.0f, f); | |||||
| } | } | ||||
| void test_half_op_float() | |||||
| LOLUNIT_TEST(test_half_op_float) | |||||
| { | { | ||||
| half zero = 0; | half zero = 0; | ||||
| half one = 1; | half one = 1; | ||||
| @@ -273,38 +249,38 @@ public: | |||||
| half four = 4; | half four = 4; | ||||
| half a = one + 0.0f; | half a = one + 0.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| a += 0.0f; | a += 0.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| a -= 0.0f; | a -= 0.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| a *= 1.0f; | a *= 1.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| a /= 1.0f; | a /= 1.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, a.bits); | |||||
| half b = one + 0.0f; | half b = one + 0.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, b.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, b.bits); | |||||
| b += 1.0f; | b += 1.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(two.bits, b.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(two.bits, b.bits); | |||||
| b *= 2.0f; | b *= 2.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(four.bits, b.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(four.bits, b.bits); | |||||
| b -= 2.0f; | b -= 2.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(two.bits, b.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(two.bits, b.bits); | |||||
| b /= 2.0f; | b /= 2.0f; | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, b.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, b.bits); | |||||
| half c = 1.0f - zero; | half c = 1.0f - zero; | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, c.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, c.bits); | |||||
| half d = 2.0f - one; | half d = 2.0f - one; | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, d.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, d.bits); | |||||
| half e = 2.0f + (-one); | half e = 2.0f + (-one); | ||||
| CPPUNIT_ASSERT_EQUAL(one.bits, e.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(one.bits, e.bits); | |||||
| half f = (2.0f * two) / (1.0f + one); | half f = (2.0f * two) / (1.0f + one); | ||||
| CPPUNIT_ASSERT_EQUAL(two.bits, f.bits); | |||||
| LOLUNIT_ASSERT_EQUAL(two.bits, f.bits); | |||||
| } | } | ||||
| private: | private: | ||||
| @@ -329,7 +305,7 @@ HalfTest::TestPair const HalfTest::pairs[] = | |||||
| { 31.0f / (1 << 19), 0x03e0 }, /* 0x1.fp-15, denormal */ | { 31.0f / (1 << 19), 0x03e0 }, /* 0x1.fp-15, denormal */ | ||||
| }; | }; | ||||
| CPPUNIT_TEST_SUITE_REGISTRATION(HalfTest); | |||||
| LOLUNIT_SETUP_FIXTURE(HalfTest); | |||||
| } /* namespace lol */ | } /* namespace lol */ | ||||
| @@ -14,19 +14,12 @@ | |||||
| #include <cstdio> | #include <cstdio> | ||||
| #include <cppunit/TextTestRunner.h> | |||||
| #include <cppunit/extensions/TestFactoryRegistry.h> | |||||
| #include <lol/unit.h> | |||||
| int main(int argc, char *argv[]) | |||||
| int main(void) | |||||
| { | { | ||||
| CppUnit::TextTestRunner runner; | |||||
| runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); | |||||
| int ret = !runner.run(); | |||||
| #if defined _WIN32 | |||||
| getchar(); | |||||
| #endif | |||||
| lol::TestRunner runner; | |||||
| int ret = !runner.Run(); | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| @@ -12,31 +12,15 @@ | |||||
| # include "config.h" | # include "config.h" | ||||
| #endif | #endif | ||||
| #include <cppunit/extensions/HelperMacros.h> | |||||
| #include <cppunit/TestCaller.h> | |||||
| #include <cppunit/TestCase.h> | |||||
| #include <cppunit/TestSuite.h> | |||||
| #include "core.h" | #include "core.h" | ||||
| #include "lol/unit.h" | |||||
| namespace lol | namespace lol | ||||
| { | { | ||||
| class MatrixTest : public CppUnit::TestCase | |||||
| LOLUNIT_FIXTURE(MatrixTest) | |||||
| { | { | ||||
| CPPUNIT_TEST_SUITE(MatrixTest); | |||||
| CPPUNIT_TEST(test_vec_eq); | |||||
| CPPUNIT_TEST(test_vec_lt); | |||||
| CPPUNIT_TEST(test_vec_unary); | |||||
| CPPUNIT_TEST(test_vec_cast); | |||||
| CPPUNIT_TEST(test_mat_det); | |||||
| CPPUNIT_TEST(test_mat_mul); | |||||
| CPPUNIT_TEST(test_mat_inv); | |||||
| CPPUNIT_TEST_SUITE_END(); | |||||
| public: | public: | ||||
| MatrixTest() : CppUnit::TestCase("Matrix Test") {} | |||||
| void setUp() | void setUp() | ||||
| { | { | ||||
| identity = mat4(1.0f); | identity = mat4(1.0f); | ||||
| @@ -52,34 +36,34 @@ public: | |||||
| void tearDown() {} | void tearDown() {} | ||||
| void test_vec_eq() | |||||
| LOLUNIT_TEST(test_vec_eq) | |||||
| { | { | ||||
| vec2 a2(1.0f, 2.0f); | vec2 a2(1.0f, 2.0f); | ||||
| vec2 b2(0.0f, 2.0f); | vec2 b2(0.0f, 2.0f); | ||||
| vec2 c2(1.0f, 0.0f); | vec2 c2(1.0f, 0.0f); | ||||
| CPPUNIT_ASSERT(a2 == a2); | |||||
| CPPUNIT_ASSERT(!(a2 != a2)); | |||||
| LOLUNIT_ASSERT(a2 == a2); | |||||
| LOLUNIT_ASSERT(!(a2 != a2)); | |||||
| CPPUNIT_ASSERT(a2 != b2); | |||||
| CPPUNIT_ASSERT(!(a2 == b2)); | |||||
| CPPUNIT_ASSERT(a2 != c2); | |||||
| CPPUNIT_ASSERT(!(a2 == c2)); | |||||
| LOLUNIT_ASSERT(a2 != b2); | |||||
| LOLUNIT_ASSERT(!(a2 == b2)); | |||||
| LOLUNIT_ASSERT(a2 != c2); | |||||
| LOLUNIT_ASSERT(!(a2 == c2)); | |||||
| vec3 a3(1.0f, 2.0f, 3.0f); | vec3 a3(1.0f, 2.0f, 3.0f); | ||||
| vec3 b3(0.0f, 2.0f, 3.0f); | vec3 b3(0.0f, 2.0f, 3.0f); | ||||
| vec3 c3(1.0f, 0.0f, 3.0f); | vec3 c3(1.0f, 0.0f, 3.0f); | ||||
| vec3 d3(1.0f, 2.0f, 0.0f); | vec3 d3(1.0f, 2.0f, 0.0f); | ||||
| CPPUNIT_ASSERT(a3 == a3); | |||||
| CPPUNIT_ASSERT(!(a3 != a3)); | |||||
| LOLUNIT_ASSERT(a3 == a3); | |||||
| LOLUNIT_ASSERT(!(a3 != a3)); | |||||
| CPPUNIT_ASSERT(a3 != b3); | |||||
| CPPUNIT_ASSERT(!(a3 == b3)); | |||||
| CPPUNIT_ASSERT(a3 != c3); | |||||
| CPPUNIT_ASSERT(!(a3 == c3)); | |||||
| CPPUNIT_ASSERT(a3 != d3); | |||||
| CPPUNIT_ASSERT(!(a3 == d3)); | |||||
| LOLUNIT_ASSERT(a3 != b3); | |||||
| LOLUNIT_ASSERT(!(a3 == b3)); | |||||
| LOLUNIT_ASSERT(a3 != c3); | |||||
| LOLUNIT_ASSERT(!(a3 == c3)); | |||||
| LOLUNIT_ASSERT(a3 != d3); | |||||
| LOLUNIT_ASSERT(!(a3 == d3)); | |||||
| vec4 a4(1.0f, 2.0f, 3.0f, 4.0f); | vec4 a4(1.0f, 2.0f, 3.0f, 4.0f); | ||||
| vec4 b4(0.0f, 2.0f, 3.0f, 4.0f); | vec4 b4(0.0f, 2.0f, 3.0f, 4.0f); | ||||
| @@ -87,20 +71,20 @@ public: | |||||
| vec4 d4(1.0f, 2.0f, 0.0f, 4.0f); | vec4 d4(1.0f, 2.0f, 0.0f, 4.0f); | ||||
| vec4 e4(1.0f, 2.0f, 3.0f, 0.0f); | vec4 e4(1.0f, 2.0f, 3.0f, 0.0f); | ||||
| CPPUNIT_ASSERT(a4 == a4); | |||||
| CPPUNIT_ASSERT(!(a4 != a4)); | |||||
| CPPUNIT_ASSERT(a4 != b4); | |||||
| CPPUNIT_ASSERT(!(a4 == b4)); | |||||
| CPPUNIT_ASSERT(a4 != c4); | |||||
| CPPUNIT_ASSERT(!(a4 == c4)); | |||||
| CPPUNIT_ASSERT(a4 != d4); | |||||
| CPPUNIT_ASSERT(!(a4 == d4)); | |||||
| CPPUNIT_ASSERT(a4 != e4); | |||||
| CPPUNIT_ASSERT(!(a4 == e4)); | |||||
| LOLUNIT_ASSERT(a4 == a4); | |||||
| LOLUNIT_ASSERT(!(a4 != a4)); | |||||
| LOLUNIT_ASSERT(a4 != b4); | |||||
| LOLUNIT_ASSERT(!(a4 == b4)); | |||||
| LOLUNIT_ASSERT(a4 != c4); | |||||
| LOLUNIT_ASSERT(!(a4 == c4)); | |||||
| LOLUNIT_ASSERT(a4 != d4); | |||||
| LOLUNIT_ASSERT(!(a4 == d4)); | |||||
| LOLUNIT_ASSERT(a4 != e4); | |||||
| LOLUNIT_ASSERT(!(a4 == e4)); | |||||
| } | } | ||||
| void test_vec_lt() | |||||
| LOLUNIT_TEST(test_vec_lt) | |||||
| { | { | ||||
| vec2 a2(1.0f, 3.0f); | vec2 a2(1.0f, 3.0f); | ||||
| vec2 b2(0.0f, 0.0f); | vec2 b2(0.0f, 0.0f); | ||||
| @@ -109,118 +93,118 @@ public: | |||||
| vec2 e2(3.0f, 3.0f); | vec2 e2(3.0f, 3.0f); | ||||
| vec2 f2(4.0f, 4.0f); | vec2 f2(4.0f, 4.0f); | ||||
| CPPUNIT_ASSERT(a2 <= a2); | |||||
| CPPUNIT_ASSERT(!(a2 < a2)); | |||||
| CPPUNIT_ASSERT(!(a2 <= b2)); | |||||
| CPPUNIT_ASSERT(!(a2 < b2)); | |||||
| CPPUNIT_ASSERT(!(a2 <= c2)); | |||||
| CPPUNIT_ASSERT(!(a2 < c2)); | |||||
| CPPUNIT_ASSERT(!(a2 <= d2)); | |||||
| CPPUNIT_ASSERT(!(a2 < d2)); | |||||
| CPPUNIT_ASSERT(a2 <= e2); | |||||
| CPPUNIT_ASSERT(!(a2 < e2)); | |||||
| CPPUNIT_ASSERT(a2 <= f2); | |||||
| CPPUNIT_ASSERT(a2 < f2); | |||||
| LOLUNIT_ASSERT(a2 <= a2); | |||||
| LOLUNIT_ASSERT(!(a2 < a2)); | |||||
| LOLUNIT_ASSERT(!(a2 <= b2)); | |||||
| LOLUNIT_ASSERT(!(a2 < b2)); | |||||
| LOLUNIT_ASSERT(!(a2 <= c2)); | |||||
| LOLUNIT_ASSERT(!(a2 < c2)); | |||||
| LOLUNIT_ASSERT(!(a2 <= d2)); | |||||
| LOLUNIT_ASSERT(!(a2 < d2)); | |||||
| LOLUNIT_ASSERT(a2 <= e2); | |||||
| LOLUNIT_ASSERT(!(a2 < e2)); | |||||
| LOLUNIT_ASSERT(a2 <= f2); | |||||
| LOLUNIT_ASSERT(a2 < f2); | |||||
| } | } | ||||
| void test_vec_unary() | |||||
| LOLUNIT_TEST(test_vec_unary) | |||||
| { | { | ||||
| vec2 a(1.0f, 3.0f); | vec2 a(1.0f, 3.0f); | ||||
| vec2 b(-1.0f, -3.0f); | vec2 b(-1.0f, -3.0f); | ||||
| CPPUNIT_ASSERT(a == -b); | |||||
| CPPUNIT_ASSERT(-a == b); | |||||
| LOLUNIT_ASSERT(a == -b); | |||||
| LOLUNIT_ASSERT(-a == b); | |||||
| } | } | ||||
| void test_vec_cast() | |||||
| LOLUNIT_TEST(test_vec_cast) | |||||
| { | { | ||||
| vec2 a1(1.0f, 3.0f); | vec2 a1(1.0f, 3.0f); | ||||
| vec3 b(a1); | vec3 b(a1); | ||||
| vec2 a2(b); | vec2 a2(b); | ||||
| CPPUNIT_ASSERT_EQUAL(b.x, a1.x); | |||||
| CPPUNIT_ASSERT_EQUAL(b.y, a1.y); | |||||
| CPPUNIT_ASSERT_EQUAL(b.z, 0.0f); | |||||
| CPPUNIT_ASSERT(a2 == a1); | |||||
| LOLUNIT_ASSERT_EQUAL(b.x, a1.x); | |||||
| LOLUNIT_ASSERT_EQUAL(b.y, a1.y); | |||||
| LOLUNIT_ASSERT_EQUAL(b.z, 0.0f); | |||||
| LOLUNIT_ASSERT(a2 == a1); | |||||
| vec4 c(a1); | vec4 c(a1); | ||||
| vec2 a3(c); | vec2 a3(c); | ||||
| CPPUNIT_ASSERT_EQUAL(c.x, a1.x); | |||||
| CPPUNIT_ASSERT_EQUAL(c.y, a1.y); | |||||
| CPPUNIT_ASSERT_EQUAL(c.z, 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(c.w, 0.0f); | |||||
| CPPUNIT_ASSERT(a3 == a1); | |||||
| LOLUNIT_ASSERT_EQUAL(c.x, a1.x); | |||||
| LOLUNIT_ASSERT_EQUAL(c.y, a1.y); | |||||
| LOLUNIT_ASSERT_EQUAL(c.z, 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(c.w, 0.0f); | |||||
| LOLUNIT_ASSERT(a3 == a1); | |||||
| } | } | ||||
| void test_mat_det() | |||||
| LOLUNIT_TEST(test_mat_det) | |||||
| { | { | ||||
| float d1 = triangular.det(); | float d1 = triangular.det(); | ||||
| CPPUNIT_ASSERT_EQUAL(d1, 24.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(d1, 24.0f); | |||||
| float d2 = invertible.det(); | float d2 = invertible.det(); | ||||
| CPPUNIT_ASSERT_EQUAL(d2, -1.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(d2, -1.0f); | |||||
| } | } | ||||
| void test_mat_mul() | |||||
| LOLUNIT_TEST(test_mat_mul) | |||||
| { | { | ||||
| mat4 m0 = identity; | mat4 m0 = identity; | ||||
| mat4 m1 = identity; | mat4 m1 = identity; | ||||
| mat4 m2 = m0 * m1; | mat4 m2 = m0 * m1; | ||||
| CPPUNIT_ASSERT_EQUAL(m2[0][0], 1.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[1][0], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[2][0], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[3][0], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[0][1], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[1][1], 1.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[2][1], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[3][1], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[0][2], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[1][2], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[2][2], 1.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[3][2], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[0][3], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[1][3], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[2][3], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[3][3], 1.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[0][0], 1.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[1][0], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[2][0], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[3][0], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[0][1], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[1][1], 1.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[2][1], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[3][1], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[0][2], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[1][2], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[2][2], 1.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[3][2], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[0][3], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[1][3], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[2][3], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[3][3], 1.0f); | |||||
| } | } | ||||
| void test_mat_inv() | |||||
| LOLUNIT_TEST(test_mat_inv) | |||||
| { | { | ||||
| mat4 m0 = invertible; | mat4 m0 = invertible; | ||||
| mat4 m1 = m0.invert(); | mat4 m1 = m0.invert(); | ||||
| mat4 m2 = m0 * m1; | mat4 m2 = m0 * m1; | ||||
| CPPUNIT_ASSERT_EQUAL(m2[0][0], 1.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[1][0], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[2][0], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[3][0], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[0][1], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[1][1], 1.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[2][1], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[3][1], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[0][2], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[1][2], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[2][2], 1.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[3][2], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[0][3], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[1][3], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[2][3], 0.0f); | |||||
| CPPUNIT_ASSERT_EQUAL(m2[3][3], 1.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[0][0], 1.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[1][0], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[2][0], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[3][0], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[0][1], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[1][1], 1.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[2][1], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[3][1], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[0][2], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[1][2], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[2][2], 1.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[3][2], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[0][3], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[1][3], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[2][3], 0.0f); | |||||
| LOLUNIT_ASSERT_EQUAL(m2[3][3], 1.0f); | |||||
| } | } | ||||
| private: | private: | ||||
| mat4 triangular, identity, invertible; | mat4 triangular, identity, invertible; | ||||
| }; | }; | ||||
| CPPUNIT_TEST_SUITE_REGISTRATION(MatrixTest); | |||||
| LOLUNIT_SETUP_FIXTURE(MatrixTest); | |||||
| } /* namespace lol */ | } /* namespace lol */ | ||||
| @@ -12,32 +12,21 @@ | |||||
| # include "config.h" | # include "config.h" | ||||
| #endif | #endif | ||||
| #include <cppunit/extensions/HelperMacros.h> | |||||
| #include <cppunit/TestCaller.h> | |||||
| #include <cppunit/TestCase.h> | |||||
| #include <cppunit/TestSuite.h> | |||||
| #include <cmath> | #include <cmath> | ||||
| #include "core.h" | #include "core.h" | ||||
| #include "lol/unit.h" | |||||
| namespace lol | namespace lol | ||||
| { | { | ||||
| class TrigTest : public CppUnit::TestCase | |||||
| LOLUNIT_FIXTURE(TrigTest) | |||||
| { | { | ||||
| CPPUNIT_TEST_SUITE(TrigTest); | |||||
| CPPUNIT_TEST(test_sin); | |||||
| CPPUNIT_TEST_SUITE_END(); | |||||
| public: | public: | ||||
| TrigTest() : CppUnit::TestCase("Trigonometry Test") {} | |||||
| void setUp() {} | void setUp() {} | ||||
| void tearDown() {} | void tearDown() {} | ||||
| void test_sin() | |||||
| LOLUNIT_TEST(test_sin) | |||||
| { | { | ||||
| for (int i = -10000; i < 10000; i++) | for (int i = -10000; i < 10000; i++) | ||||
| { | { | ||||
| @@ -48,7 +37,7 @@ public: | |||||
| double a = sin(f); | double a = sin(f); | ||||
| #endif | #endif | ||||
| double b = lol_sin(f); | double b = lol_sin(f); | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| } | } | ||||
| for (int i = -10000; i < 10000; i++) | for (int i = -10000; i < 10000; i++) | ||||
| @@ -60,9 +49,12 @@ public: | |||||
| double a = sin(f); | double a = sin(f); | ||||
| #endif | #endif | ||||
| double b = lol_sin(f); | double b = lol_sin(f); | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| } | } | ||||
| } | |||||
| LOLUNIT_TEST(test_cos) | |||||
| { | |||||
| for (int i = -10000; i < 10000; i++) | for (int i = -10000; i < 10000; i++) | ||||
| { | { | ||||
| double f = (double)i * (1.0 / 1000.0); | double f = (double)i * (1.0 / 1000.0); | ||||
| @@ -72,7 +64,7 @@ public: | |||||
| double a = cos(f); | double a = cos(f); | ||||
| #endif | #endif | ||||
| double b = lol_cos(f); | double b = lol_cos(f); | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| } | } | ||||
| for (int i = -10000; i < 10000; i++) | for (int i = -10000; i < 10000; i++) | ||||
| @@ -84,9 +76,12 @@ public: | |||||
| double a = cos(f); | double a = cos(f); | ||||
| #endif | #endif | ||||
| double b = lol_cos(f); | double b = lol_cos(f); | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| } | } | ||||
| } | |||||
| LOLUNIT_TEST(test_sincos) | |||||
| { | |||||
| for (int i = -10000; i < 10000; i++) | for (int i = -10000; i < 10000; i++) | ||||
| { | { | ||||
| double f = (double)i * (1.0 / 1000.0); | double f = (double)i * (1.0 / 1000.0); | ||||
| @@ -99,8 +94,8 @@ public: | |||||
| #endif | #endif | ||||
| double b1, b2; | double b1, b2; | ||||
| lol_sincos(f, &b1, &b2); | lol_sincos(f, &b1, &b2); | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a1, b1, fabs(f) * 1e-11); | |||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a2, b2, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a1, b1, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a2, b2, fabs(f) * 1e-11); | |||||
| } | } | ||||
| for (int i = -10000; i < 10000; i++) | for (int i = -10000; i < 10000; i++) | ||||
| @@ -115,10 +110,13 @@ public: | |||||
| #endif | #endif | ||||
| double b1, b2; | double b1, b2; | ||||
| lol_sincos(f, &b1, &b2); | lol_sincos(f, &b1, &b2); | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a1, b1, fabs(f) * 1e-11); | |||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a2, b2, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a1, b1, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a2, b2, fabs(f) * 1e-11); | |||||
| } | } | ||||
| } | |||||
| LOLUNIT_TEST(test_tan) | |||||
| { | |||||
| for (int i = -100000; i < 100000; i++) | for (int i = -100000; i < 100000; i++) | ||||
| { | { | ||||
| double f = (double)i * (1.0 / 10000.0); | double f = (double)i * (1.0 / 10000.0); | ||||
| @@ -129,11 +127,11 @@ public: | |||||
| #endif | #endif | ||||
| double b = lol_tan(f); | double b = lol_tan(f); | ||||
| if (fabs(a) > 1e4) | if (fabs(a) > 1e4) | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(a) * fabs(a) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(a) * fabs(a) * 1e-11); | |||||
| else if (fabs(a) > 1.0) | else if (fabs(a) > 1.0) | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(a) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(a) * 1e-11); | |||||
| else | else | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| } | } | ||||
| for (int i = -10000; i < 10000; i++) | for (int i = -10000; i < 10000; i++) | ||||
| @@ -146,16 +144,16 @@ public: | |||||
| #endif | #endif | ||||
| double b = lol_tan(f); | double b = lol_tan(f); | ||||
| if (fabs(a) > 1e4) | if (fabs(a) > 1e4) | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(a) * fabs(a) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(a) * fabs(a) * 1e-11); | |||||
| else if (fabs(a) > 1.0) | else if (fabs(a) > 1.0) | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(a) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(a) * 1e-11); | |||||
| else | else | ||||
| CPPUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, fabs(f) * 1e-11); | |||||
| } | } | ||||
| } | } | ||||
| }; | }; | ||||
| CPPUNIT_TEST_SUITE_REGISTRATION(TrigTest); | |||||
| LOLUNIT_SETUP_FIXTURE(TrigTest); | |||||
| } /* namespace lol */ | } /* namespace lol */ | ||||
| @@ -3,18 +3,15 @@ | |||||
| <ImportGroup Label="PropertySheets" /> | <ImportGroup Label="PropertySheets" /> | ||||
| <PropertyGroup Label="UserMacros"> | <PropertyGroup Label="UserMacros"> | ||||
| <ContribDir>$(SolutionDir)\..\contrib</ContribDir> | <ContribDir>$(SolutionDir)\..\contrib</ContribDir> | ||||
| <CppUnitDir>$(ContribDir)\cppunit-1.12.2</CppUnitDir> | |||||
| <GlewDir>$(ContribDir)\glew-1.6.0</GlewDir> | <GlewDir>$(ContribDir)\glew-1.6.0</GlewDir> | ||||
| <GtkDir>$(ContribDir)\gtk-2.22.1</GtkDir> | <GtkDir>$(ContribDir)\gtk-2.22.1</GtkDir> | ||||
| <GtkGlDir>$(ContribDir)\gtkglarea-2.0.1</GtkGlDir> | <GtkGlDir>$(ContribDir)\gtkglarea-2.0.1</GtkGlDir> | ||||
| <SdlDir>$(ContribDir)\sdl-1.2.14</SdlDir> | <SdlDir>$(ContribDir)\sdl-1.2.14</SdlDir> | ||||
| <SdlImageDir>$(ContribDir)\sdl-image-1.2.10</SdlImageDir> | <SdlImageDir>$(ContribDir)\sdl-image-1.2.10</SdlImageDir> | ||||
| <SdlMixerDir>$(ContribDir)\sdl-mixer-1.2.11</SdlMixerDir> | <SdlMixerDir>$(ContribDir)\sdl-mixer-1.2.11</SdlMixerDir> | ||||
| <CppUnitIncludes>$(CppUnitDir)\include</CppUnitIncludes> | |||||
| <GlIncludes>$(GlewDir)\include</GlIncludes> | <GlIncludes>$(GlewDir)\include</GlIncludes> | ||||
| <GtkIncludes>$(GtkDir)\lib\glib-2.0\include;$(GtkDir)\lib\gtk-2.0\include;$(GtkDir)\include\glib-2.0;$(GtkDir)\include\gtk-2.0;$(GtkDir)\include\cairo;$(GtkDir)\include\pango-1.0;$(GtkDir)\include\gdk-pixbuf-2.0;$(GtkDir)\include\atk-1.0;$(GtkGlDir)\include</GtkIncludes> | <GtkIncludes>$(GtkDir)\lib\glib-2.0\include;$(GtkDir)\lib\gtk-2.0\include;$(GtkDir)\include\glib-2.0;$(GtkDir)\include\gtk-2.0;$(GtkDir)\include\cairo;$(GtkDir)\include\pango-1.0;$(GtkDir)\include\gdk-pixbuf-2.0;$(GtkDir)\include\atk-1.0;$(GtkGlDir)\include</GtkIncludes> | ||||
| <SdlIncludes>$(SdlDir)\include;$(SdlImageDir)\include;$(SdlMixerDir)\include</SdlIncludes> | <SdlIncludes>$(SdlDir)\include;$(SdlImageDir)\include;$(SdlMixerDir)\include</SdlIncludes> | ||||
| <CppUnitLibs>$(CppUnitDir)\lib</CppUnitLibs> | |||||
| <GlLibs>$(GlewDir)\lib</GlLibs> | <GlLibs>$(GlewDir)\lib</GlLibs> | ||||
| <GtkLibs>$(GtkDir)\lib;$(GtkDir)\bin;$(GtkGlDir)\lib</GtkLibs> | <GtkLibs>$(GtkDir)\lib;$(GtkDir)\bin;$(GtkGlDir)\lib</GtkLibs> | ||||
| <SdlLibs>$(SdlDir)\lib;$(SdlImageDir)\lib;$(SdlMixerDir)\lib</SdlLibs> | <SdlLibs>$(SdlDir)\lib;$(SdlImageDir)\lib;$(SdlMixerDir)\lib</SdlLibs> | ||||
| @@ -27,18 +24,15 @@ | |||||
| <ItemDefinitionGroup /> | <ItemDefinitionGroup /> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| <BuildMacro Include="ContribDir"><Value>$(ContribDir)</Value></BuildMacro> | <BuildMacro Include="ContribDir"><Value>$(ContribDir)</Value></BuildMacro> | ||||
| <BuildMacro Include="CppUnitDir"><Value>$(CppUnitDir)</Value></BuildMacro> | |||||
| <BuildMacro Include="GlewDir"><Value>$(GlewDir)</Value></BuildMacro> | <BuildMacro Include="GlewDir"><Value>$(GlewDir)</Value></BuildMacro> | ||||
| <BuildMacro Include="GtkDir"><Value>$(GtkDir)</Value></BuildMacro> | <BuildMacro Include="GtkDir"><Value>$(GtkDir)</Value></BuildMacro> | ||||
| <BuildMacro Include="GtkGlDir"><Value>$(GtkGlDir)</Value></BuildMacro> | <BuildMacro Include="GtkGlDir"><Value>$(GtkGlDir)</Value></BuildMacro> | ||||
| <BuildMacro Include="SdlDir"><Value>$(SdlDir)</Value></BuildMacro> | <BuildMacro Include="SdlDir"><Value>$(SdlDir)</Value></BuildMacro> | ||||
| <BuildMacro Include="SdlImageDir"><Value>$(SdlImageDir)</Value></BuildMacro> | <BuildMacro Include="SdlImageDir"><Value>$(SdlImageDir)</Value></BuildMacro> | ||||
| <BuildMacro Include="SdlMixerDir"><Value>$(SdlMixerDir)</Value></BuildMacro> | <BuildMacro Include="SdlMixerDir"><Value>$(SdlMixerDir)</Value></BuildMacro> | ||||
| <BuildMacro Include="CppUnitIncludes"><Value>$(CppUnitIncludes)</Value></BuildMacro> | |||||
| <BuildMacro Include="GlIncludes"><Value>$(GlIncludes)</Value></BuildMacro> | <BuildMacro Include="GlIncludes"><Value>$(GlIncludes)</Value></BuildMacro> | ||||
| <BuildMacro Include="GtkIncludes"><Value>$(GtkIncludes)</Value></BuildMacro> | <BuildMacro Include="GtkIncludes"><Value>$(GtkIncludes)</Value></BuildMacro> | ||||
| <BuildMacro Include="SdlIncludes"><Value>$(SdlIncludes)</Value></BuildMacro> | <BuildMacro Include="SdlIncludes"><Value>$(SdlIncludes)</Value></BuildMacro> | ||||
| <BuildMacro Include="CppUnitLibss"><Value>$(CppUnitLibss)</Value></BuildMacro> | |||||
| <BuildMacro Include="GlLibs"><Value>$(GlLibs)</Value></BuildMacro> | <BuildMacro Include="GlLibs"><Value>$(GlLibs)</Value></BuildMacro> | ||||
| <BuildMacro Include="GtkLibs"><Value>$(GtkLibs)</Value></BuildMacro> | <BuildMacro Include="GtkLibs"><Value>$(GtkLibs)</Value></BuildMacro> | ||||
| <BuildMacro Include="SdlLibs"><Value>$(SdlLibs)</Value></BuildMacro> | <BuildMacro Include="SdlLibs"><Value>$(SdlLibs)</Value></BuildMacro> | ||||
| @@ -62,13 +62,13 @@ | |||||
| <WarningLevel>Level3</WarningLevel> | <WarningLevel>Level3</WarningLevel> | ||||
| <Optimization>Disabled</Optimization> | <Optimization>Disabled</Optimization> | ||||
| <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;$(LolDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions> | <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;$(LolDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
| <AdditionalIncludeDirectories>$(SolutionDir)\..\src;$(CppUnitIncludes);$(GlIncludes);$(SdlIncludes);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||||
| <AdditionalIncludeDirectories>$(SolutionDir)\..\src;$(GlIncludes);$(SdlIncludes);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||||
| </ClCompile> | </ClCompile> | ||||
| <Link> | <Link> | ||||
| <SubSystem>Console</SubSystem> | <SubSystem>Console</SubSystem> | ||||
| <GenerateDebugInformation>true</GenerateDebugInformation> | <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);$(SdlDeps);libcppunit_msvcd.lib;$(GlDeps);$(OutDir)\lolcore.lib</AdditionalDependencies> | |||||
| <AdditionalLibraryDirectories>$(SdlLibs);$(CppUnitLibs);$(GlLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |||||
| <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);$(SdlDeps);$(GlDeps);$(OutDir)\lolcore.lib</AdditionalDependencies> | |||||
| <AdditionalLibraryDirectories>$(SdlLibs);$(GlLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |||||
| </Link> | </Link> | ||||
| <PostBuildEvent> | <PostBuildEvent> | ||||
| <Command>for %%I in ($(SdlLibs)) do xcopy /y /c /d %%I\*.dll $(TargetDir)</Command> | <Command>for %%I in ($(SdlLibs)) do xcopy /y /c /d %%I\*.dll $(TargetDir)</Command> | ||||
| @@ -83,15 +83,15 @@ | |||||
| <FunctionLevelLinking>true</FunctionLevelLinking> | <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
| <IntrinsicFunctions>true</IntrinsicFunctions> | <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
| <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;$(LolDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions> | <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;$(LolDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
| <AdditionalIncludeDirectories>$(SolutionDir)\..\src;$(CppUnitIncludes);$(GlIncludes);$(SdlIncludes);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||||
| <AdditionalIncludeDirectories>$(SolutionDir)\..\src;$(GlIncludes);$(SdlIncludes);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||||
| </ClCompile> | </ClCompile> | ||||
| <Link> | <Link> | ||||
| <SubSystem>Console</SubSystem> | <SubSystem>Console</SubSystem> | ||||
| <GenerateDebugInformation>true</GenerateDebugInformation> | <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| <EnableCOMDATFolding>true</EnableCOMDATFolding> | <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||
| <OptimizeReferences>true</OptimizeReferences> | <OptimizeReferences>true</OptimizeReferences> | ||||
| <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);$(SdlDeps);libcppunit_msvc.lib;$(GlDeps);$(OutDir)\lolcore.lib</AdditionalDependencies> | |||||
| <AdditionalLibraryDirectories>$(SdlLibs);$(CppUnitLibs);$(GlLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |||||
| <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);$(SdlDeps);$(GlDeps);$(OutDir)\lolcore.lib</AdditionalDependencies> | |||||
| <AdditionalLibraryDirectories>$(SdlLibs);$(GlLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |||||
| </Link> | </Link> | ||||
| <PostBuildEvent> | <PostBuildEvent> | ||||
| <Command>for %%I in ($(SdlLibs)) do xcopy /y /c /d %%I\*.dll $(TargetDir)</Command> | <Command>for %%I in ($(SdlLibs)) do xcopy /y /c /d %%I\*.dll $(TargetDir)</Command> | ||||