diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..af56f61 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +.idea/ diff --git a/CMakeLists.txt b/CMakeLists.txt index cc82bd3..21b5360 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,9 @@ project(Prog3B) set(CMAKE_CXX_STANDARD 17) +# WICHTIG: wegen raylib + neuer CMake-Version +set(CMAKE_POLICY_VERSION_MINIMUM 3.5) + include(FetchContent) FetchContent_Declare( @@ -20,4 +23,14 @@ add_executable(Prog3B ) target_include_directories(Prog3B PRIVATE .) -target_link_libraries(Prog3B raylib) \ No newline at end of file +target_link_libraries(Prog3B raylib) + +# macOS-Frameworks nicht vergessen: +if(APPLE) + target_link_libraries(Prog3B + "-framework Cocoa" + "-framework IOKit" + "-framework CoreVideo" + "-framework OpenGL" + ) +endif() diff --git a/tests.cpp b/tests.cpp index 491de37..945e602 100644 --- a/tests.cpp +++ b/tests.cpp @@ -1,22 +1,28 @@ #include +#include #include "gamematrix.h" -using namespace Matrix3D; -void test_rotation_z() { - Vec3 v{1,0,0}; - auto R = rot3D(90,'z'); - Vec3 res = apply(R,v); - std::cout << "Rotate Z 90° -> (" << res.x << "," << res.y << "," << res.z << ")\n"; -} - -void test_translate() { - Vec3 v{0,0,0}; - auto T = translate({1,2,3}); - Vec3 res = apply(T,v); - std::cout << "Translate -> (" << res.x << "," << res.y << "," << res.z << ")\n"; +bool approx(double a, double b, double eps = 1e-6) { + return std::fabs(a - b) < eps; } int main() { - test_rotation_z(); - test_translate(); + int failed = 0; + + // Beispiel-Test: Rotation um Z 90° + std::array v = {1,0,0}; + auto Rz = rot3D(90, 'z'); // ggf. Namespace anpassen + auto result = apply(Rz, v); + if (!approx(result[0], 0.0) || !approx(result[1], 1.0)) { + std::cout << "Test rot3D(Z,90) failed!\n"; + failed++; + } + + // Ausgabe + if (failed == 0) + std::cout << "ALL TESTS PASSED ✅\n"; + else + std::cout << failed << " TEST(S) FAILED ❌\n"; + + return failed; }