void GeometryTest::MatrixStackTest() { MatrixStack matrixStack; CPPUNIT_ASSERT(matrixStack.stack.size() == 1); Matrix4f m1; m1 << 1.0f, 0.0f, 0.0f, 4.0f, 0.0f, 1.0f, 0.0f, 4.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f; Matrix4f m2; m2 << 1.0f, 0.0f, 0.0f, 5.0f, 0.0f, 1.0f, 0.0f, 5.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f; matrixStack.Push(m1); CPPUNIT_ASSERT(matrixStack.stack.size() == 2); CPPUNIT_ASSERT(matrixStack.GetTop() == m1); matrixStack.Push(m2); CPPUNIT_ASSERT(matrixStack.stack.size() == 3); CPPUNIT_ASSERT(matrixStack.GetTop() == m2); matrixStack.Push(m1); CPPUNIT_ASSERT(matrixStack.stack.size() == 4); CPPUNIT_ASSERT(matrixStack.GetTop() == m1); matrixStack.MultiplyWithTop(m2); CPPUNIT_ASSERT(matrixStack.stack.size() == 4); CPPUNIT_ASSERT(matrixStack.GetTop() == (m1 * m2)); matrixStack.Pop(); CPPUNIT_ASSERT(matrixStack.stack.size() == 3); matrixStack.Pop(); CPPUNIT_ASSERT(matrixStack.stack.size() == 2); matrixStack.Pop(); CPPUNIT_ASSERT(matrixStack.stack.size() == 1); matrixStack.Pop(); CPPUNIT_ASSERT(matrixStack.stack.size() == 0); }