diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2025-03-23 16:55:59 +0100 |
|---|---|---|
| committer | j-p <jp_bruyere@hotmail.com> | 2025-03-24 19:12:00 +0100 |
| commit | 9124b05c3e3746f2103801c70944d8f0159c71f3 (patch) | |
| tree | bf5625b423b41c1088560231542f0b12bbd46ac3 /gunit_tests/patternDraw.cpp | |
| parent | c5cb5292f74ec8adf94924049b19fc90cb7f3357 (diff) | |
unit tests wip
Diffstat (limited to 'gunit_tests/patternDraw.cpp')
| -rw-r--r-- | gunit_tests/patternDraw.cpp | 88 |
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(); +} |