Ejemplo n.º 1
0
 def verify(t, t_norm, res):
     v3sp1 = tpm.V3SP(**t)
     v3sp2 = tpm.V3SP(**t_norm)
     v3sp = v3sp1.cross(v3sp2)
     self.assertEqual(v3sp.ctype, tpm.SPHERICAL)
     self.assertEqual(v3sp.vtype, tpm.POS)
     self.assertAlmostEqual(v3sp.r, res['r'])
     self.assertAlmostEqual(v3sp.alpha, res['alpha'])
     self.assertAlmostEqual(v3sp.delta, res['delta'])
Ejemplo n.º 2
0
    def testV3SAdd(self):
        """V3SP.__add__ => V3SP + V3SP."""
        def verify(t, t_norm, res):
            v3sp1 = tpm.V3SP(**t)
            v3sp2 = tpm.V3SP(**t_norm)
            v3sp = v3sp2 + v3sp1
            self.assertEqual(type(v3sp), tpm.V3SP)
            self.assertEqual(v3sp.ctype, tpm.SPHERICAL)
            self.assertEqual(v3sp.vtype, tpm.POS)
            self.assertAlmostEqual(v3sp.r, res['r'])
            self.assertAlmostEqual(v3sp.alpha, res['alpha'])
            self.assertAlmostEqual(v3sp.delta, res['delta'])

        # see pytpm/tests/c_tests/v3sum_test.c
        t = dict(r=1.0, alpha=2.0, delta=3.0)
        t_norm = dict(r=10.0, alpha=0.2, delta=-0.234)
        res = dict(r=10.23335408, alpha=0.10342998, delta=-0.21443228)
        # t_norm + t
        verify(t, t_norm, res)

        t = dict(r=-1.0, alpha=2.0, delta=3.0)
        t_norm = dict(r=1.0, alpha=-2.0, delta=-0.234)
        res = dict(r=0.89805895, alpha=3.12239595, delta=-0.42830498)
        # t_norm + t
        verify(t, t_norm, res)

        # TypeError must be rasied if one of the values is not V3SP.
        self.assertRaises(TypeError, lambda v1: v1 + 1.0, tpm.V3SP(**t))
Ejemplo n.º 3
0
    def testV3SSubtract(self):
        """V3SP.__sub__ => V3SP - V3SP."""
        import math

        def verify(t, t_norm, res):
            v3sp1 = tpm.V3SP(**t)
            v3sp2 = tpm.V3SP(**t_norm)
            v3sp = v3sp2 - v3sp1
            self.assertEqual(type(v3sp), tpm.V3SP)
            self.assertEqual(v3sp.ctype, tpm.SPHERICAL)
            self.assertEqual(v3sp.vtype, tpm.POS)
            self.assertAlmostEqual(v3sp.r, res['r'])
            self.assertAlmostEqual(v3sp.alpha, res['alpha'])
            self.assertAlmostEqual(v3sp.delta, res['delta'])

        # see pytpm/tests/c_tests/v3diff_test.c
        t = dict(r=1.0, alpha=2.0, delta=3.0)
        t_norm = dict(r=10.0, alpha=0.2, delta=-0.234)
        res = dict(r=9.86298456, alpha=0.30111131, delta=-0.25206013)
        # t_norm + t
        verify(t, t_norm, res)

        t = dict(r=-1.0, alpha=2.0, delta=3.0)
        t_norm = dict(r=1.0, alpha=-2.0, delta=-0.234)
        res = dict(r=1.78703389, alpha=-1.56677510, delta=-0.05080452)
        # t_norm + t
        verify(t, t_norm, res)

        # TypeError must be rasied if one of the values is not V3SP.
        self.assertRaises(TypeError, lambda v1: v1 - 1.0, tpm.V3SP(**t))
Ejemplo n.º 4
0
 def testSetGetInitValues(self):
     """V3SP(**vals) => set fields at init."""
     t = dict(r=2.0, alpha=-0.12, delta=2 * 3.14)
     v3sp = tpm.V3SP(**t)
     self.assertAlmostEqual(v3sp.r, t['r'])
     self.assertAlmostEqual(v3sp.alpha, t['alpha'])
     self.assertAlmostEqual(v3sp.delta, t['delta'])
Ejemplo n.º 5
0
 def verify(t, n):
     v3sp1 = tpm.V3SP(**t)
     v3sp = v3sp1 * n
     self.assertEqual(type(v3sp), tpm.V3SP)
     self.assertEqual(v3sp.ctype, tpm.SPHERICAL)
     self.assertEqual(v3sp.vtype, tpm.POS)
     self.assertAlmostEqual(v3sp.r, t['r'] * n)
     self.assertAlmostEqual(v3sp.alpha, t['alpha'])
     self.assertAlmostEqual(v3sp.delta, t['delta'])
Ejemplo n.º 6
0
 def verify(t, t_norm, n=7):
     v3sp = tpm.V3SP(**t)
     v3cp = v3sp.s2c()
     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'], n)
     self.assertAlmostEqual(v3cp.y, t_norm['y'], n)
     self.assertAlmostEqual(v3cp.z, t_norm['z'], n)
Ejemplo n.º 7
0
    def testV3SMultiply(self):
        """V3SP.__mul__ => V3SP * x; scale with a scalar."""
        def verify(t, n):
            v3sp1 = tpm.V3SP(**t)
            v3sp = v3sp1 * n
            self.assertEqual(type(v3sp), tpm.V3SP)
            self.assertEqual(v3sp.ctype, tpm.SPHERICAL)
            self.assertEqual(v3sp.vtype, tpm.POS)
            self.assertAlmostEqual(v3sp.r, t['r'] * n)
            self.assertAlmostEqual(v3sp.alpha, t['alpha'])
            self.assertAlmostEqual(v3sp.delta, t['delta'])

        t = dict(r=1345678.12345, alpha=-2.345, delta=0.234)
        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.V3SP(**t))
Ejemplo n.º 8
0
    def testCreate(self):
        """V3CP() => create V3CP class."""
        v3sp = tpm.V3SP()
        self.assertEqual(type(v3sp), tpm.V3SP)

        # Access default init values.
        self.assertAlmostEqual(v3sp.ctype, tpm.SPHERICAL)
        self.assertAlmostEqual(v3sp.vtype, tpm.POS)
        self.assertAlmostEqual(v3sp.r, 0.0)
        self.assertAlmostEqual(v3sp.alpha, 0.0)
        self.assertAlmostEqual(v3sp.delta, 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, v3sp)
        self.assertRaises(AttributeError, f2, v3sp)
Ejemplo n.º 9
0
 def verify(t, t_norm, f):
     v3sp = tpm.V3SP(**t)
     s = f(v3sp)
     self.assertEqual(s, t_norm)
Ejemplo n.º 10
0
 def verify(t, t_norm):
     v3sp = tpm.V3SP(**t)
     a = v3sp.ndelta
     self.assertAlmostEqual(a, t_norm)
Ejemplo n.º 11
0
 def verify(t, t_norm, res):
     v3sp1 = tpm.V3SP(**t)
     v3sp2 = tpm.V3SP(**t_norm)
     d = v3sp1.dot(v3sp2)
     self.assertAlmostEqual(d, res)
Ejemplo n.º 12
0
 def verify(t, t_norm):
     v3sp = tpm.V3SP(**t)
     d = v3sp.mod()
     self.assertAlmostEqual(d, t_norm)