diff --git a/test/meson.build b/test/meson.build index 61286fc0..949c9263 100644 --- a/test/meson.build +++ b/test/meson.build @@ -17,3 +17,17 @@ canvas_testsuite = executable('canvasTestSuite', ) test('Canvas Testsuite', canvas_testsuite) + +paint_test_sources = [ + 'testsuite.cpp', + 'test_paint.cpp', + ] + +paint_testsuite = executable('paintTestSuite', + paint_test_sources, + include_directories : headers, + override_options : override_default, + dependencies : [gtest_dep, thorvg_lib_dep], + ) + +test('Paint Testsuite', paint_testsuite) diff --git a/test/test_paint.cpp b/test/test_paint.cpp new file mode 100644 index 00000000..f6b8b540 --- /dev/null +++ b/test/test_paint.cpp @@ -0,0 +1,56 @@ +#include +#include +#include +#include + +class PaintTest : public ::testing::Test { +public: + void SetUp() { + auto threads = std::thread::hardware_concurrency(); + //Initialize ThorVG Engine + if (tvg::Initializer::init(tvgEngine, threads) == tvg::Result::Success) { + swCanvas = tvg::SwCanvas::gen(); + + scene = tvg::Scene::gen(); + + shape = tvg::Shape::gen(); + } + } + void TearDown() { + + //Terminate ThorVG Engine + tvg::Initializer::term(tvgEngine); + } +public: + std::unique_ptr swCanvas; + std::unique_ptr scene; + std::unique_ptr shape; + tvg::CanvasEngine tvgEngine = tvg::CanvasEngine::Sw; +}; + +TEST_F(PaintTest, GenerateShape) { + ASSERT_TRUE(swCanvas != nullptr); + ASSERT_TRUE(shape != nullptr); +} + +TEST_F(PaintTest, GenerateScene) { + ASSERT_TRUE(swCanvas != nullptr); + ASSERT_TRUE(scene != nullptr); +} + +TEST_F(PaintTest, SceneBounds) { + ASSERT_TRUE(swCanvas != nullptr); + ASSERT_TRUE(scene != nullptr); + + ASSERT_EQ(shape->appendRect(10.0, 20.0, 100.0, 200.0, 0, 0), tvg::Result::Success); + + ASSERT_EQ(scene->push(std::move(shape)), tvg::Result::Success); + + float x, y, w, h; + ASSERT_EQ(scene->bounds(&x, &y, &w, &h), tvg::Result::Success); + ASSERT_EQ(x, 10.0); + ASSERT_EQ(y, 20.0); + ASSERT_EQ(w, 100.0); + ASSERT_EQ(h, 200.0); +} +