• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "drawing_error_code.h"
17 #include "drawing_memory_stream.h"
18 #include "drawing_path.h"
19 #include "drawing_typeface.h"
20 #include "gtest/gtest.h"
21 
22 #ifdef RS_ENABLE_VK
23 #include "platform/ohos/backend/rs_vulkan_context.h"
24 #endif
25 
26 using namespace testing;
27 using namespace testing::ext;
28 
29 namespace OHOS {
30 namespace Rosen {
31 namespace Drawing {
32 class NativeDrawingTypefaceTest : public testing::Test {
33 public:
34     static void SetUpTestCase();
35     static void TearDownTestCase();
36     void SetUp() override;
37     void TearDown() override;
38 };
39 
SetUpTestCase()40 void NativeDrawingTypefaceTest::SetUpTestCase()
41 {
42 #ifdef RS_ENABLE_VK
43     RsVulkanContext::SetRecyclable(false);
44 #endif
45 }
46 
TearDownTestCase()47 void NativeDrawingTypefaceTest::TearDownTestCase() {}
SetUp()48 void NativeDrawingTypefaceTest::SetUp() {}
TearDown()49 void NativeDrawingTypefaceTest::TearDown() {}
50 
51 /*
52  * @tc.name: OH_Drawing_TypefaceCreateFromFile
53  * @tc.desc: Test OH_Drawing_TypefaceCreateFromFile
54  * @tc.type: FUNC
55  */
56 HWTEST_F(NativeDrawingTypefaceTest, OH_Drawing_TypefaceCreateFromFile, TestSize.Level1)
57 {
58     const char* path = "oom_score_adj";
59     ASSERT_TRUE(path != nullptr);
60     OH_Drawing_Typeface* typeface = OH_Drawing_TypefaceCreateFromFile(path, 0);
61     ASSERT_TRUE(typeface == nullptr);
62 }
63 
64 /*
65  * @tc.name: OH_Drawing_TypefaceCreateFromFile
66  * @tc.desc: Test OH_Drawing_TypefaceCreateFromFile
67  * @tc.type: FUNC
68  */
69 HWTEST_F(NativeDrawingTypefaceTest, OH_Drawing_TypefaceCreateFromStream, TestSize.Level1)
70 {
71     char testData[] = "Hello";
72     size_t length = sizeof(testData) - 1;
73     OH_Drawing_MemoryStream* memoryStream = OH_Drawing_MemoryStreamCreate(testData, length, false);
74     ASSERT_TRUE(memoryStream != nullptr);
75     OH_Drawing_Typeface* typeface = OH_Drawing_TypefaceCreateFromStream(memoryStream, 1);
76     OH_Drawing_TypefaceCreateFromStream(nullptr, 1);
77     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
78     ASSERT_TRUE(typeface == nullptr);
79 }
80 
81 /*
82  * @tc.name: OH_Drawing_TypefaceDestroy
83  * @tc.desc: Test OH_Drawing_TypefaceDestroy
84  * @tc.type: FUNC
85  */
86 HWTEST_F(NativeDrawingTypefaceTest, OH_Drawing_TypefaceDestroy, TestSize.Level1)
87 {
88     OH_Drawing_Typeface* typeface = OH_Drawing_TypefaceCreateDefault();
89     ASSERT_TRUE(typeface != nullptr);
90     OH_Drawing_TypefaceDestroy(typeface);
91     ASSERT_TRUE(typeface != nullptr);
92 }
93 
94 /*
95  * @tc.name: OH_Drawing_FontArgumentsCreate
96  * @tc.desc: Test OH_Drawing_FontArgumentsCreate
97  * @tc.type: FUNC
98  */
99 HWTEST_F(NativeDrawingTypefaceTest, OH_Drawing_FontArgumentsCreate, TestSize.Level1)
100 {
101     OH_Drawing_FontArguments *fontArgs = OH_Drawing_FontArgumentsCreate();
102     ASSERT_TRUE(fontArgs != nullptr);
103 }
104 
105 /*
106  * @tc.name: OH_Drawing_FontArgumentsAddVariation
107  * @tc.desc: Test OH_Drawing_FontArgumentsAddVariation
108  * @tc.type: FUNC
109  */
110 HWTEST_F(NativeDrawingTypefaceTest, OH_Drawing_FontArgumentsAddVariation, TestSize.Level1)
111 {
112     OH_Drawing_FontArguments *fontArgs = OH_Drawing_FontArgumentsCreate();
113     ASSERT_TRUE(fontArgs != nullptr);
114     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
115     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArgs, "wght", 100); // 100 means coordinate value
116     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
117     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArgs, "wght", 10000); // 10000 means coordinate value
118     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
119     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArgs, "wght", 0);
120     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
121     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArgs, "wght", -100); // -100 means coordinate value
122     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
123     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(nullptr, "wght", 100); // 100 means coordinate value
124     EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
125     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArgs, "weight", 100); // 100 means coordinate value
126     EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
127     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArgs, nullptr, 100); // 100 means coordinate value
128     EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
129     OH_Drawing_FontArgumentsDestroy(fontArgs);
130 }
131 
132 /*
133  * @tc.name: OH_Drawing_FontArgumentsDestroy
134  * @tc.desc: Test OH_Drawing_FontArgumentsDestroy
135  * @tc.type: FUNC
136  */
137 HWTEST_F(NativeDrawingTypefaceTest, OH_Drawing_FontArgumentsDestroy, TestSize.Level1)
138 {
139     OH_Drawing_FontArguments *fontArgs = OH_Drawing_FontArgumentsCreate();
140     ASSERT_TRUE(fontArgs != nullptr);
141     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
142     drawingErrorCode = OH_Drawing_FontArgumentsDestroy(nullptr);
143     EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
144     drawingErrorCode = OH_Drawing_FontArgumentsDestroy(fontArgs);
145     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
146 }
147 
148 /*
149  * @tc.name: OH_Drawing_TypefaceCreateFromFileWithArguments
150  * @tc.desc: Test OH_Drawing_TypefaceCreateFromFileWithArguments
151  * @tc.type: FUNC
152  */
153 HWTEST_F(NativeDrawingTypefaceTest, OH_Drawing_TypefaceCreateFromFileWithArguments, TestSize.Level1)
154 {
155     OH_Drawing_FontArguments *fontArgs = OH_Drawing_FontArgumentsCreate();
156     ASSERT_TRUE(fontArgs != nullptr);
157     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
158     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArgs, "wght", 100); // 100 means coordinate value
159     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
160     OH_Drawing_Typeface *typeface =
161         OH_Drawing_TypefaceCreateFromFileWithArguments(nullptr, fontArgs);
162     ASSERT_TRUE(typeface == nullptr);
163     typeface = OH_Drawing_TypefaceCreateFromFileWithArguments("/system/fonts/HarmonyOS_Sans.ttf", nullptr);
164     ASSERT_TRUE(typeface == nullptr);
165     typeface = OH_Drawing_TypefaceCreateFromFileWithArguments("/system/fonts/HarmonyOS_Sans.ttf", fontArgs);
166     ASSERT_TRUE(typeface != nullptr);
167     OH_Drawing_Typeface *typeface1 =
168         OH_Drawing_TypefaceCreateFromFileWithArguments("/system/fonts/HarmonyOS_Sans_Digit.ttf", fontArgs);
169     ASSERT_TRUE(typeface1 != nullptr);
170     OH_Drawing_Typeface *typeface2 =
171         OH_Drawing_TypefaceCreateFromFileWithArguments("/system/fonts/HarmonyOS_Sans_TC.ttf", fontArgs);
172     ASSERT_TRUE(typeface2 != nullptr);
173 
174     OH_Drawing_FontArgumentsDestroy(fontArgs);
175     OH_Drawing_TypefaceDestroy(typeface);
176     OH_Drawing_TypefaceDestroy(typeface1);
177     OH_Drawing_TypefaceDestroy(typeface2);
178 }
179 
180 /*
181  * @tc.name: OH_Drawing_TypefaceCreateFromCurrent
182  * @tc.desc: Test OH_Drawing_TypefaceCreateFromCurrent001
183  * @tc.type: FUNC
184  */
185 HWTEST_F(NativeDrawingTypefaceTest, OH_Drawing_TypefaceCreateFromCurrent001, TestSize.Level1)
186 {
187     OH_Drawing_FontArguments *fontArgs = OH_Drawing_FontArgumentsCreate();
188     ASSERT_TRUE(fontArgs != nullptr);
189     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
190     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArgs, "wght", 100); // 100 means coordinate value
191     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
192 
193     OH_Drawing_Typeface *current = OH_Drawing_TypefaceCreateFromFile("/system/fonts/HarmonyOS_Sans.ttf", 0);
194     ASSERT_TRUE(current != nullptr);
195     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromCurrent(current, nullptr);
196     ASSERT_TRUE(typeface == nullptr);
197     typeface = OH_Drawing_TypefaceCreateFromCurrent(nullptr, fontArgs);
198     ASSERT_TRUE(typeface == nullptr);
199     typeface = OH_Drawing_TypefaceCreateFromCurrent(current, fontArgs);
200     ASSERT_TRUE(typeface != nullptr);
201 
202     OH_Drawing_FontArgumentsDestroy(fontArgs);
203     OH_Drawing_TypefaceDestroy(current);
204     OH_Drawing_TypefaceDestroy(typeface);
205 }
206 
207 /*
208  * @tc.name: OH_Drawing_TypefaceCreateFromCurrent
209  * @tc.desc: Test OH_Drawing_TypefaceCreateFromCurrent002
210  * @tc.type: FUNC
211  */
212 HWTEST_F(NativeDrawingTypefaceTest, OH_Drawing_TypefaceCreateFromCurrent002, TestSize.Level1)
213 {
214     OH_Drawing_FontArguments *fontArgs = OH_Drawing_FontArgumentsCreate();
215     ASSERT_TRUE(fontArgs != nullptr);
216     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
217     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArgs, "wght", 800); // 800 means coordinate value
218     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
219 
220     OH_Drawing_Typeface *current = OH_Drawing_TypefaceCreateFromFile("/system/fonts/HarmonyOS_Sans_Digit.ttf", 0);
221     ASSERT_TRUE(current != nullptr);
222     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromCurrent(current, fontArgs);
223     ASSERT_TRUE(typeface == nullptr);
224 
225     OH_Drawing_FontArgumentsDestroy(fontArgs);
226     OH_Drawing_TypefaceDestroy(current);
227 }
228 } // namespace Drawing
229 } // namespace Rosen
230 } // namespace OHOS