summaryrefslogtreecommitdiffstatsci
path: root/gunit_tests/patternDraw.cpp
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2025-03-23 16:55:59 +0100
committerj-p <jp_bruyere@hotmail.com>2025-03-24 19:12:00 +0100
commit9124b05c3e3746f2103801c70944d8f0159c71f3 (patch)
treebf5625b423b41c1088560231542f0b12bbd46ac3 /gunit_tests/patternDraw.cpp
parentc5cb5292f74ec8adf94924049b19fc90cb7f3357 (diff)
unit tests wip
Diffstat (limited to 'gunit_tests/patternDraw.cpp')
-rw-r--r--gunit_tests/patternDraw.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/gunit_tests/patternDraw.cpp b/gunit_tests/patternDraw.cpp
new file mode 100644
index 0000000..e550340
--- /dev/null
+++ b/gunit_tests/patternDraw.cpp
@@ -0,0 +1,88 @@
+#include "drawTestBase.h"
+
+class PatternDrawTest : public DrawTestBase {
+
+ protected:
+ fs::path imgPath = fs::path(GTEST_DATA_ROOT) / "miroir2.png";
+ VkvgSurface imgSurf;
+
+ void SetUp() override {
+ surf = vkvg_surface_create(dev, 512, 512);
+ imgSurf = vkvg_surface_create_from_image(dev, (char*)imgPath.c_str());
+ }
+ void TearDown() override {
+ vkvg_surface_destroy(imgSurf);
+ DrawTestBase::TearDown();
+ }
+};
+TEST_F(PatternDrawTest, References) {
+ EXPECT_EQ(VKVG_STATUS_NULL_POINTER, vkvg_pattern_status(NULL));
+ EXPECT_EQ(0, vkvg_pattern_get_reference_count(NULL));
+ EXPECT_NO_FATAL_FAILURE(vkvg_pattern_reference(NULL));
+
+ VkvgPattern pat = vkvg_pattern_create_for_surface(NULL);
+ EXPECT_EQ(VKVG_STATUS_NULL_POINTER, vkvg_pattern_status(pat));
+
+ pat = vkvg_pattern_create_linear(0,0,0,0);
+ EXPECT_EQ(VKVG_STATUS_SUCCESS, vkvg_pattern_status(pat));
+ EXPECT_EQ(1, vkvg_pattern_get_reference_count(pat));
+ vkvg_pattern_reference(pat);
+ EXPECT_EQ(2, vkvg_pattern_get_reference_count(pat));
+
+ EXPECT_NO_FATAL_FAILURE(vkvg_pattern_destroy(NULL));
+ vkvg_pattern_destroy(pat);
+ EXPECT_EQ(1, vkvg_pattern_get_reference_count(pat));
+ vkvg_pattern_destroy(pat);
+ //EXPECT_EQ(NULL, pat);
+}
+
+TEST_F(PatternDrawTest, PaintPattern) {
+
+ VkvgContext ctx = vkvg_create(surf);
+ VkvgPattern pat = vkvg_pattern_create_for_surface(imgSurf);
+ EXPECT_EQ(VKVG_STATUS_SUCCESS, vkvg_pattern_status(pat));
+ EXPECT_EQ(1, vkvg_pattern_get_reference_count(pat));
+ EXPECT_EQ(2, vkvg_surface_get_reference_count(imgSurf));
+ vkvg_set_source(ctx, pat);
+ EXPECT_EQ(2, vkvg_pattern_get_reference_count(pat));
+ vkvg_paint(ctx);
+ vkvg_pattern_destroy(pat);
+ EXPECT_EQ(1, vkvg_pattern_get_reference_count(pat));
+ vkvg_destroy(ctx);
+
+ compareWithRefImage();
+}
+TEST_F(PatternDrawTest, PaintPatternRepeat) {
+ VkvgContext ctx = vkvg_create(surf);
+ VkvgPattern pat = vkvg_pattern_create_for_surface(imgSurf);
+ vkvg_pattern_set_extend(pat, VKVG_EXTEND_REPEAT);
+ vkvg_set_source(ctx, pat);
+ vkvg_paint(ctx);
+ vkvg_pattern_destroy(pat);
+ vkvg_destroy(ctx);
+
+ compareWithRefImage();
+}
+TEST_F(PatternDrawTest, PaintPatternRepeatScaled) {
+ VkvgContext ctx = vkvg_create(surf);
+ vkvg_scale(ctx, 0.2f, 0.2f);
+ VkvgPattern pat = vkvg_pattern_create_for_surface(imgSurf);
+ vkvg_pattern_set_extend(pat, VKVG_EXTEND_REPEAT);
+ vkvg_set_source(ctx, pat);
+ vkvg_paint(ctx);
+ vkvg_pattern_destroy(pat);
+ vkvg_destroy(ctx);
+
+ compareWithRefImage();
+}
+TEST_F(PatternDrawTest, PaintPatternPad) {
+ VkvgContext ctx = vkvg_create(surf);
+ VkvgPattern pat = vkvg_pattern_create_for_surface(imgSurf);
+ vkvg_pattern_set_extend(pat, VKVG_EXTEND_PAD);
+ vkvg_set_source(ctx, pat);
+ vkvg_paint(ctx);
+ vkvg_pattern_destroy(pat);
+ vkvg_destroy(ctx);
+
+ compareWithRefImage();
+}