1 /*
2  * Copyright (c) 2024 Huawei Device 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, Hardware
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 
18 #include "drawing_canvas.h"
19 #include "drawing_error_code.h"
20 #include "drawing_record_cmd.h"
21 using namespace testing;
22 using namespace testing::ext;
23 
24 namespace OHOS {
25 namespace Rosen {
26 namespace Drawing {
27 class NativeDrawingRecordCmdTest : public testing::Test {
28 public:
29     static void SetUpTestCase();
30     static void TearDownTestCase();
31     void SetUp() override;
32     void TearDown() override;
33 };
34 
SetUpTestCase()35 void NativeDrawingRecordCmdTest::SetUpTestCase() {}
TearDownTestCase()36 void NativeDrawingRecordCmdTest::TearDownTestCase() {}
SetUp()37 void NativeDrawingRecordCmdTest::SetUp() {}
TearDown()38 void NativeDrawingRecordCmdTest::TearDown() {}
39 
40 /*
41  * @tc.name: NativeRecordCmdTest_RecordCmdUtilsCreate
42  * @tc.desc: test for OH_Drawing_RecordCmdUtilsCreate and OH_Drawing_RecordCmdUtilsDestroy.
43  * @tc.type: FUNC
44  * @tc.require: AR000GTO5R
45  */
46 HWTEST_F(NativeDrawingRecordCmdTest, NativeRecordCmdTest_RecordCmdUtilsCreate, TestSize.Level1)
47 {
48     OH_Drawing_RecordCmdUtils* recordCmdUtils = OH_Drawing_RecordCmdUtilsCreate();
49     EXPECT_TRUE(recordCmdUtils != nullptr);
50     OH_Drawing_ErrorCode code = OH_Drawing_RecordCmdUtilsDestroy(recordCmdUtils);
51     EXPECT_EQ(code, OH_DRAWING_SUCCESS);
52     code = OH_Drawing_RecordCmdUtilsDestroy(nullptr);
53     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
54 }
55 
56 /*
57  * @tc.name: NativeRecordCmdTest_RecordCmdUtilsBeginRecording001
58  * @tc.desc: test for OH_Drawing_RecordCmdUtilsBeginRecording.
59  * @tc.type: FUNC
60  * @tc.require: AR000GTO5R
61  */
62 HWTEST_F(NativeDrawingRecordCmdTest, NativeRecordCmdTest_RecordCmdUtilsBeginRecording001, TestSize.Level1)
63 {
64     int32_t width = 10; // canvas width is 10
65     int32_t height = 20; // canvas height is 20
66     OH_Drawing_RecordCmdUtils* recordCmdUtils = OH_Drawing_RecordCmdUtilsCreate();
67     EXPECT_TRUE(recordCmdUtils != nullptr);
68     OH_Drawing_Canvas* canvas = nullptr;
69     OH_Drawing_ErrorCode code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
70     EXPECT_EQ(code, OH_DRAWING_SUCCESS);
71     EXPECT_TRUE(canvas != nullptr);
72     int32_t width1 = OH_Drawing_CanvasGetWidth(canvas);
73     int32_t height2 = OH_Drawing_CanvasGetHeight(canvas);
74     EXPECT_TRUE(width1 == width);
75     EXPECT_TRUE(height2 == height);
76 
77     code = OH_Drawing_RecordCmdUtilsBeginRecording(nullptr, width, height, &canvas);
78     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
79 
80     code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, nullptr);
81     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
82 
83     code = OH_Drawing_RecordCmdUtilsBeginRecording(nullptr, width, height, nullptr);
84     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
85 
86     code = OH_Drawing_RecordCmdUtilsDestroy(recordCmdUtils);
87     EXPECT_EQ(code, OH_DRAWING_SUCCESS);
88 }
89 
90 /*
91  * @tc.name: NativeRecordCmdTest_RecordCmdUtilsBeginRecording002
92  * @tc.desc: test for OH_Drawing_RecordCmdUtilsBeginRecording.
93  * @tc.type: FUNC
94  * @tc.require: AR000GTO5R
95  */
96 HWTEST_F(NativeDrawingRecordCmdTest, NativeRecordCmdTest_RecordCmdUtilsBeginRecording002, TestSize.Level1)
97 {
98     int32_t width = -1; // canvas width is -1
99     int32_t height = 20; // canvas height is 20
100     OH_Drawing_RecordCmdUtils* recordCmdUtils = OH_Drawing_RecordCmdUtilsCreate();
101     EXPECT_TRUE(recordCmdUtils != nullptr);
102     OH_Drawing_Canvas* canvas = nullptr;
103     OH_Drawing_ErrorCode code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
104     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
105 
106     width = 10; // canvas width is 10
107     height = -1; // canvas height is -1
108     code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
109     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
110 
111     width = -1; // canvas width is -1
112     height = -2; // canvas height is -2
113     canvas = nullptr;
114     code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
115     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
116 
117     code = OH_Drawing_RecordCmdUtilsDestroy(recordCmdUtils);
118     EXPECT_EQ(code, OH_DRAWING_SUCCESS);
119 }
120 
121 /*
122  * @tc.name: NativeRecordCmdTest_RecordCmdUtilsBeginRecording003
123  * @tc.desc: test for OH_Drawing_RecordCmdUtilsBeginRecording.
124  * @tc.type: FUNC
125  * @tc.require: AR000GTO5R
126  */
127 HWTEST_F(NativeDrawingRecordCmdTest, NativeRecordCmdTest_RecordCmdUtilsBeginRecording003, TestSize.Level1)
128 {
129     int32_t width = 0; // canvas width is 0
130     int32_t height = 20; // canvas height is 20
131     OH_Drawing_RecordCmdUtils* recordCmdUtils = OH_Drawing_RecordCmdUtilsCreate();
132     EXPECT_TRUE(recordCmdUtils != nullptr);
133     OH_Drawing_Canvas* canvas = nullptr;
134     OH_Drawing_ErrorCode code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
135     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
136 
137     width = 10; // canvas width is 10
138     height = 0; // canvas width is 0
139     code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
140     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
141 
142     width = -1; // canvas width is -1
143     height = 0; // canvas width is 0
144     code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
145     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
146 
147     width = 0; // canvas width is 0
148     height = -1; // canvas width is -1
149     code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
150     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
151 
152     width = 0; // canvas width is 0
153     height = 0; // canvas width is -1
154     code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
155     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
156 
157     code = OH_Drawing_RecordCmdUtilsDestroy(recordCmdUtils);
158     EXPECT_EQ(code, OH_DRAWING_SUCCESS);
159 }
160 
161 /*
162  * @tc.name: NativeRecordCmdTest_RecordCmdUtilsFinishRecording001
163  * @tc.desc: test for OH_Drawing_RecordCmdUtilsFinishRecording.
164  * @tc.type: FUNC
165  * @tc.require: AR000GTO5R
166  */
167 HWTEST_F(NativeDrawingRecordCmdTest, NativeRecordCmdTest_RecordCmdUtilsFinishRecording001, TestSize.Level1)
168 {
169     int32_t width = 10;
170     int32_t height = 20;
171     OH_Drawing_RecordCmd* recordCmd = nullptr;
172     OH_Drawing_Canvas* canvas = nullptr;
173     OH_Drawing_RecordCmdUtils* recordCmdUtils = OH_Drawing_RecordCmdUtilsCreate();
174     EXPECT_TRUE(recordCmdUtils != nullptr);
175     OH_Drawing_ErrorCode code = OH_Drawing_RecordCmdUtilsFinishRecording(recordCmdUtils, &recordCmd);
176     EXPECT_TRUE(code != OH_DRAWING_SUCCESS);
177 
178     code = OH_Drawing_RecordCmdUtilsBeginRecording(recordCmdUtils, width, height, &canvas);
179     EXPECT_TRUE(canvas != nullptr);
180     code = OH_Drawing_RecordCmdUtilsFinishRecording(recordCmdUtils, &recordCmd);
181     EXPECT_TRUE(code == OH_DRAWING_SUCCESS);
182     EXPECT_TRUE(recordCmd != nullptr);
183     code = OH_Drawing_RecordCmdDestroy(recordCmd);
184     EXPECT_EQ(code, OH_DRAWING_SUCCESS);
185 
186     code = OH_Drawing_RecordCmdUtilsFinishRecording(recordCmdUtils, nullptr);
187     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
188 
189     code = OH_Drawing_RecordCmdUtilsFinishRecording(nullptr, &recordCmd);
190     EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
191 
192     code = OH_Drawing_RecordCmdUtilsDestroy(recordCmdUtils);
193     EXPECT_EQ(code, OH_DRAWING_SUCCESS);
194 }
195 } // namespace Drawing
196 } // namespace Rosen
197 } // namespace OHOS
198