MatrixMania/test/test_rot.py

39 lines
1.7 KiB
Python

import unittest
from matrixmania.compute import rot_2D # Importiere die Funktion aus deiner compute.py
import math
class TestRot2D(unittest.TestCase):
# Setze eine Toleranz für Fließkommazahlen
TOLERANCE = 5
def test_zero_angle(self):
# Testfall: 0 Grad (0 Bogenmaß) Rotation -> Einheitsmatrix
expected = [[1.0, 0.0], [0.0, 1.0]]
result = rot_2D(0)
self.assertAlmostEqual(result[0][0], expected[0][0], self.TOLERANCE)
self.assertAlmostEqual(result[0][1], expected[0][1], self.TOLERANCE)
self.assertAlmostEqual(result[1][0], expected[1][0], self.TOLERANCE)
self.assertAlmostEqual(result[1][1], expected[1][1], self.TOLERANCE)
def test_ninety_degrees(self):
# Testfall: 90 Grad (pi/2 Bogenmaß) Rotation
# Erwartet: [[0, -1], [1, 0]]
expected = [[0.0, -1.0], [1.0, 0.0]]
result = rot_2D(math.pi / 2)
self.assertAlmostEqual(result[0][0], expected[0][0], self.TOLERANCE)
self.assertAlmostEqual(result[0][1], expected[0][1], self.TOLERANCE)
self.assertAlmostEqual(result[1][0], expected[1][0], self.TOLERANCE)
self.assertAlmostEqual(result[1][1], expected[1][1], self.TOLERANCE)
def test_one_eighty_degrees(self):
# Testfall: 180 Grad (pi Bogenmaß) Rotation
# Erwartet: [[-1, 0], [0, -1]]
expected = [[-1.0, 0.0], [0.0, -1.0]]
result = rot_2D(math.pi)
self.assertAlmostEqual(result[0][0], expected[0][0], self.TOLERANCE)
self.assertAlmostEqual(result[0][1], expected[0][1], self.TOLERANCE)
self.assertAlmostEqual(result[1][0], expected[1][0], self.TOLERANCE)
self.assertAlmostEqual(result[1][1], expected[1][1], self.TOLERANCE)
if __name__ == '__main__':
unittest.main()