import unittest import sys from pathlib import Path # Add the project root to sys.path sys.path.append(str(Path(__file__).resolve().parent.parent)) from Angle import * class AngleTest(unittest.TestCase): def test_Construct(self): degrees: float = 0 a: Angle = Angle.Degrees(degrees) assert(a.InDegrees() == degrees) degrees = -180 a = Angle.Degrees(degrees) assert(a.InDegrees() == degrees) degrees = 270 a = Angle.Degrees(degrees) assert(a.InDegrees() == -90.0) def test_Negate(self): angle = 0 a:Angle = Angle.Degrees(angle) a = -a assert(a.InDegrees() == angle) angle = 90 a = Angle.Degrees(angle) a = -a assert(a.InDegrees() == -angle) def test_Add(self): a: Angle = Angle.Degrees(-45) b: Angle = Angle.Degrees(45) r: Angle = a + b assert(r.InDegrees() == 0) def test_Subtract(self): a: Angle = Angle.Degrees(0) b: Angle = Angle.Degrees(45) r: Angle = a - b assert(r.InDegrees() == -45) def test_Compare(self): a: Angle = Angle.Degrees(45) r: bool = False r = a > Angle.Degrees(0) assert(r == True) r = a > Angle.Degrees(90) assert(r == False) r = a > Angle.Degrees(-90) assert(r == True) def test_Normalize(self): r = Angle() r = Angle.Normalize(Angle.Degrees(90)) assert(r.InDegrees() == 90) r = Angle.Normalize(Angle.Degrees(-90)) assert(r.InDegrees() == -90) r = Angle.Normalize(Angle.Degrees(270)) assert(r.InDegrees() == -90) r = Angle.Normalize(Angle.Degrees(270 + 360)) assert(r.InDegrees() == -90) r = Angle.Normalize(Angle.Degrees(-270)); assert(r.InDegrees() == 90) r = Angle.Normalize(Angle.Degrees(-270 - 360)); assert(r.InDegrees() == 90) r = Angle.Normalize(Angle.Degrees(0)); assert(r.InDegrees() == 0) def test_Clamp(self): r = Angle() r = Angle.Clamp(Angle.Degrees(1), Angle.Degrees(0), Angle.Degrees(2)) assert(r.InDegrees() == 1) r = Angle.Clamp(Angle.Degrees(-1), Angle.Degrees(0), Angle.Degrees(2)) assert(r.InDegrees() == 0) r = Angle.Clamp(Angle.Degrees(3), Angle.Degrees(0), Angle.Degrees(2)) assert(r.InDegrees() == 2) r = Angle.Clamp(Angle.Degrees(1), Angle.Degrees(0), Angle.Degrees(0)) assert(r.InDegrees() == 0) r = Angle.Clamp(Angle.Degrees(0), Angle.Degrees(0), Angle.Degrees(0)) assert(r.InDegrees() == 0) r = Angle.Clamp(Angle.Degrees(0), Angle.Degrees(1), Angle.Degrees(-1)) assert(r.InDegrees() == 0) def test_MoveTowards(self): r = Angle(); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 30) assert(r.InDegrees() == 30) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 90) assert(r.InDegrees() == 90) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 180) assert(r.InDegrees() == 90) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 270) assert(r.InDegrees() == 90) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), -30) assert(r.InDegrees() == 0) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(-90), -30) assert(r.InDegrees() == 0) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(-90), -90) assert(r.InDegrees() == 0) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(-90), -180) assert(r.InDegrees() == 0) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(-90), -270) assert(r.InDegrees() == 0) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 0) assert(r.InDegrees() == 0) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(0), 0) assert(r.InDegrees() == 0) r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(0), 30) assert(r.InDegrees() == 0) if __name__ == '__main__': unittest.main()