Browse Source

python: properly test all Range APIs.

I saved myself some minor amount of time in 2019 to spend significantly
more time catching up with missing tests in 2023.
next
Vladimír Vondruš 3 years ago
parent
commit
11060aa30f
  1. 38
      src/python/magnum/test/test_math.py

38
src/python/magnum/test/test_math.py

@ -1255,7 +1255,37 @@ class Range(unittest.TestCase):
self.assertEqual(b, Range3D((1.1, 0.3, -1.5), (3.0, 0.4, 7.0))) self.assertEqual(b, Range3D((1.1, 0.3, -1.5), (3.0, 0.4, 7.0)))
def test_methods(self): def test_methods(self):
a = math.join(Range2D(Vector2(), (3.0, 5.0)).translated((1.5, 0.7)), a1 = Range1D(3.5, 5.0)
Range2D((0.3, 2.0), (0.4, 2.1))) self.assertEqual(a1.size(), 1.5)
self.assertEqual(a, Range2D((0.3, 0.7), (4.5, 5.7))) self.assertEqual(a1.center(), 4.25)
self.assertEqual(a.center(), Vector2(2.4, 3.2)) self.assertEqual(a1.translated(1.0), Range1D(4.5, 6.0))
self.assertEqual(a1.scaled(2.0), Range1D(7, 10))
self.assertEqual(a1.scaled_from_center(2.0), Range1D(2.75, 5.75))
a2 = Range2Di((1, 3), (3, 7))
self.assertEqual(a2.size(), (2, 4))
self.assertEqual(a2.center(), (2, 5))
self.assertEqual(a2.translated((1, 2)), Range2Di((2, 5), (4, 9)))
self.assertEqual(a2.scaled((2, 4)), Range2Di((2, 12), (6, 28)))
self.assertEqual(a2.scaled_from_center((2, 4)), Range2Di((0, -3), (4, 13)))
# Verify that both integer and float variants work. There isn't
# anything else special about the 3D variant to need thorough testing.
a3 = Range3Dd(((1.0, 0.2, 0.3), (1.0, 2.0, 3.0)))
self.assertEqual(a3.size(), (0.0, 1.8, 2.7))
self.assertEqual(a3.center(), (1.0, 1.1, 1.65))
self.assertEqual(a3.translated((0.1, 0.2, 0.3)), Range3Dd((1.1, 0.4, 0.6), (1.1, 2.2, 3.3)))
self.assertEqual(a3.scaled((2.0, 0.5, 1.0/3.0)), Range3Dd((2.0, 0.1, 0.1), (2.0, 1.0, 1.0)))
self.assertEqual(a3.scaled_from_center((2.0, 0.5, 1.0/3.0)), Range3Dd((1.0, 0.65, 1.2), (1.0, 1.55, 2.1)))
def test_functions(self):
a = Range2D((1.5, 0.7), (4.5, 5.7))
b = Range2D((0.3, 2.0), (3.0, 2.1))
c = Range2D((0.3, 2.0), (0.4, 2.1))
self.assertEqual(math.join(a, b), Range2D((0.3, 0.7), (4.5, 5.7)))
self.assertEqual(math.intersect(a, b), Range2D((1.5, 2.0), (3.0, 2.1)))
self.assertEqual(math.intersect(a, c), Range2D())
self.assertTrue(math.intersects(a, b))
self.assertFalse(math.intersects(a, c))
# There's no difference in behavior for the 1D and 3D variants

Loading…
Cancel
Save