def verify(t, t_norm, res): v3cp1 = tpm.V3CP(**t) v3cp2 = tpm.V3CP(**t_norm) v3cp = v3cp1.cross(v3cp2) self.assertEqual(v3cp.ctype, tpm.CARTESIAN) self.assertEqual(v3cp.vtype, tpm.POS) self.assertAlmostEqual(v3cp.x, res['x']) self.assertAlmostEqual(v3cp.y, res['y']) self.assertAlmostEqual(v3cp.z, res['z'])
def verify(t, t_norm): v3cp1 = tpm.V3CP(**t) v3cp2 = tpm.V3CP(**t_norm) v3cp = v3cp2 - v3cp1 self.assertEqual(type(v3cp), tpm.V3CP) self.assertEqual(v3cp.ctype, tpm.CARTESIAN) self.assertEqual(v3cp.vtype, tpm.POS) self.assertAlmostEqual(v3cp.x, t_norm['x'] - t['x']) self.assertAlmostEqual(v3cp.y, t_norm['y'] - t['y']) self.assertAlmostEqual(v3cp.z, t_norm['z'] - t['z'])
def testV3CSubtract(self): """V3CP.__sub__ => V3CP - V3CP.""" import math def verify(t, t_norm): v3cp1 = tpm.V3CP(**t) v3cp2 = tpm.V3CP(**t_norm) v3cp = v3cp2 - v3cp1 self.assertEqual(type(v3cp), tpm.V3CP) self.assertEqual(v3cp.ctype, tpm.CARTESIAN) self.assertEqual(v3cp.vtype, tpm.POS) self.assertAlmostEqual(v3cp.x, t_norm['x'] - t['x']) self.assertAlmostEqual(v3cp.y, t_norm['y'] - t['y']) self.assertAlmostEqual(v3cp.z, t_norm['z'] - t['z']) t = dict(x=1.0, y=2.0, z=3.0) t_norm = dict(x=10.0, y=20.0, z=-0.234) verify(t, t_norm) t = dict(x=1.0, y=2.0, z=3.0) t_norm = dict(x=10.0, y=20.0, z=-0.234) verify(t_norm, t) # TypeError must be rasied if one of the values is not V3CP. self.assertRaises(TypeError, lambda v1: v1 - 1.0, tpm.V3CP(**t))
def testSetGetInitValues(self): """V3CP(**vals) => set V3CP fields at init.""" t = dict(x=-12.34, y=21345.0, z=-0.00001) v3cp = tpm.V3CP(**t) self.assertAlmostEqual(v3cp.x, t['x']) self.assertAlmostEqual(v3cp.y, t['y']) self.assertAlmostEqual(v3cp.z, t['z'])
def verify(t, t_norm): v3cp = tpm.V3CP(**t) v3sp = v3cp.c2s() self.assertEqual(type(v3sp), tpm.V3SP) self.assertEqual(v3sp.ctype, tpm.SPHERICAL) self.assertEqual(v3sp.vtype, tpm.POS) self.assertAlmostEqual(v3sp.r, t_norm['r']) self.assertAlmostEqual(v3sp.alpha, t_norm['alpha']) self.assertAlmostEqual(v3sp.delta, t_norm['delta'])
def verify(t, n): v3cp1 = tpm.V3CP(**t) v3cp = v3cp1 * n self.assertEqual(type(v3cp), tpm.V3CP) self.assertEqual(v3cp.ctype, tpm.CARTESIAN) self.assertEqual(v3cp.vtype, tpm.POS) self.assertAlmostEqual(v3cp.x, t['x'] * n) self.assertAlmostEqual(v3cp.y, t['y'] * n) self.assertAlmostEqual(v3cp.z, t['z'] * n)
def verify(t, t_norm): v3cp1 = tpm.V3CP(**t) v3cp = v3cp1.unit() self.assertEqual(type(v3cp), tpm.V3CP) self.assertEqual(v3cp.ctype, tpm.CARTESIAN) self.assertEqual(v3cp.vtype, tpm.POS) self.assertAlmostEqual(v3cp.x, t_norm['x']) self.assertAlmostEqual(v3cp.y, t_norm['y']) self.assertAlmostEqual(v3cp.z, t_norm['z']) r = math.sqrt(v3cp.x**2 + v3cp.y**2 + v3cp.z**2) self.assertAlmostEqual(r, 1.0)
def testV6SetPOS(self): """V6C.pos = V3CP => set POS components of V6C, using V3CP.""" t = dict(x=1123.4556, y=4556.1123, z=9876.1267) v3cp = tpm.V3CP(**t) v6cp = tpm.V6C() v6cp.pos = v3cp self.assertAlmostEqual(v6cp.x, t['x']) self.assertAlmostEqual(v6cp.x, v3cp.x) self.assertAlmostEqual(v6cp.y, t['y']) self.assertAlmostEqual(v6cp.y, v3cp.y) self.assertAlmostEqual(v6cp.z, t['z']) self.assertAlmostEqual(v6cp.z, v3cp.z)
def testV3CMultiply(self): """V3CP.__mul__ => V3CP * x; scale with a scalar.""" def verify(t, n): v3cp1 = tpm.V3CP(**t) v3cp = v3cp1 * n self.assertEqual(type(v3cp), tpm.V3CP) self.assertEqual(v3cp.ctype, tpm.CARTESIAN) self.assertEqual(v3cp.vtype, tpm.POS) self.assertAlmostEqual(v3cp.x, t['x'] * n) self.assertAlmostEqual(v3cp.y, t['y'] * n) self.assertAlmostEqual(v3cp.z, t['z'] * n) t = dict(x=1.0, y=2.0, z=3.0) verify(t, 2.0) # This TypeError is raised by Cython. Cython doesn't have a # __rmul__ and hence the __mul__ of the right hand V3CP is # called. But then the types of self and n in __mul__ become # incompatible and TypeError is raised. self.assertRaises(TypeError, lambda v1: 3 * v1, tpm.V3CP(**t))
def testCreate(self): """V3CP() => create V3CP class.""" v3cp = tpm.V3CP() self.assertEqual(type(v3cp), tpm.V3CP) # Access default init values. self.assertAlmostEqual(v3cp.ctype, tpm.CARTESIAN) self.assertAlmostEqual(v3cp.vtype, tpm.POS) self.assertAlmostEqual(v3cp.x, 0.0) self.assertAlmostEqual(v3cp.y, 0.0) self.assertAlmostEqual(v3cp.z, 0.0) # ctype and vtype are read only values. def f1(x): x.ctype = tpm.SPHERICAL def f2(x): x.vtype = tpm.VEL self.assertRaises(AttributeError, f1, v3cp) self.assertRaises(AttributeError, f2, v3cp)
def verify(t, t_norm, f): v3cp = tpm.V3CP(**t) s = f(v3cp) self.assertEqual(s, t_norm)
def verify(t, t_norm, res): v3cp1 = tpm.V3CP(**t) v3cp2 = tpm.V3CP(**t_norm) d = v3cp1.dot(v3cp2) self.assertAlmostEqual(d, res)
def verify(t, t_norm): v3cp = tpm.V3CP(**t) d = v3cp.mod() self.assertAlmostEqual(d, t_norm)