Files
pdf/engine/tests/graphics_state_test.cpp
2026-06-22 15:18:47 +05:30

60 lines
1.5 KiB
C++

#include <gtest/gtest.h>
#include <pdfengine/graphics_state.hpp>
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);
}