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, 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 <cstddef> 17 #include "gtest/gtest.h" 18 #include "skia_adapter/skia_font.h" 19 #include "text/font.h" 20 21 using namespace testing; 22 using namespace testing::ext; 23 24 namespace OHOS { 25 namespace Rosen { 26 namespace Drawing { 27 class SkiaFontTest : 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 SkiaFontTest::SetUpTestCase() {} TearDownTestCase()36 void SkiaFontTest::TearDownTestCase() {} SetUp()37 void SkiaFontTest::SetUp() {} TearDown()38 void SkiaFontTest::TearDown() {} 39 40 /** 41 * @tc.name: SkiaFont001 42 * @tc.desc: Test SkiaFont's constructor 43 * @tc.type: FUNC 44 * @tc.require: I9120P 45 */ 46 HWTEST_F(SkiaFontTest, SkiaFont001, TestSize.Level1) 47 { 48 std::shared_ptr<SkiaFont> skiaFont = std::make_shared<SkiaFont>(nullptr, 1, 1, 1); 49 ASSERT_TRUE(skiaFont != nullptr); 50 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 51 skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 52 ASSERT_TRUE(skiaFont != nullptr); 53 } 54 55 /** 56 * @tc.name: SetEdging001 57 * @tc.desc: Test SetEdging 58 * @tc.type: FUNC 59 * @tc.require: I9120P 60 */ 61 HWTEST_F(SkiaFontTest, SetEdging001, TestSize.Level1) 62 { 63 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 64 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 65 skiaFont->SetEdging(FontEdging::ALIAS); 66 ASSERT_TRUE(skiaFont->GetFont().getEdging() == SkFont::Edging::kAlias); 67 } 68 69 /** 70 * @tc.name: SetSubpixel001 71 * @tc.desc: Test SetSubpixel 72 * @tc.type: FUNC 73 * @tc.require: I9120P 74 */ 75 HWTEST_F(SkiaFontTest, SetSubpixel001, TestSize.Level1) 76 { 77 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 78 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 79 skiaFont->SetSubpixel(true); 80 ASSERT_TRUE(skiaFont->GetFont().isSubpixel()); 81 } 82 83 /** 84 * @tc.name: SetHinting001 85 * @tc.desc: Test SetHinting 86 * @tc.type: FUNC 87 * @tc.require: I9120P 88 */ 89 HWTEST_F(SkiaFontTest, SetHinting001, TestSize.Level1) 90 { 91 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 92 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 93 skiaFont->SetHinting(FontHinting::NONE); 94 ASSERT_TRUE(skiaFont->GetFont().getHinting() == SkFontHinting::kNone); 95 } 96 97 /** 98 * @tc.name: SetTypeface001 99 * @tc.desc: Test SetTypeface 100 * @tc.type: FUNC 101 * @tc.require: I9120P 102 */ 103 HWTEST_F(SkiaFontTest, SetTypeface001, TestSize.Level1) 104 { 105 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 106 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 107 skiaFont->SetTypeface(nullptr); 108 ASSERT_TRUE(skiaFont->GetTypeface() != nullptr); 109 } 110 111 /** 112 * @tc.name: SetScaleX001 113 * @tc.desc: Test SetScaleX 114 * @tc.type: FUNC 115 * @tc.require: I9120P 116 */ 117 HWTEST_F(SkiaFontTest, SetScaleX001, TestSize.Level1) 118 { 119 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 120 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 121 skiaFont->SetScaleX(1); 122 ASSERT_TRUE(skiaFont->GetFont().getScaleX() == 1); 123 } 124 125 /** 126 * @tc.name: SetLinearMetrics001 127 * @tc.desc: Test SetLinearMetrics 128 * @tc.type: FUNC 129 * @tc.require: I9120P 130 */ 131 HWTEST_F(SkiaFontTest, SetLinearMetrics001, TestSize.Level1) 132 { 133 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 134 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 135 skiaFont->SetLinearMetrics(true); 136 ASSERT_TRUE(skiaFont->GetFont().isLinearMetrics()); 137 } 138 139 /** 140 * @tc.name: GetMetrics001 141 * @tc.desc: Test GetMetrics 142 * @tc.type: FUNC 143 * @tc.require: I9120P 144 */ 145 HWTEST_F(SkiaFontTest, GetMetrics001, TestSize.Level1) 146 { 147 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 148 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 149 auto metrics = skiaFont->GetMetrics(nullptr); 150 ASSERT_TRUE(metrics > 0); 151 } 152 153 /** 154 * @tc.name: GetWidths001 155 * @tc.desc: Test GetWidths 156 * @tc.type: FUNC 157 * @tc.require: I9120P 158 */ 159 HWTEST_F(SkiaFontTest, GetWidths001, TestSize.Level1) 160 { 161 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 162 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 163 uint16_t glyphs[] = { 0, 0 }; 164 scalar widths[] = { 0, 0 }; 165 skiaFont->GetWidths(glyphs, 2, widths); // 2:count 166 skiaFont->GetWidths(glyphs, 2, widths, nullptr); // 2:count 167 Rect rect1; 168 Rect rect2; 169 Rect bounds[] = { rect1, rect2 }; 170 skiaFont->GetWidths(glyphs, 2, widths, bounds); 171 ASSERT_TRUE(rect1.GetWidth() >= 0); 172 } 173 174 /** 175 * @tc.name: GetSize001 176 * @tc.desc: Test GetSize 177 * @tc.type: FUNC 178 * @tc.require: I9120P 179 */ 180 HWTEST_F(SkiaFontTest, GetSize001, TestSize.Level1) 181 { 182 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 183 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 184 auto size = skiaFont->GetSize(); 185 ASSERT_TRUE(size > 0); 186 } 187 188 /** 189 * @tc.name: GetTypeface001 190 * @tc.desc: Test GetTypeface 191 * @tc.type: FUNC 192 * @tc.require: I9120P 193 */ 194 HWTEST_F(SkiaFontTest, GetTypeface001, TestSize.Level1) 195 { 196 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 197 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 198 auto typeface2 = skiaFont->GetTypeface(); 199 ASSERT_TRUE(typeface2 != nullptr); 200 } 201 202 /** 203 * @tc.name: MeasureText001 204 * @tc.desc: Test MeasureText 205 * @tc.type: FUNC 206 * @tc.require: I9120P 207 */ 208 HWTEST_F(SkiaFontTest, MeasureText001, TestSize.Level1) 209 { 210 std::shared_ptr<Typeface> typeface = Typeface::MakeDefault(); 211 auto skiaFont = std::make_shared<SkiaFont>(typeface, 1, 1, 1); 212 auto size = skiaFont->MeasureText("11", 2, TextEncoding::UTF8, nullptr); // 2:byteLength 213 ASSERT_TRUE(size > 0); 214 } 215 } // namespace Drawing 216 } // namespace Rosen 217 } // namespace OHOS