#include #include using namespace pdfengine; TEST(MatrixTest, DefaultIdentity) { Matrix m; EXPECT_FLOAT_EQ(m.a, 1.0f); EXPECT_FLOAT_EQ(m.b, 0.0f); EXPECT_FLOAT_EQ(m.c, 0.0f); EXPECT_FLOAT_EQ(m.d, 1.0f); EXPECT_FLOAT_EQ(m.e, 0.0f); EXPECT_FLOAT_EQ(m.f, 0.0f); } TEST(MatrixTest, Multiply) { Matrix m1(2.0f, 0.0f, 0.0f, 2.0f, 10.0f, 20.0f); Matrix m2(0.5f, 0.0f, 0.0f, 0.5f, -5.0f, -10.0f); Matrix result = m1.multiply(m2); EXPECT_FLOAT_EQ(result.a, 1.0f); EXPECT_FLOAT_EQ(result.b, 0.0f); EXPECT_FLOAT_EQ(result.c, 0.0f); EXPECT_FLOAT_EQ(result.d, 1.0f); EXPECT_FLOAT_EQ(result.e, 0.0f); EXPECT_FLOAT_EQ(result.f, 0.0f); } TEST(MatrixTest, TransformPoint) { Matrix m(2.0f, 0.0f, 0.0f, 3.0f, 10.0f, 20.0f); float x = 5.0f; float y = 5.0f; m.transform(x, y); EXPECT_FLOAT_EQ(x, 20.0f); EXPECT_FLOAT_EQ(y, 35.0f); } TEST(GraphicsStateStackTest, PushPop) { GraphicsStateStack stack; stack.current().lineWidth = 5.0f; stack.push(); EXPECT_FLOAT_EQ(stack.current().lineWidth, 5.0f); stack.current().lineWidth = 10.0f; EXPECT_FLOAT_EQ(stack.current().lineWidth, 10.0f); stack.pop(); EXPECT_FLOAT_EQ(stack.current().lineWidth, 5.0f); } TEST(GraphicsStateStackTest, PopEmptyProtection) { GraphicsStateStack stack; stack.pop(); stack.current().lineWidth = 2.0f; EXPECT_FLOAT_EQ(stack.current().lineWidth, 2.0f); }