From a7ec47ca03c4d046bf64dc9dc5404a5493d00b3a Mon Sep 17 00:00:00 2001 From: Iskender Abdullayev Date: Mon, 3 Nov 2025 15:37:26 +0100 Subject: [PATCH] Add completed test plan to docs/tests.txt --- CMakeLists.txt | 5 ++-- docs/tests.txt | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 docs/tests.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 65f3e66..d5d186b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,8 @@ set(SRC_FILES ) set(INCLUDE_DIRS - ${CMAKE_CURRENT_LIST_DIR} + ${CMAKE_CURRENT_LIST_DIR}/mac_arm + ${CMAKE_CURRENT_LIST_DIR}/raylib ) # === Betriebssystem automatisch erkennen === @@ -60,7 +61,7 @@ endif() # macOS: Frameworks if(APPLE) - target_link_libraries(${EXECUTABLE_NAME} + target_link_libraries(${EXECUTABLE_NAME} PRIVATE "-framework IOKit" "-framework Cocoa" "-framework OpenGL" diff --git a/docs/tests.txt b/docs/tests.txt new file mode 100644 index 0000000..e4fce2d --- /dev/null +++ b/docs/tests.txt @@ -0,0 +1,74 @@ +======================================================== +Projekt: gamematrix (C++ Library) +Rolle: Tester +Datei: tests.txt +Datum: ____________________ +Team: ____________________ +======================================================== + +# ---------------------------- +# 1. Testplan Übersicht +# ---------------------------- +Ziel: Überprüfung der Funktionen matmul(), translate(), rot3D(). +Hinweise: +- Numerik: Vergleiche mit EPS = 1e-6 +- Winkelmaß: rot3D erwartet Grad (90/180/270). (Anpassen, falls Implementierung Radiant nutzt.) +- Homogene Koordinate: Beim Anwenden von Mat4 auf Vec3 gilt w = 1. + +| Funktion | Testfall | Eingabe / Setup | Erwartetes Ergebnis / Prüfung | Bemerkung | +|---------------|-----------------------------------|----------------------------------------------------------------------------------|-------------------------------------------------------------|------------------------------------| +| matmul | Identity * Identity | A = I4, B = I4 | C = I4 | Basisfall | +| matmul | Beispielmatrizen | A = [[1,2,0,0],[0,1,3,0],[0,0,1,4],[0,0,0,1]]; B = [[1,0,5,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]] | C = A*B (per Hand gerechnet); alle Einträge ≈ erwartet | Handrechnung in Abschnitt 2 | +| matmul | Assoziativität (Stichprobe) | Zufällige A,B,C (kleine Ganzzahlen) | (A*B)*C ≈ A*(B*C) | Numerisch mit EPS | +| matmul | Nicht-Kommutativität | A = rotZ(90), B = rotX(90) | A*B ≠ B*A | Beispiel | +| translate | Matrix-Struktur | t = (1,2,3) | T = [[1,0,0,1],[0,1,0,2],[0,0,1,3],[0,0,0,1]] | Letzte Spalte ist Translation | +| translate | Anwendung auf Vektor | v = (4,5,6), T = translate(1,2,3) | T·(v,1) → (5,7,9) | Homogene 1 beachten | +| rot3D | Rotation Z 90° | v = (1,0,0), Rz = rot3D(90,'z') | Rz·v → (0,1,0) | Rechtshändiges System | +| rot3D | Rotation X 180° | v = (0,1,0), Rx = rot3D(180,'x') | Rx·v → (0,-1,0) | | +| rot3D | Rotation Y 270° (Korrektur) | v = (1,0,0), Ry = rot3D(270,'y') | Ry·v → (0,0,1) | Vorher war -1: korrigiert | +| rot3D | Inverse | R = rot3D(θ,axis) | R * rot3D(-θ,axis) ≈ I4 | Für θ ∈ {30, 90} testen | +| rot3D+trans | Reihenfolge-Effekt | Rz = rot3D(90,'z'), T = translate(1,0,0), p=(1,0,0) | Rz*T·p ≠ T*Rz·p (aber jeweils plausibles Ergebnis) | Reihenfolge wichtig | + +# ---------------------------- +# 2. Testdaten / Matrizen +# ---------------------------- +- Identity I4 = diag(1,1,1,1) +- Beispielmatrizen für matmul: + A = [[1,2,0,0], + [0,1,3,0], + [0,0,1,4], + [0,0,0,1]] + + B = [[1,0,5,0], + [0,1,0,0], + [0,0,1,0], + [0,0,0,1]] + + Erwartetes C = A*B = + [[1,2,5,0], + [0,1,3,0], + [0,0,1,4], + [0,0,0,1]] + +- Translation t = (1,2,3) ⇒ + T = [[1,0,0,1], + [0,1,0,2], + [0,0,1,3], + [0,0,0,1]] + +- Beispielvektoren: + v1=(1,0,0), v2=(0,1,0), v3=(4,5,6) + +# ---------------------------- +# 3. Abnahmekriterien +# ---------------------------- +- Alle Unit-Tests erfolgreich (keine Abweichung > EPS) +- Einheitliches Winkelmaß eingehalten (Grad oder Radiant, dokumentiert) +- Keine Exceptions außer gewollt (z. B. ungültige Achse löst definierte Exception aus) +- Testbericht (Eingaben, erwartetes Ergebnis, Ist-Ergebnis, Status, Bemerkung) vollständig +======================================================== +Hinweis: +- Diese Datei wird vom Tester gepflegt. +- Tester dokumentiert Input, Output, erwartetes Ergebnis und Erfolg/Fehler. +======================================================== +