Skip to content

Commit 266e1c4

Browse files
author
zhangjipeng
committed
add some ut
1 parent e6b0f95 commit 266e1c4

3 files changed

Lines changed: 100 additions & 2 deletions

File tree

include/picasso.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ PEXPORT ps_canvas* PICAPI ps_canvas_create_from_mask(ps_mask* mask, const ps_rec
563563
* \param height The height, in pixels, of the required canvas.
564564
* \param pitch The number of bytes per row, of the required canvas.
565565
*
566-
* \return If the function succeeds, the return value is the pointer to a new canvas object.
566+
* \return If the function succeeds, the return value is the pointer to the canvas object.
567567
* If the function fails, the return value is NULL.
568568
*
569569
* \note The data's color format must be equal with target canvas, otherwish will

unit_tests/ps_canvas_api.cpp

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
* Copyright (c) 2025, Zhang Ji Peng
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions are met:
7+
*
8+
* * Redistributions of source code must retain the above copyright notice, this
9+
* list of conditions and the following disclaimer.
10+
*
11+
* * Redistributions in binary form must reproduce the above copyright notice,
12+
* this list of conditions and the following disclaimer in the documentation
13+
* and/or other materials provided with the distribution.
14+
*
15+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21+
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25+
*/
26+
27+
#include "test.h"
28+
29+
class CanvasTest : public ::testing::Test
30+
{
31+
protected:
32+
static void SetUpTestSuite()
33+
{
34+
PS_Init();
35+
}
36+
37+
static void TearDownTestSuite()
38+
{
39+
PS_Shutdown();
40+
}
41+
42+
void SetUp() override
43+
{
44+
}
45+
46+
void TearDown() override
47+
{
48+
}
49+
50+
};
51+
52+
TEST_F(CanvasTest, CanvasWithDataAndCompatible)
53+
{
54+
uint8_t buf[200] = {0};
55+
ps_canvas* newCanvas = ps_canvas_create_with_data(buf, COLOR_FORMAT_RGB565, 10, 10, 20);
56+
ps_canvas* newCanvas2 = ps_canvas_create_compatible(newCanvas, 20, 20);
57+
58+
ASSERT_EQ(ps_canvas_get_format(newCanvas), ps_canvas_get_format(newCanvas2));
59+
60+
ps_size s;
61+
ps_bool r = ps_canvas_get_size(newCanvas2, &s);
62+
ASSERT_FLOAT_EQ(s.w, 20.0f);
63+
ASSERT_FLOAT_EQ(s.h, 20.0f);
64+
ASSERT_EQ(r, True);
65+
66+
ps_canvas_unref(newCanvas);
67+
ps_canvas_unref(newCanvas2);
68+
69+
ASSERT_EQ(STATUS_SUCCEED, ps_last_status());
70+
}

unit_tests/ps_context_api.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class ContextTest : public ::testing::Test
4242
void SetUp() override
4343
{
4444
canvas = ps_canvas_create(COLOR_FORMAT_RGBA, 200, 200);
45-
ctx = ps_context_create(canvas, 0);
45+
ctx = ps_context_create(canvas, NULL);
4646
}
4747

4848
void TearDown() override
@@ -55,6 +55,34 @@ class ContextTest : public ::testing::Test
5555
ps_context* ctx;
5656
};
5757

58+
TEST_F(ContextTest, CreateAndRef)
59+
{
60+
ps_context* ctx2 = ps_context_create(canvas, NULL);
61+
ASSERT_TRUE(ctx2);
62+
ps_context_unref(ctx2);
63+
64+
ps_context* ctx3 = ps_context_create(canvas, ctx);
65+
ASSERT_TRUE(ctx3);
66+
ps_context_unref(ctx3);
67+
68+
ASSERT_EQ(STATUS_SUCCEED, ps_last_status());
69+
}
70+
71+
TEST_F(ContextTest, CanvasAssociation)
72+
{
73+
ps_canvas* newCanvas = ps_canvas_create(COLOR_FORMAT_ARGB, 400, 300);
74+
ps_context_set_canvas(ctx, newCanvas);
75+
ASSERT_EQ(STATUS_SUCCEED, ps_last_status());
76+
77+
ps_canvas* canvas = ps_context_get_canvas(ctx);
78+
ASSERT_EQ(canvas, newCanvas);
79+
ASSERT_EQ(STATUS_SUCCEED, ps_last_status());
80+
81+
ps_canvas_unref(newCanvas);
82+
83+
ASSERT_EQ(STATUS_SUCCEED, ps_last_status());
84+
}
85+
5886
TEST_F(ContextTest, AntialiasAndGamma)
5987
{
6088
// gamma

0 commit comments

Comments
 (0)