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 "drawing_bitmap.h" 17 #include "drawing_brush.h" 18 #include "drawing_canvas.h" 19 #include "drawing_color.h" 20 #include "drawing_color_filter.h" 21 #include "drawing_filter.h" 22 #include "drawing_font.h" 23 #include "drawing_image.h" 24 #include "drawing_mask_filter.h" 25 #include "drawing_matrix.h" 26 #include "drawing_memory_stream.h" 27 #include "drawing_path.h" 28 #include "drawing_pen.h" 29 #include "drawing_point.h" 30 #include "drawing_rect.h" 31 #include "drawing_region.h" 32 #include "drawing_round_rect.h" 33 #include "drawing_sampling_options.h" 34 #include "drawing_shader_effect.h" 35 #include "drawing_text_blob.h" 36 #include "drawing_typeface.h" 37 #include "utils/scalar.h" 38 #include "gtest/gtest.h" 39 #include <random> 40 41 #define NUMBER_10 10 42 #define NUMBER_100 100 43 #define NUMBER_400_1 400.1 44 #define NUMBER_900 900 45 #define NUMBER_1000000 1000000 46 47 48 using namespace testing; 49 using namespace testing::ext; 50 51 namespace OHOS { 52 namespace Rosen { 53 namespace Drawing { 54 class DrawingNativeFontTest : public testing::Test {}; 55 56 /* 57 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2000 58 * @tc.name: testFontArgumentsCreateNormal 59 * @tc.desc: Test for testFontArgumentsCreateNormal. 60 * @tc.size : SmallTest 61 * @tc.type : Function 62 * @tc.level : Level 0 63 */ 64 HWTEST_F(DrawingNativeFontTest, testFontArgumentsCreateNormal, TestSize.Level0) { 65 // 1. OH_Drawing_FontArgumentsCreate 66 OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate(); 67 OH_Drawing_FontArgumentsDestroy(fontArguments); 68 } 69 70 /* 71 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2100 72 * @tc.name: testFontArgumentsAddVariationNormal 73 * @tc.desc: test for testFontArgumentsAddVariationNormal. 74 * @tc.size : SmallTest 75 * @tc.type : Function 76 * @tc.level : Level 3 77 */ 78 HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationNormal, TestSize.Level0) { 79 // 1. OH_Drawing_FontArgumentsCreate 80 OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate(); 81 // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS 82 OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER; 83 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", 0); 84 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 85 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", -1); 86 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 87 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100); 88 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 89 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_400_1); 90 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 91 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_900); 92 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 93 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_1000000); 94 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 95 } 96 97 /* 98 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2101 99 * @tc.name: testFontArgumentsAddVariationNull 100 * @tc.desc: test for testFontArgumentsAddVariationNull. 101 * @tc.size : SmallTest 102 * @tc.type : Function 103 * @tc.level : Level 3 104 */ 105 HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationNull, TestSize.Level3) { 106 // 1. OH_Drawing_FontArgumentsCreate 107 OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate(); 108 // 2. OH_Drawing_FontArgumentsAddVariation, the first parameter is nullptr 109 OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS; 110 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(nullptr, "wght", NUMBER_100); 111 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER); 112 // 3. OH_Drawing_FontArgumentsAddVariation, the second parameter is nullptr 113 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, nullptr, NUMBER_100); 114 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER); 115 } 116 117 /* 118 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2102 119 * @tc.name: testFontArgumentsAddVariationAbnormal 120 * @tc.desc: test for testFontArgumentsAddVariationAbnormal. 121 * @tc.size : SmallTest 122 * @tc.type : Function 123 * @tc.level : Level 3 124 */ 125 HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationAbnormal, TestSize.Level3) { 126 // 1. OH_Drawing_FontArgumentsCreate 127 OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate(); 128 // 2. OH_Drawing_FontArgumentsAddVariation, the second parameter is error 129 OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS; 130 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "WGHT", NUMBER_100); 131 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 132 // 3. OH_Drawing_FontArgumentsAddVariation, the second parameter is error 133 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "w", NUMBER_100); 134 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER); 135 } 136 137 /* 138 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2103 139 * @tc.name: testFontArgumentsAddVariationMultipleCalls 140 * @tc.desc: test for testFontArgumentsAddVariationMultipleCalls. 141 * @tc.size : SmallTest 142 * @tc.type : Function 143 * @tc.level : Level 3 144 */ 145 HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationMultipleCalls, TestSize.Level3) { 146 // 1. OH_Drawing_FontArgumentsCreate 147 OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate(); 148 // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS 149 OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER; 150 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100); 151 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_900); 152 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 153 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100); 154 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", 0.0f); 155 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 156 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100); 157 drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", -1); 158 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 159 } 160 161 /* 162 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2200 163 * @tc.name: testFontArgumentsDestoryNormal 164 * @tc.desc: test for testFontArgumentsDestoryNormal. 165 * @tc.size : SmallTest 166 * @tc.type : Function 167 * @tc.level : Level 3 168 */ 169 HWTEST_F(DrawingNativeFontTest, testFontArgumentsDestoryNormal, TestSize.Level0) { 170 // 1. OH_Drawing_FontArgumentsCreate 171 OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate(); 172 // 2. OH_Drawing_FontArgumentsDestroy 173 OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER; 174 drawingErrorCode = OH_Drawing_FontArgumentsDestroy(fontArguments); 175 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS); 176 } 177 178 /* 179 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2201 180 * @tc.name: testFontArgumentsDestoryNull 181 * @tc.desc: test for testFontArgumentsDestoryNull. 182 * @tc.size : SmallTest 183 * @tc.type : Function 184 * @tc.level : Level 3 185 */ 186 HWTEST_F(DrawingNativeFontTest, testFontArgumentsDestoryNull, TestSize.Level0) { 187 // 1. OH_Drawing_FontArgumentsCreate 188 OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate(); 189 // 2. OH_Drawing_FontArgumentsDestroy, parameter is null 190 OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS; 191 drawingErrorCode = OH_Drawing_FontArgumentsDestroy(nullptr); 192 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER); 193 OH_Drawing_FontArgumentsDestroy(fontArguments); 194 } 195 196 /* 197 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2202 198 * @tc.name: testFontArgumentsDestoryMultiplieCalls 199 * @tc.desc: test for testFontArgumentsDestoryMultiplieCalls. 200 * @tc.size : SmallTest 201 * @tc.type : Function 202 * @tc.level : Level 3 203 */ 204 HWTEST_F(DrawingNativeFontTest, testFontArgumentsDestoryMultiplieCalls, TestSize.Level0) { 205 // 1. OH_Drawing_FontCreate 206 OH_Drawing_FontArguments *fontArguments = nullptr; 207 for (int i = 0; i < NUMBER_10; i++) 208 { 209 fontArguments = OH_Drawing_FontArgumentsCreate(); 210 } 211 // 2. OH_Drawing_FontCreate, OH_Drawing_FontArgumentsAddVariation 212 OH_Drawing_ErrorCode drawingErrorCode1 = OH_DRAWING_ERROR_INVALID_PARAMETER; 213 for (size_t i = 0; i < NUMBER_10; i++) 214 { 215 OH_Drawing_FontArguments *fontArguments1 = OH_Drawing_FontArgumentsCreate(); 216 drawingErrorCode1 = OH_Drawing_FontArgumentsDestroy(fontArguments1); 217 EXPECT_EQ(drawingErrorCode1, OH_DRAWING_SUCCESS); 218 } 219 } 220 } // namespace Drawing 221 } // namespace Rosen 222 } // namespace OHOS