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_hm_symbol_config_ohos.h"
19 #include "src/ports/skia_ohos/HmSymbolConfig_ohos.h"
20 
21 using namespace testing;
22 using namespace testing::ext;
23 
24 namespace OHOS {
25 namespace Rosen {
26 namespace Drawing {
27 class SkiaHmSymbolConfigOhosTest : 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 SkiaHmSymbolConfigOhosTest::SetUpTestCase() {}
TearDownTestCase()36 void SkiaHmSymbolConfigOhosTest::TearDownTestCase() {}
SetUp()37 void SkiaHmSymbolConfigOhosTest::SetUp() {}
TearDown()38 void SkiaHmSymbolConfigOhosTest::TearDown() {}
39 
40 /**
41  * @tc.name: GetSymbolLayersGroups001
42  * @tc.desc: Test GetSymbolLayersGroups
43  * @tc.type: FUNC
44  * @tc.require: I91EQ7
45  */
46 HWTEST_F(SkiaHmSymbolConfigOhosTest, GetSymbolLayersGroups001, TestSize.Level1)
47 {
48     HmSymbolConfig_OHOS::GetInstance()->ParseConfigOfHmSymbol("hm_symbol_config_next.json",
49         SkString("/system/fonts/"));
50     auto groups = SkiaHmSymbolConfigOhos::GetSymbolLayersGroups(3); // 3 is an existing GlyphID
51     ASSERT_TRUE(groups.symbolGlyphId != 0);
52 }
53 
54 /**
55  * @tc.name: GetGroupParameters001
56  * @tc.desc: Test GetGroupParameters  by scale effect with wholeSymbol or bylayer
57  * @tc.type: FUNC
58  * @tc.require: I91EQ7
59  */
60 HWTEST_F(SkiaHmSymbolConfigOhosTest, GetGroupParameters001, TestSize.Level1)
61 {
62     auto parameters = SkiaHmSymbolConfigOhos::GetGroupParameters(DrawingAnimationType::SCALE_TYPE, 1, 1);
63     if (!parameters.empty()) {
64         EXPECT_EQ(parameters.size(), 1);
65     } else {
66         EXPECT_EQ(parameters.empty(), true);
67     }
68 
69     uint16_t groups = 3; // the 3 is layers of effect
70     auto parameters1 = SkiaHmSymbolConfigOhos::GetGroupParameters(DrawingAnimationType::SCALE_TYPE, groups, 0);
71     if (!parameters1.empty()) {
72         EXPECT_EQ(parameters1.size(), groups);
73     }
74 
75     groups = 2; // the 2 is layers of effect
76     auto parameters2 = SkiaHmSymbolConfigOhos::GetGroupParameters(DrawingAnimationType::SCALE_TYPE, groups, 0);
77     if (!parameters2.empty()) {
78         EXPECT_EQ(parameters2.size(), groups);
79     }
80 }
81 
82 /**
83  * @tc.name: GetGroupParameters002
84  * @tc.desc: Test GetGroupParameters by scale effect with UP or DOWN
85  * @tc.type: FUNC
86  * @tc.require: I91EQ7
87  */
88 HWTEST_F(SkiaHmSymbolConfigOhosTest, GetGroupParameters002, TestSize.Level1)
89 {
90     uint16_t groups = 1; // the 1 is layers of effect
91     auto parameters1 = SkiaHmSymbolConfigOhos::GetGroupParameters(DrawingAnimationType::SCALE_TYPE, groups, 1,
92         DrawingCommonSubType::UP);
93     if (!parameters1.empty()) {
94         EXPECT_EQ(parameters1.size(), groups);
95     }
96 
97     auto parameters2 = SkiaHmSymbolConfigOhos::GetGroupParameters(DrawingAnimationType::SCALE_TYPE, groups, 1,
98     DrawingCommonSubType::DOWN);
99     if (!parameters2.empty()) {
100         EXPECT_EQ(parameters2.size(), groups);
101     }
102 }
103 
104 /**
105  * @tc.name: GetGroupParameters003
106  * @tc.desc: Test GetGroupParameters  by scale effect with number of error layers
107  * @tc.type: FUNC
108  * @tc.require: I91EQ7
109  */
110 HWTEST_F(SkiaHmSymbolConfigOhosTest, GetGroupParameters003, TestSize.Level1)
111 {
112     uint16_t groups = 300; // the 300 is Out of layers Scope
113     auto parameters = SkiaHmSymbolConfigOhos::GetGroupParameters(DrawingAnimationType::SCALE_TYPE, groups, 0);
114     EXPECT_EQ(parameters.empty(), true);
115 }
116 
117 /**
118  * @tc.name: GetGroupParameters004
119  * @tc.desc: Test GetGroupParameters by variable_color effext by cumulative or iteratuve
120  * @tc.type: FUNC
121  * @tc.require: I91EQ7
122  */
123 HWTEST_F(SkiaHmSymbolConfigOhosTest, GetGroupParameters004, TestSize.Level1)
124 {
125     uint16_t groups = 3; // the 1 is layers of effect
126     auto parameters1 = SkiaHmSymbolConfigOhos::GetGroupParameters(DrawingAnimationType::VARIABLE_COLOR_TYPE, groups, 1,
127         DrawingCommonSubType::UP);
128     if (!parameters1.empty()) {
129         EXPECT_EQ(parameters1.size(), groups);
130     }
131 
132     auto parameters2 = SkiaHmSymbolConfigOhos::GetGroupParameters(DrawingAnimationType::VARIABLE_COLOR_TYPE, groups, 0,
133     DrawingCommonSubType::DOWN);
134     if (!parameters2.empty()) {
135         EXPECT_EQ(parameters2.size(), groups);
136     }
137 }
138 } // namespace Drawing
139 } // namespace Rosen
140 } // namespace OHOS