• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "gtest/gtest.h"
17 #include "drawing_bitmap.h"
18 #include "drawing_brush.h"
19 #include "drawing_canvas.h"
20 #include "drawing_color.h"
21 #include "drawing_color_filter.h"
22 #include "drawing_filter.h"
23 #include "drawing_font.h"
24 #include "drawing_image.h"
25 #include "drawing_mask_filter.h"
26 #include "drawing_matrix.h"
27 #include "drawing_memory_stream.h"
28 #include "drawing_path.h"
29 #include "drawing_pen.h"
30 #include "drawing_point.h"
31 #include "drawing_rect.h"
32 #include "drawing_region.h"
33 #include "drawing_round_rect.h"
34 #include "drawing_sampling_options.h"
35 #include "drawing_shader_effect.h"
36 #include "drawing_text_blob.h"
37 #include "drawing_typeface.h"
38 #include "drawing_record_cmd.h"
39 #include "utils/scalar.h"
40 #include <random>
41 #include <thread>
42 #include <iomanip>
43 #include <sstream>
44 
45 using namespace testing;
46 using namespace testing::ext;
47 
48 namespace OHOS {
49 namespace Rosen {
50 namespace Drawing {
51 class DrawingCanvasDrawRecordCmdTest : public testing::Test {
52     protected:
53     // 在每个测试用例执行前调用
SetUp()54     void SetUp() override
55     {
56         // 设置代码
57         std::cout << "DrawingCanvasDrawRecordCmdTest Setup code called before each test case." << std::endl;
58         OH_Drawing_ErrorCodeReset();
59         std::cout << "DrawingCanvasDrawRecordCmdTest errorCodeReset before each test case." << std::endl;
60     }
TearDown()61     void TearDown() override
62     {
63         std::cout << "DrawingCanvasDrawRecordCmdTest Setup code called after each test case." << std::endl;
64         OH_Drawing_ErrorCodeReset();
65         std::cout << "DrawingCanvasDrawRecordCmdTest errorCodeReset after each test case." << std::endl;
66     }
67 };
drawCircle1(OH_Drawing_Canvas * canvas,int position)68 void drawCircle1(OH_Drawing_Canvas *canvas, int position)
69 {
70     int x = 10;
71     int radius = 200;
72     OH_Drawing_Point *point = OH_Drawing_PointCreate(x * position + radius, x + radius);
73     OH_Drawing_CanvasDrawCircle(canvas, point, radius);
74     OH_Drawing_PointDestroy(point);
75 }
threadFunctionTest6()76 OH_Drawing_RecordCmd *threadFunctionTest6()
77 {
78     int32_t width = 2;
79     int32_t height = 5;
80     OH_Drawing_RecordCmd *recordCmd = nullptr;
81     OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
82     OH_Drawing_RecordCmdUtils *recordCmdUtils = OH_Drawing_RecordCmdUtilsCreate();
83     OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
84     float penWidth = 1.0f; // pen width 1
85     // 创建一个画笔Pen对象,Pen对象用于形状的边框线绘制
86     OH_Drawing_Pen *cPen = OH_Drawing_PenCreate();
87     OH_Drawing_PenSetAntiAlias(cPen, true);
88     OH_Drawing_PenSetColor(cPen, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0x00, 0x00));
89     OH_Drawing_PenSetWidth(cPen, penWidth);
90     OH_Drawing_PenSetJoin(cPen, LINE_ROUND_JOIN);
91     // 将Pen画笔设置到canvas中
92     OH_Drawing_CanvasAttachPen(canvas, cPen);
93     // 创建一个画刷Brush对象,Brush对象用于形状的填充
94     OH_Drawing_Brush *cBrush = OH_Drawing_BrushCreate();
95     OH_Drawing_BrushSetColor(cBrush, OH_Drawing_ColorSetArgb(0xFF, 0x00, 0xFF, 0x00));
96     // 将Brush画刷设置到canvas中
97     OH_Drawing_CanvasAttachBrush(canvas, cBrush);
98     drawCircle1(canvas, width);
99     OH_Drawing_RecordCmdUtilsFinishRecording(recordCmdUtils, &recordCmd);
100     OH_Drawing_RecordCmdUtilsDestroy(recordCmdUtils);
101     OH_Drawing_BrushDestroy(cBrush);
102     OH_Drawing_PenDestroy(cPen);
103     cBrush = nullptr;
104     cPen = nullptr;
105     return recordCmd;
106 }
107 
108 /*
109  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECORDER_0500
110  * @tc.name: testCanvasDrawRecordCmdNormal
111  * @tc.desc: test for testCanvasDrawRecordCmdNormal.
112  * @tc.size  : SmallTest
113  * @tc.type  : Function
114  * @tc.level : Level 0
115  */
116 HWTEST_F(DrawingCanvasDrawRecordCmdTest, testCanvasDrawRecordCmdNormal, TestSize.Level0) {
117     OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
118     // add assert
119     EXPECT_NE(canvas, nullptr);
120     OH_Drawing_RecordCmd *picture = nullptr;
__anonf42428b20102() 121     std::thread thread([&picture]() { picture = threadFunctionTest6(); });
122     thread.join();
123     if (picture != nullptr) {
124         OH_Drawing_ErrorCode result = OH_Drawing_CanvasDrawRecordCmd(canvas, picture);
125         EXPECT_EQ(result, OH_DRAWING_SUCCESS);
126     }
127 }
128 
129 /*
130  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECORDER_0500
131  * @tc.name: testCanvasDrawRecordCmdABNormal
132  * @tc.desc: test for testCanvasDrawRecordCmdABNormal.
133  * @tc.size  : SmallTest
134  * @tc.type  : Function
135  * @tc.level : Level 0
136  */
137 HWTEST_F(DrawingCanvasDrawRecordCmdTest, testCanvasDrawRecordCmdABNormal, TestSize.Level0) {
138     OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
139     // add assert
140     EXPECT_NE(canvas, nullptr);
141     OH_Drawing_RecordCmd *picture = nullptr;
__anonf42428b20202() 142     std::thread thread([&picture]() { picture = threadFunctionTest6(); });
143     thread.join();
144     OH_Drawing_ErrorCode result1 = OH_Drawing_CanvasDrawRecordCmd(canvas, nullptr);
145     EXPECT_EQ(result1, OH_DRAWING_ERROR_INVALID_PARAMETER);
__anonf42428b20302() 146     std::thread thread1([&picture]() { picture = threadFunctionTest6(); });
147     thread1.join();
148     if (picture != nullptr) {
149         OH_Drawing_ErrorCode result = OH_Drawing_CanvasDrawRecordCmd(nullptr, picture);
150         EXPECT_EQ(result, OH_DRAWING_ERROR_INVALID_PARAMETER);
151 }
152 }
153 } // namespace Drawing
154 } // namespace Rosen
155 } // namespace OHOS
156