Source code for gloopy.geom.tests.test_orientation

from math import pi
from unittest import TestCase, main

from OpenGL import GL

from ..vector import Vector
from ..orientation import Orientation


class TestOrientation(TestCase):
[docs] def testConstructionDefaults(self):
[docs] o = Orientation() self.assertEqual(o.forward, Vector.ZNegAxis) self.assertEqual(o.up, Vector.YAxis) self.assertEqual(o.right, Vector.XAxis) def testConstructionConvertsBareTuples(self):
[docs] o = Orientation(Vector.XAxis, Vector.ZAxis) self.assertEquals(o.forward, Vector.XAxis) self.assertTrue(isinstance(o.forward, Vector)) self.assertEquals(o.up, Vector.ZAxis) self.assertTrue(isinstance(o.up, Vector)) self.assertEquals(o.right, Vector.YNegAxis) self.assertTrue(isinstance(o.right, Vector)) def testConstructionNormalises(self):
[docs] o = Orientation((1, 2, 3)) self.assertAlmostEquals(o.forward.length, 1, places=15) self.assertAlmostEquals(o.up.length, 1, places=15) self.assertAlmostEquals(o.right.length, 1, places=15) def testConstructionBarfsOnNonOrthogonalVectors(self):
[docs] self.assertRaises(AssertionError, lambda: Orientation((1, 2, 3), (3, -2, 1))) def testConstructionProvidesDefaultUp(self):
[docs] self.assertEqual(Orientation(Vector.XAxis).up, Vector.YAxis) self.assertEqual(Orientation(Vector.YAxis).up, Vector.ZAxis) self.assertEqual(Orientation(Vector.YNegAxis).up, Vector.ZNegAxis) def testStr(self):
[docs] self.assertEqual(str(Orientation(Vector.XAxis, up=Vector.YAxis)), 'Orientation(Vector(1, 0, 0), up=Vector(0, 1, 0))') def testEqual(self):
[docs] a = Orientation((0, 2, 3)) self.assertTrue(a == Orientation((0, 2, 3))) self.assertFalse(a == Orientation((11, 2, 3))) self.assertFalse(a == Orientation((0, 2, 3), up=(0, -3, 2))) self.assertFalse(a == 123) def testNotEqual(self):
[docs] a = Orientation((0, 2, 3)) self.assertFalse(a != Orientation((0, 2, 3))) self.assertTrue(a != Orientation((11, 2, 3))) self.assertTrue(a != Orientation((0, 2, 3), up=(0, -3, 2))) self.assertTrue(a != 123) def testHash(self):
[docs] a = Orientation((0, 2, 3)) self.assertRaises(TypeError, lambda: hash(a)) def testRoll(self):
[docs] o = Orientation(Vector.ZAxis) self.assertEqual( o.roll(pi/2), Orientation(Vector.ZAxis, up=Vector.XNegAxis) ) def testYaw(self):
[docs] o = Orientation(Vector.ZAxis) self.assertEqual( o.yaw(pi/2), Orientation(Vector.XNegAxis) ) def testPitch(self):
[docs] o = Orientation(Vector.ZAxis) self.assertEqual( o.pitch(pi/2), Orientation(Vector.YAxis, up=Vector.ZNegAxis) ) def testMatrix(self):
[docs] o = Orientation((1, 2, 3)) self.assertEquals(type(o.matrix), (GL.GLfloat * 16)) expected = [ o.right.x, o.right.y, o.right.z, 0, o.up.x, o.up.y, o.up.z, 0, -o.forward.x, -o.forward.y, -o.forward.z, 0, 0, 0, 0, 1, ] for a, e in zip(o.matrix, expected): self.assertAlmostEqual(a, e) if __name__ == '__main__':
main()