144 lines
4.1 KiB
Python
144 lines
4.1 KiB
Python
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() |