1 /*
2 * Copyright (c) 2022 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 "gtest/gtest.h"
17
18 #include <memory>
19 #include "base/geometry/dimension.h"
20 #include "core/pipeline_ng/test/mock/mock_pipeline_base.h"
21
22 using namespace testing;
23 using namespace testing::ext;
24
25 namespace OHOS::Ace {
26 namespace {
27 const double DEFAULT_DOUBLE = 1.0;
28 const double ZERO_DOUBLE = 0.0;
29
30 const Dimension DIMENSION_PX(DEFAULT_DOUBLE, DimensionUnit::PX);
31 const Dimension DIMENSION_VP(DEFAULT_DOUBLE, DimensionUnit::VP);
32 const Dimension DIMENSION_FP(DEFAULT_DOUBLE, DimensionUnit::FP);
33 const Dimension DIMENSION_LPX(DEFAULT_DOUBLE, DimensionUnit::LPX);
34 const Dimension DIMENSION_PCT(DEFAULT_DOUBLE, DimensionUnit::PERCENT);
35 const Dimension DIMENSION_AUTO(DEFAULT_DOUBLE, DimensionUnit::AUTO);
36 const Dimension DIMENSION_CALC(DEFAULT_DOUBLE, DimensionUnit::CALC);
37
38 const std::string DIMENSION_PX_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("px");
39 const std::string DIMENSION_VP_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("vp");
40 const std::string DIMENSION_FP_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("fp");
41 const std::string DIMENSION_LPX_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("lpx");
42 const std::string DIMENSION_PCT_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE * 100).append("%");
43 const std::string DIMENSION_AUTO_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("auto");
44 }
45
46 class DimensionTest : public testing::Test {
47 public:
48 static void SetUpTestCase();
49 static void TearDownTestCase();
50 void SetUp();
51 void TearDown();
52 };
53
SetUpTestCase()54 void DimensionTest::SetUpTestCase()
55 {
56 GTEST_LOG_(INFO) << "DimensionTest SetUpTestCase";
57 }
58
TearDownTestCase()59 void DimensionTest::TearDownTestCase()
60 {
61 GTEST_LOG_(INFO) << "DimensionTest TearDownTestCase";
62 }
63
SetUp()64 void DimensionTest::SetUp()
65 {
66 GTEST_LOG_(INFO) << "DimensionTest SetUp";
67 }
68
TearDown()69 void DimensionTest::TearDown()
70 {
71 GTEST_LOG_(INFO) << "DimensionTest TearDown";
72 }
73
74 /**
75 * @tc.name: DimensionTest001
76 * @tc.desc: Test the function ConvertToVp of the class Dimension.
77 * @tc.type: FUNC
78 */
79 HWTEST_F(DimensionTest, DimensionTest001, TestSize.Level1)
80 {
81 /**
82 * @tc.steps1: initialize parameters.
83 */
84 MockPipelineBase::SetUp();
85
86 /**
87 * @tc.steps2: Test the function ConvertToVp of the class Dimension.
88 * @tc.expected: The return values are equal to DEFAULT_DOUBLE or ZERO_DOUBLE
89 */
90 EXPECT_DOUBLE_EQ(DIMENSION_PX.ConvertToVp(), DEFAULT_DOUBLE);
91 EXPECT_DOUBLE_EQ(DIMENSION_VP.ConvertToVp(), DEFAULT_DOUBLE);
92 EXPECT_DOUBLE_EQ(DIMENSION_FP.ConvertToVp(), DEFAULT_DOUBLE);
93 EXPECT_DOUBLE_EQ(DIMENSION_LPX.ConvertToVp(), DEFAULT_DOUBLE);
94 EXPECT_DOUBLE_EQ(DIMENSION_PCT.ConvertToVp(), ZERO_DOUBLE);
95 EXPECT_DOUBLE_EQ(DIMENSION_AUTO.ConvertToVp(), ZERO_DOUBLE);
96 EXPECT_DOUBLE_EQ(DIMENSION_CALC.ConvertToVp(), ZERO_DOUBLE);
97 }
98
99 /**
100 * @tc.name: DimensionTest002
101 * @tc.desc: Test the function ConvertToPx of the class Dimension.
102 * @tc.type: FUNC
103 */
104 HWTEST_F(DimensionTest, DimensionTest002, TestSize.Level1)
105 {
106 /**
107 * @tc.steps1: initialize parameters.
108 */
109 MockPipelineBase::SetUp();
110
111 /**
112 * @tc.steps2: Test the function ConvertToPx of the class Dimension.
113 * @tc.expected: The return values are equal to DEFAULT_DOUBLE or ZERO_DOUBLE.
114 */
115 EXPECT_DOUBLE_EQ(DIMENSION_PX.ConvertToPx(), DEFAULT_DOUBLE);
116 EXPECT_DOUBLE_EQ(DIMENSION_VP.ConvertToPx(), DEFAULT_DOUBLE);
117 EXPECT_DOUBLE_EQ(DIMENSION_FP.ConvertToPx(), DEFAULT_DOUBLE);
118 EXPECT_DOUBLE_EQ(DIMENSION_LPX.ConvertToPx(), DEFAULT_DOUBLE);
119 EXPECT_DOUBLE_EQ(DIMENSION_PCT.ConvertToPx(), ZERO_DOUBLE);
120 EXPECT_DOUBLE_EQ(DIMENSION_AUTO.ConvertToPx(), ZERO_DOUBLE);
121 EXPECT_DOUBLE_EQ(DIMENSION_CALC.ConvertToPx(), ZERO_DOUBLE);
122 }
123
124 /**
125 * @tc.name: DimensionTest003
126 * @tc.desc: Test the function ToString of the class Dimension.
127 * @tc.type: FUNC
128 */
129 HWTEST_F(DimensionTest, DimensionTest003, TestSize.Level1)
130 {
131 /**
132 * @tc.steps1: Test the function ToString of the class Dimension.
133 * @tc.expected: The return values are equal to DIMENSION_STR of PX, VP, FP, LPX, PCT and AUTO.
134 */
135 EXPECT_EQ(DIMENSION_PX.ToString(), DIMENSION_PX_STR);
136 EXPECT_EQ(DIMENSION_VP.ToString(), DIMENSION_VP_STR);
137 EXPECT_EQ(DIMENSION_FP.ToString(), DIMENSION_FP_STR);
138 EXPECT_EQ(DIMENSION_LPX.ToString(), DIMENSION_LPX_STR);
139 EXPECT_EQ(DIMENSION_PCT.ToString(), DIMENSION_PCT_STR);
140 EXPECT_EQ(DIMENSION_AUTO.ToString(), DIMENSION_AUTO_STR);
141 }
142
143 /**
144 * @tc.name: DimensionTest004
145 * @tc.desc: Test the function NormalizeToPx of the class Dimension with -DEFAULT_DOUBLE.
146 * @tc.type: FUNC
147 */
148 HWTEST_F(DimensionTest, DimensionTest004, TestSize.Level1)
149 {
150 /**
151 * @tc.steps1: Test the function NormalizeToPx of the class Dimension with DIMENSION_PX.
152 * @tc.expected: The return values are equal to DEFAULT_DOUBLE.
153 */
154 double result = 0;
155 EXPECT_TRUE(DIMENSION_PX.NormalizeToPx(
156 -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result));
157 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE);
158
159 /**
160 * @tc.steps2: Test the function NormalizeToPx of the class Dimension with DIMENSION_VP.
161 * @tc.expected: The return values are equal to ZERO_DOUBLE.
162 */
163 result = 0;
164 EXPECT_FALSE(DIMENSION_VP.NormalizeToPx(
165 -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result));
166 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE);
167
168 /**
169 * @tc.steps3: Test the function NormalizeToPx of the class Dimension with DIMENSION_FP.
170 * @tc.expected: The return values are equal to ZERO_DOUBLE.
171 */
172 result = 0;
173 EXPECT_FALSE(DIMENSION_FP.NormalizeToPx(
174 -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result));
175 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE);
176
177 /**
178 * @tc.steps4: Test the function NormalizeToPx of the class Dimension with DIMENSION_LPX.
179 * @tc.expected: The return values are equal to ZERO_DOUBLE.
180 */
181 result = 0;
182 EXPECT_FALSE(DIMENSION_LPX.NormalizeToPx(
183 -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result));
184 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE);
185
186 /**
187 * @tc.steps5: Test the function NormalizeToPx of the class Dimension with DIMENSION_PCT.
188 * @tc.expected: The return values are equal to ZERO_DOUBLE.
189 */
190 result = 0;
191 EXPECT_FALSE(DIMENSION_PCT.NormalizeToPx(
192 -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result));
193 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE);
194
195 /**
196 * @tc.steps6: Test the function NormalizeToPx of the class Dimension with DIMENSION_AUTO.
197 * @tc.expected: The return values are equal to ZERO_DOUBLE.
198 */
199 result = 0;
200 EXPECT_FALSE(DIMENSION_AUTO.NormalizeToPx(
201 -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result));
202 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE);
203
204 /**
205 * @tc.steps7: Test the function NormalizeToPx of the class Dimension with DIMENSION_CALC.
206 * @tc.expected: The return values are equal to ZERO_DOUBLE.
207 */
208 result = 0;
209 EXPECT_FALSE(DIMENSION_CALC.NormalizeToPx(
210 -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result));
211 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE);
212 }
213
214 /**
215 * @tc.name: DimensionTest005
216 * @tc.desc: Test the function NormalizeToPx of the class Dimension with DEFAULT_DOUBLE.
217 * @tc.type: FUNC
218 */
219 HWTEST_F(DimensionTest, DimensionTest005, TestSize.Level1)
220 {
221 /**
222 * @tc.steps1: Test the function NormalizeToPx of the class Dimension with DIMENSION_PX.
223 * @tc.expected: The return values are equal to DEFAULT_DOUBLE.
224 */
225 double result = 0;
226 EXPECT_TRUE(DIMENSION_PX.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result));
227 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE);
228
229 /**
230 * @tc.steps2: Test the function NormalizeToPx of the class Dimension with DIMENSION_VP.
231 * @tc.expected: The return values are equal to DEFAULT_DOUBLE.
232 */
233 result = 0;
234 EXPECT_TRUE(DIMENSION_VP.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result));
235 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE);
236
237 /**
238 * @tc.steps3: Test the function NormalizeToPx of the class Dimension with DIMENSION_FP.
239 * @tc.expected: The return values are equal to DEFAULT_DOUBLE.
240 */
241 result = 0;
242 EXPECT_TRUE(DIMENSION_FP.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result));
243 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE);
244
245 /**
246 * @tc.steps4: Test the function NormalizeToPx of the class Dimension with DIMENSION_LPX.
247 * @tc.expected: The return values are equal to DEFAULT_DOUBLE.
248 */
249 result = 0;
250 EXPECT_TRUE(DIMENSION_LPX.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result));
251 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE);
252
253 /**
254 * @tc.steps5: Test the function NormalizeToPx of the class Dimension with DIMENSION_PCT.
255 * @tc.expected: The return values are equal to DEFAULT_DOUBLE.
256 */
257 result = 0;
258 EXPECT_TRUE(DIMENSION_PCT.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result));
259 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE);
260
261 /**
262 * @tc.steps6: Test the function NormalizeToPx of the class Dimension with DIMENSION_AUTO.
263 * @tc.expected: The return values are equal to ZERO_DOUBLE.
264 */
265 result = 0;
266 EXPECT_FALSE(DIMENSION_AUTO.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result));
267 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE);
268
269 /**
270 * @tc.steps7: Test the function NormalizeToPx of the class Dimension with DIMENSION_CALC.
271 * @tc.expected: The return values are equal to ZERO_DOUBLE.
272 */
273 result = 0;
274 EXPECT_FALSE(DIMENSION_CALC.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result));
275 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE);
276 }
277 } // namespace OHOS::Ace