def testArithmetic(self): v = Vector3d(1, 2, 3) m = Matrix3d(1, -1, 0, 1, 1, 0, 0, 0, 1) n = Matrix3d(1, 1, 0, -1, 1, 0, 0, 0, 1) self.assertEqual(n * (m * v), Vector3d(2, 4, 3)) self.assertEqual(m + m, m * Matrix3d(2)) self.assertEqual(m, m * Matrix3d(2) - m)
def testInner(self): m = Matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9) i = Matrix3d(1) self.assertEqual(m.inner(i), i.inner(m)) self.assertEqual(m.inner(i), 15.0)
def testInverse(self): m = Matrix3d(4, 4, 4, -1, 1, 0, 1, -1, -1) n = Matrix3d(0.125, 0, 0.5, 0.125, 1, 0.5, 0, -1, -1) i = m.inverse() self.assertEqual(i, n) self.assertEqual(i.inverse(), m) self.assertEqual(i * m, Matrix3d(1)) self.assertEqual(m * i, Matrix3d(1))
def testTranspose(self): m = Matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9) n = Matrix3d(1, 4, 7, 2, 5, 8, 3, 6, 9) self.assertEqual(m.transpose(), n) self.assertEqual(m.transpose().transpose(), m)
def testAccess(self): m = Matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9) self.assertEqual(len(m), 3) self.assertEqual(m[0], Vector3d(1, 2, 3)) self.assertEqual(m[1], Vector3d(4, 5, 6)) self.assertEqual(m[2], Vector3d(7, 8, 9)) self.assertEqual(m[0], m.getRow(0)) self.assertEqual(m[1], m.getRow(1)) self.assertEqual(m[2], m.getRow(2)) n = m.transpose() self.assertEqual(m.getColumn(0), n[0]) self.assertEqual(m.getColumn(1), n[1]) self.assertEqual(m.getColumn(2), n[2]) for r in range(3): for c in range(3): self.assertEqual(m[r, c], r*3 + c + 1) for i in (-4, 3): with self.assertRaises(IndexError): m.getRow(i) with self.assertRaises(IndexError): m.getColumn(i) for i in [-4, 3, (-4, 1), (3, 1), (1, -4), (1, 3)]: with self.assertRaises(IndexError): m[i]
def testIter(self): m = Matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9) r = 0 for row in m: self.assertEqual(row, Vector3d(*range(r*3 + 1, r*3 + 4))) r += 1
def testString(self): m = Matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9) self.assertEqual(str(m), '[[1.0, 2.0, 3.0],\n' ' [4.0, 5.0, 6.0],\n' ' [7.0, 8.0, 9.0]]') self.assertEqual(repr(m), 'Matrix3d(1.0, 2.0, 3.0,\n' ' 4.0, 5.0, 6.0,\n' ' 7.0, 8.0, 9.0)') self.assertEqual(m, eval(repr(m), dict(Matrix3d=Matrix3d)))
def testNorm(self): m = Matrix3d(1, 2, 3, 4, 5, 6, 7, 0, 2) self.assertEqual(m.getSquaredNorm(), 144.0) self.assertEqual(m.getNorm(), 12.0)
def testComparison(self): m = Matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9) self.assertEqual(m, m) self.assertNotEqual(m, Matrix3d(2))
def testConstruction(self): self.assertEqual(Matrix3d().getSquaredNorm(), 0) self.assertEqual(Matrix3d(1, 0, 0, 0, 1, 0, 0, 0, 1), Matrix3d(1))
def testPickle(self): m = Matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9) n = pickle.loads(pickle.dumps(m)) self.assertEqual(m, n)
def testCwiseProduct(self): m = Matrix3d(1, 2, 3, 4, 1, 6, 7, 8, 1) self.assertEqual(m.cwiseProduct(Matrix3d(2)), Matrix3d(2))