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