Example #1
0
    def test_as_length(self):
        v1 = Vector2Array(1, 1)
        v2 = v1.as_length(1)
        self.assertTrue(v1 is not v2)
        self.assertTrue(v1.length == np.sqrt(2))
        self.assertAlmostEqual(v2.length[0], 1)

        v3 = Vector2Array(np.r_[1, 2], np.r_[1, 2])
        v4 = v3.as_length([1, 2])
        self.assertTrue(np.allclose(v4.length, [1, 2]))

        def f(): v = v3.as_length(5)
        self.assertRaises(ValueError, f)
        v5 = Vector2Array(np.r_[1, 0], np.r_[0, 1])
        self.assertTrue(np.allclose(v5.length, [1, 1]))
        v6 = v5.as_length([-1, 3])
        self.assertTrue(np.allclose(v6, [[-1., -0.], [0., 3.]]))
        self.assertTrue(np.allclose(v6.length, [1, 3]))
        v7 = Vector2Array()

        def f(): v = v7.as_length(5)
        self.assertRaises(ZeroDivisionError, f)
        v8 = v7.as_length(0)
        self.assertTrue(v8.length == 0)
        v9 = Vector2Array(
            [0, 0, 1, 0, 0],
            [1, 1, 0, 0, 0]
        )
        length = [5, 5, 5, 5, 5]

        def f(): v = v9.as_length(length)
        self.assertRaises(ZeroDivisionError, f)
        length = [5, 5, 5, 0, 0]
        v10 = v9.as_length(length)
        self.assertTrue(np.array_equal(length, v10.length))
Example #2
0
    def test_indexing(self):
        v2 = Vector2Array(1, 2)
        self.assertTrue(v2[0, 0] == 1)
        self.assertTrue(v2[0, 1] == 2)
        self.assertTrue(len(v2[0]) == 2)

        def f():
            v2[3]

        self.assertRaises(IndexError, f)

        def f():
            v2[0, 3]

        self.assertRaises(IndexError, f)
        l = []
        for x in v2[0]:
            l.append(x)
        self.assertTrue(np.array_equal(np.array(l), np.r_[1, 2]))
        self.assertTrue(np.array_equal(v2, Vector2Array(l)))
        l = []
        v3 = Vector2Array([[1, 2], [2, 3]])
        for v in v3:
            l.append(v)
        self.assertTrue(np.array_equal(np.array(l), np.array([[1, 2], [2,
                                                                       3]])))
        self.assertTrue(np.array_equal(Vector2Array(l), v3))
        v4 = Vector2Array()
        v4[0, 0] = 1
        v4[0, 1] = 2
        self.assertTrue(np.array_equal(v2, v4))
Example #3
0
    def test_as_unit(self):
        v1 = Vector2Array(1, 0)
        v2 = v1.as_unit()
        self.assertTrue(v1 is not v2)
        self.assertTrue(np.array_equal(v1, v2))
        self.assertTrue(v2.length == 1)
        v3 = Vector2Array(np.r_[1, 2], np.r_[1, 2])
        v4 = v3.as_unit()
        self.assertTrue(np.allclose(v4.length, [1, 1]))
        v5 = Vector2Array(1, 1)
        v6 = v5.as_unit()
        self.assertAlmostEqual(v6.length[0], 1)
        self.assertTrue(v6.x == v6.y)
        v7 = Vector2Array()

        def f():
            v = v7.as_unit()

        self.assertRaises(ZeroDivisionError, f)
        v9 = Vector2Array([0, 0, 1, 0, 0], [0, 1, 0, 0, 0])

        def f():
            v = v9.as_unit()

        self.assertRaises(ZeroDivisionError, f)
Example #4
0
 def test_size(self):
     v1 = Vector2Array()
     self.assertTrue(v1.nV == 1)
     v2 = Vector2Array(np.c_[np.r_[1, 0, 0], np.r_[0, 1, 0]])
     self.assertTrue(v2.nV == 3)
     v3 = Vector2Array([0, 0, 0, 0, 0], [0, 0, 0, 0, 0])
     self.assertTrue(v3.nV == 5)
     v4 = Vector2Array(0, 0)
     self.assertTrue(v4.nV == 1)
Example #5
0
    def test_normalize(self):
        v1 = Vector2Array(5, 0)
        self.assertTrue(v1.length == 5)
        self.assertTrue(v1.normalize() is v1)
        self.assertTrue(v1.length == 1)
        v2 = Vector2Array()

        def f():
            v2.normalize()

        self.assertRaises(ZeroDivisionError, f)
        v3 = Vector2Array([0, 2], [2, 0])
        self.assertTrue(np.array_equal(v3.length, [2, 2]))
        self.assertTrue(v3.normalize() is v3)
        self.assertTrue(np.array_equal(v3.length, [1, 1]))
Example #6
0
    def test_setget(self):
        v1 = Vector2Array(1, 1)
        self.assertTrue(v1.x == 1)
        v1.x = 2
        self.assertTrue(v1.x == 2)
        self.assertTrue(v1.y == 1)
        v1.y = 2
        self.assertTrue(v1.y == 2)

        v2 = Vector2Array([[0, 1], [1, 2]])
        self.assertTrue(np.array_equal(v2.x, [0, 1]))
        v2.x = [0, -1]
        self.assertTrue(np.array_equal(v2.x, [0, -1]))
        self.assertTrue(np.array_equal(v2.y, [1, 2]))
        v2.y = [-1, -2]
        self.assertTrue(np.array_equal(v2.y, [-1, -2]))
Example #7
0
    def test_dot(self):
        v1 = Vector2Array(1, 1)
        v2 = Vector2Array(2, 2)
        self.assertTrue(v1.dot(v2) == 4)
        v1l = Vector2Array(np.r_[1, 1.], np.r_[1, 1.])
        v2l = Vector2Array(np.r_[2, 2.], np.r_[2, 2.])
        self.assertTrue(np.array_equal(v1l.dot(v2l), np.r_[4, 4]))
        self.assertTrue(np.array_equal(v1.dot(v2l), np.r_[4, 4]))
        self.assertTrue(np.array_equal(v1l.dot(v2), np.r_[4, 4]))
        v3 = Vector2Array([3]*4, [3]*4)

        def f(): v3.dot(v2l)
        self.assertRaises(ValueError, f)

        def f(): v3.dot(5)
        self.assertRaises(TypeError, f)
Example #8
0
 def test_view_types(self):
     v1 = Vector2Array(np.random.rand(100, 2))
     self.assertTrue(isinstance(v1, Vector2Array))
     self.assertTrue(isinstance(v1[1:2], Vector2Array))
     self.assertTrue(isinstance(v1[1:50:2], Vector2Array))
     self.assertTrue(isinstance(v1[4], Vector2))
     self.assertTrue(isinstance(v1[4, :], np.ndarray))
     self.assertTrue(isinstance(v1.x, np.ndarray))
     self.assertTrue(isinstance(v1[1:30, :], np.ndarray))
Example #9
0
 def test_ops(self):
     v1 = Vector2Array(1, 1)
     v2 = Vector2Array(2, 2)
     self.assertTrue(np.array_equal(v2 - v1, v1))
     self.assertTrue(np.array_equal(v1 - v2, -v1))
     self.assertTrue(np.array_equal(v1 + v1, v2))
     self.assertTrue(np.array_equal(v1 * v2, v2))
     self.assertTrue(np.array_equal(v2 / v1, v2))
     self.assertTrue(np.array_equal(2 * v1, v2))
     self.assertTrue(np.array_equal(v2 / 2, v1))
     self.assertTrue(np.array_equal(v1 + 1, v2))
     self.assertTrue(np.array_equal(v2 - 1, v1))
     v1 = Vector2Array(np.r_[1, 1.], np.r_[1, 1.])
     v2 = Vector2Array(np.r_[2, 2.], np.r_[2, 2.])
     self.assertTrue(np.array_equal(v2 - v1, v1))
     self.assertTrue(np.array_equal(v1 - v2, -v1))
     self.assertTrue(np.array_equal(v1 + v1, v2))
     self.assertTrue(np.array_equal(v1 * v2, v2))
     self.assertTrue(np.array_equal(v2 / v1, v2))
     self.assertTrue(np.array_equal(2 * v1, v2))
     self.assertTrue(np.array_equal(v2 / 2, v1))
     self.assertTrue(np.array_equal(v1 + 1, v2))
     self.assertTrue(np.array_equal(v2 - 1, v1))
Example #10
0
    def test_view_types(self):
        v1 = Vector2Array(np.random.rand(100, 2))
        self.assertTrue(isinstance(v1, Vector2Array))
        self.assertTrue(isinstance(v1[1:2], Vector2Array))
        self.assertTrue(isinstance(v1[1:50:2], Vector2Array))
        self.assertTrue(isinstance(v1[4], Vector2))
        self.assertTrue(isinstance(v1[4, :], np.ndarray))
        self.assertTrue(isinstance(v1.x, np.ndarray))
        self.assertTrue(isinstance(v1[1:30, :], np.ndarray))

        a1 = np.array([1., 2., 3])
        with self.assertRaises(ValueError):
            a1.view(Vector2)
        with self.assertRaises(ValueError):
            a1.view(Vector2Array)
        a1 = np.array([1., 2.])
        self.assertTrue(isinstance(a1.view(Vector2), Vector2))
        with self.assertRaises(ValueError):
            a1.view(Vector2Array)
        a1 = np.array([[1., 2.]])
        with self.assertRaises(ValueError):
            a1.view(Vector2)
        self.assertTrue(isinstance(a1.view(Vector2Array), Vector2Array))

        with self.assertRaises(ValueError):
            v1.view(Vector3Array)
        self.assertTrue(isinstance(v1.view(Vector2Array), Vector2Array))
        with self.assertRaises(ValueError):
            v1.view(Vector3)
        with self.assertRaises(ValueError):
            v1.view(Vector2)
        v1 = Vector2([1., 2.])
        with self.assertRaises(ValueError):
            v1.view(Vector3Array)
        with self.assertRaises(ValueError):
            v1.view(Vector2Array)
        with self.assertRaises(ValueError):
            v1.view(Vector3)
        self.assertTrue(isinstance(v1.view(Vector2), Vector2))

        v1 = np.kron(Vector2([1., 0.]), np.atleast_2d(np.ones(10)).T)
        self.assertFalse(isinstance(v1, Vector2))
Example #11
0
    def test_as_percent(self):
        v1 = Vector2Array(10, 0)
        v2 = Vector2Array(20, 0)
        self.assertTrue(np.array_equal(v1.as_percent(2), v2))
        self.assertTrue(np.array_equal(v1, Vector2Array(10, 0)))  # not copied
        v3 = Vector2Array([0, 0, 2, 0, 0], [0, 2, 0, 0, 0])
        v4 = v3 * .5
        self.assertTrue(np.array_equal(v3.as_percent(.5), v4))
        v5 = Vector2Array()
        self.assertTrue(np.array_equal(v5.as_percent(100), v5))
        v6 = Vector2Array(5, 5)
        self.assertTrue(np.array_equal(v6.as_percent(0), v5))

        def f():
            v6.as_percent('One Hundred Percent')

        self.assertRaises(TypeError, f)
Example #12
0
    def test_length(self):
        v1 = Vector2Array(1, 1)
        self.assertTrue(v1.length == np.sqrt(2))
        v2 = Vector2Array(np.r_[1, 2], np.r_[1, 2])
        self.assertTrue(np.array_equal(v2.length, np.sqrt(np.r_[2, 8])))
        v3 = Vector2Array(1, 0)
        v3.length = 5
        assert v3.x == 5
        self.assertTrue(v3.length == 5)
        v4 = Vector2Array(np.r_[1, 1], np.r_[0, 0])

        def f():
            v4.length = 5

        self.assertRaises(ValueError, f)
        v5 = Vector2Array(np.r_[1, 0], np.r_[0, 1])
        self.assertTrue(np.array_equal(v5.length, [1, 1]))
        v5.length = [-1, 3]
        self.assertTrue(np.array_equal(v5, [[-1., -0.], [0., 3.]]))
        self.assertTrue(np.array_equal(v5.length, [1, 3]))
        v6 = Vector2Array()
        self.assertTrue(v6.length == 0)

        def f():
            v6.length = 5

        self.assertRaises(ZeroDivisionError, f)
        v6.length = 0
        self.assertTrue(v6.length == 0)
        v7 = Vector2Array([0, 0, 1, 0, 0], [1, 1, 0, 0, 0])
        length = [5, 5, 5, 5, 5]

        def f():
            v7.length = length

        self.assertRaises(ZeroDivisionError, f)
        length = [5, 5, 5, 0, 0]
        v7.length = length
        self.assertTrue(np.array_equal(length, v7.length))
Example #13
0
 def test_copy(self):
     vOrig = Vector2Array()
     vCopy = vOrig.copy()
     self.assertTrue(np.array_equal(vOrig, vCopy))
     self.assertTrue(vOrig is not vCopy)
Example #14
0
 def test_init(self):
     v1 = Vector2Array()
     v2 = Vector2Array(0, 0)
     self.assertTrue(np.array_equal(v1, v2))
     v3 = Vector2Array(v1)
     self.assertTrue(np.array_equal(v1, v3))
     self.assertTrue(v1 is not v3)
     v4 = Vector2Array(np.r_[0, 0])
     self.assertTrue(np.array_equal(v1, v4))
     v5 = Vector2Array(np.c_[np.r_[1, 0], np.r_[0, 1]])
     self.assertTrue(np.array_equal(v5.length, np.r_[1, 1]))
     v6 = Vector2Array(np.r_[1, 0], np.r_[0, 1])
     self.assertTrue(np.array_equal(v6.length, np.r_[1, 1]))
     v7 = Vector2Array([0, 0])
     self.assertTrue(np.array_equal(v1, v7))
     v8 = Vector2Array(x=0, y=0)
     self.assertTrue(np.array_equal(v1, v8))
     v9 = Vector2Array([0, 0, 0, 0, 0], [0, 0, 0, 0, 0])
     v10 = Vector2Array([[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]])
     self.assertTrue(np.array_equal(v9, v10))
     v11 = Vector2Array([[[
         [[0]],
         [[0]],
     ]]])
     self.assertTrue(np.array_equal(v1, v11))
     v12 = Vector2Array([0] * 5, [0] * 5)
     self.assertTrue(np.array_equal(v10, v12))
     v13 = Vector2Array((0, 0))
     self.assertTrue(np.array_equal(v1, v13))
     v14 = Vector2Array(([0, 0], [0, 0]))
     self.assertTrue(np.array_equal(v14, Vector2Array([0] * 2, [0] * 2)))