• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "base/utils/string_utils.h"
19 #include "frameworks/bridge/common/utils/utils.h"
20 #include "frameworks/bridge/js_frontend/engine/common/js_constants.h"
21 #include "frameworks/bridge/js_frontend/engine/common/base_animation_bridge.h"
22 #include "frameworks/core/animation/curve.h"
23 
24 using namespace testing;
25 using namespace testing::ext;
26 namespace OHOS::Ace::Framework {
27 namespace {
28 constexpr double SIZE_VALUE_ZERO = 0;
29 constexpr double SIZE_VALUE_TEN = 10;
30 constexpr double SIZE_VALUE_FIFTY = 50;
31 constexpr double SIZE_VALUE_HUNDRED = 100;
32 constexpr float ANIMATION_ZERO_VALUE = 0.0f;
33 constexpr float ANIMATION_ONE_VALUE = 1.0f;
34 constexpr float ANIMATION_CUBIC_VALUE_ONE = 0.000295256f;
35 constexpr float ANIMATION_CUBIC_VALUE_TWO = 0.801992f;
36 constexpr float ANIMATION_SPRING_VALUE = -0.193207f;
37 const std::string ANIMATION_EASING_CUBIC_EASE = "cubic-bezier(0.25, 0.1, 0.25, 1.0)";
38 const std::string ANIMATION_EASING_SPRING = "spring(1.0, 1.0, 1.0, 1.0)";
39 const std::string ANIMATION_EASING_SPRING_MOTION = "spring-motion(1.0, 1.0, 1.0)";
40 const std::string ANIMATION_EASING_RESPONSIVE = "responsive-spring-motion(1.0, 1.0, 1.0)";
41 const std::string ANIMATION_EASING_EASE = "ease";
42 const std::string ANIMATION_EASING_STEPS_START = "steps(1, start)";
43 const std::string ANIMATION_EASING_STEPS_END = "steps(1, end)";
44 } // namespace
45 
46 class CommonUtilsTest : public testing::Test {
47 public:
48     static void SetUpTestCase();
49     static void TearDownTestCase();
50     void SetUp() override;
51     void TearDown() override;
52 };
53 
SetUpTestCase()54 void CommonUtilsTest::SetUpTestCase() {}
TearDownTestCase()55 void CommonUtilsTest::TearDownTestCase() {}
SetUp()56 void CommonUtilsTest::SetUp() {}
TearDown()57 void CommonUtilsTest::TearDown() {}
58 
59 /**
60  * @tc.name: CommonUtilsTest001
61  * @tc.desc: BackgroundPosition parse
62  * @tc.type: FUNC
63  */
64 HWTEST_F(CommonUtilsTest, CommonUtilsTest001, TestSize.Level1)
65 {
66     /**
67      * @tc.steps: step1. parse the param contain "top".
68      * @tc.expected: step1. The value of the params are as expected.
69      */
70     BackgroundImagePosition backgroundImagePosition;
71     EXPECT_TRUE(ParseBackgroundImagePosition("top", backgroundImagePosition));
72     EXPECT_EQ(backgroundImagePosition.GetSizeValueX(), SIZE_VALUE_FIFTY);
73     EXPECT_EQ(BackgroundImagePositionType::PERCENT, backgroundImagePosition.GetSizeTypeX());
74     EXPECT_EQ(backgroundImagePosition.GetSizeValueY(), SIZE_VALUE_ZERO);
75     EXPECT_EQ(BackgroundImagePositionType::PERCENT, backgroundImagePosition.GetSizeTypeY());
76 
77     /**
78      * @tc.steps: step2. parse the param which is null.
79      * @tc.expected: step2. The value of the params are as expected.
80      */
81     EXPECT_TRUE(ParseBackgroundImagePosition("", backgroundImagePosition));
82     EXPECT_EQ(backgroundImagePosition.GetSizeValueX(), SIZE_VALUE_FIFTY);
83     EXPECT_EQ(BackgroundImagePositionType::PERCENT, backgroundImagePosition.GetSizeTypeX());
84     EXPECT_EQ(backgroundImagePosition.GetSizeValueY(), SIZE_VALUE_FIFTY);
85     EXPECT_EQ(BackgroundImagePositionType::PERCENT, backgroundImagePosition.GetSizeTypeY());
86 }
87 
88 /**
89  * @tc.name: CommonUtilsTest002
90  * @tc.desc: Animation steps parse check
91  * @tc.type: FUNC
92  */
93 HWTEST_F(CommonUtilsTest, CommonUtilsTest002, TestSize.Level1)
94 {
95     /**
96      * @tc.steps: step1. parse the param of steps curve.
97      * @tc.expected: step1. steps curve parsed success.
98      */
99     auto stepsCurve = AceType::DynamicCast<StepsCurve>(CreateCurve(ANIMATION_EASING_STEPS_START));
100     EXPECT_TRUE(NearEqual(stepsCurve->MoveInternal(0.0), ANIMATION_ONE_VALUE));
101     EXPECT_TRUE(NearEqual(stepsCurve->MoveInternal(0.5), ANIMATION_ONE_VALUE));
102     stepsCurve = AceType::DynamicCast<StepsCurve>(CreateCurve(ANIMATION_EASING_STEPS_END));
103     EXPECT_TRUE(NearEqual(stepsCurve->MoveInternal(0.0), ANIMATION_ZERO_VALUE));
104     EXPECT_TRUE(NearEqual(stepsCurve->MoveInternal(1.0), ANIMATION_ONE_VALUE));
105 
106     /**
107      * @tc.steps: step2. parse the param of cubic curve.
108      * @tc.expected: step2. cubic curve parsed success.
109      */
110     auto cubicCurve = AceType::DynamicCast<CubicCurve>(CreateCurve(ANIMATION_EASING_CUBIC_EASE));
111     EXPECT_TRUE(NearEqual(cubicCurve->MoveInternal(0.0), ANIMATION_CUBIC_VALUE_ONE));
112     EXPECT_TRUE(NearEqual(cubicCurve->MoveInternal(0.5), ANIMATION_CUBIC_VALUE_TWO));
113     cubicCurve = AceType::DynamicCast<CubicCurve>(CreateCurve(ANIMATION_EASING_EASE));
114     EXPECT_TRUE(NearEqual(cubicCurve->MoveInternal(0.0), ANIMATION_CUBIC_VALUE_ONE));
115     EXPECT_TRUE(NearEqual(cubicCurve->MoveInternal(1.0), ANIMATION_ONE_VALUE));
116 
117     /**
118      * @tc.steps: step3. parse the param of responsive spring motion.
119      * @tc.expected: step3. responsive spring motion parsed success.
120      */
121     auto responsiveSpringMotion =
122         AceType::DynamicCast<ResponsiveSpringMotion>(CreateCurve(ANIMATION_EASING_RESPONSIVE));
123     EXPECT_EQ(responsiveSpringMotion->GetResponse(), ANIMATION_ONE_VALUE);
124     EXPECT_EQ(responsiveSpringMotion->GetDampingRatio(), ANIMATION_ONE_VALUE);
125     EXPECT_EQ(responsiveSpringMotion->GetBlendDuration(), ANIMATION_ONE_VALUE);
126 
127     /**
128      * @tc.steps: step4. parse the param of spring curve.
129      * @tc.expected: step4. spring curve parsed success.
130      */
131     auto springCurve = AceType::DynamicCast<SpringCurve>(CreateCurve(ANIMATION_EASING_SPRING));
132     EXPECT_TRUE(NearEqual(springCurve->MoveInternal(0.0), ANIMATION_ZERO_VALUE));
133     EXPECT_TRUE(NearEqual(springCurve->MoveInternal(1.0), ANIMATION_SPRING_VALUE));
134 
135     /**
136      * @tc.steps: step5. parse the param of spring motion.
137      * @tc.expected: step5. spring motion parsed success.
138      */
139     auto springMotion =
140         AceType::DynamicCast<ResponsiveSpringMotion>(CreateCurve(ANIMATION_EASING_SPRING_MOTION));
141     EXPECT_EQ(springMotion->GetResponse(), ANIMATION_ONE_VALUE);
142     EXPECT_EQ(springMotion->GetDampingRatio(), ANIMATION_ONE_VALUE);
143     EXPECT_EQ(springMotion->GetBlendDuration(), ANIMATION_ONE_VALUE);
144 }
145 
146 /**
147  * @tc.name: CommonUtilsTest003
148  * @tc.desc: BackgroundImageSize parse
149  * @tc.type: FUNC
150  */
151 HWTEST_F(CommonUtilsTest, CommonUtilsTest003, TestSize.Level1)
152 {
153     /**
154      * @tc.steps: step1. parse the param contain "%", "px" and " ".
155      * @tc.expected: step1. The value of the params are as expected.
156      */
157     BackgroundImageSize bgImgSize;
158     EXPECT_TRUE(ParseBackgroundImageSize("50% 50px", bgImgSize));
159     EXPECT_EQ(bgImgSize.GetSizeValueX(), SIZE_VALUE_FIFTY);
160     EXPECT_EQ(bgImgSize.GetSizeTypeX(), BackgroundImageSizeType::PERCENT);
161     EXPECT_EQ(bgImgSize.GetSizeValueY(), SIZE_VALUE_FIFTY);
162     EXPECT_EQ(bgImgSize.GetSizeTypeY(), BackgroundImageSizeType::LENGTH);
163 
164     /**
165      * @tc.steps: step2. parse the param contain "px", "%" and " ".
166      * @tc.expected: step2. The value of the params are as expected.
167      */
168     EXPECT_TRUE(ParseBackgroundImageSize("50px 50%", bgImgSize));
169     EXPECT_EQ(bgImgSize.GetSizeValueX(), SIZE_VALUE_FIFTY);
170     EXPECT_EQ(bgImgSize.GetSizeTypeX(), BackgroundImageSizeType::LENGTH);
171     EXPECT_EQ(bgImgSize.GetSizeValueY(), SIZE_VALUE_FIFTY);
172     EXPECT_EQ(bgImgSize.GetSizeTypeY(), BackgroundImageSizeType::PERCENT);
173 
174     /**
175      * @tc.steps: step3. parse the param contain " ".
176      * @tc.expected: step3. The value of the params are as expected.
177      */
178     EXPECT_TRUE(ParseBackgroundImageSize("test test", bgImgSize));
179     EXPECT_EQ(bgImgSize.GetSizeValueX(), SIZE_VALUE_FIFTY);
180     EXPECT_EQ(bgImgSize.GetSizeTypeX(), BackgroundImageSizeType::AUTO);
181     EXPECT_EQ(bgImgSize.GetSizeValueY(), SIZE_VALUE_FIFTY);
182     EXPECT_EQ(bgImgSize.GetSizeTypeY(), BackgroundImageSizeType::AUTO);
183 }
184 
185 /**
186  * @tc.name: CommonUtilsTest004
187  * @tc.desc: BackgroundImageSize parse
188  * @tc.type: FUNC
189  */
190 HWTEST_F(CommonUtilsTest, CommonUtilsTest004, TestSize.Level1)
191 {
192     /**
193      * @tc.steps: step1. parse the param contain "px".
194      * @tc.expected: step1. The value of the params are as expected.
195      */
196     BackgroundImageSize bgImgSize;
197     EXPECT_TRUE(ParseBackgroundImageSize("50px", bgImgSize));
198     EXPECT_EQ(bgImgSize.GetSizeValueX(), SIZE_VALUE_FIFTY);
199     EXPECT_EQ(bgImgSize.GetSizeTypeX(), BackgroundImageSizeType::LENGTH);
200     EXPECT_EQ(bgImgSize.GetSizeValueY(), SIZE_VALUE_ZERO);
201     EXPECT_EQ(bgImgSize.GetSizeTypeY(), BackgroundImageSizeType::AUTO);
202 
203     /**
204      * @tc.steps: step2. parse the param contain "%".
205      * @tc.expected: step2. The value of the params are as expected.
206      */
207     EXPECT_TRUE(ParseBackgroundImageSize("50%", bgImgSize));
208     EXPECT_EQ(bgImgSize.GetSizeValueX(), SIZE_VALUE_FIFTY);
209     EXPECT_EQ(bgImgSize.GetSizeTypeX(), BackgroundImageSizeType::PERCENT);
210     EXPECT_EQ(bgImgSize.GetSizeValueY(), SIZE_VALUE_ZERO);
211     EXPECT_EQ(bgImgSize.GetSizeTypeY(), BackgroundImageSizeType::AUTO);
212 
213     /**
214      * @tc.steps: step3. parse the param.
215      * @tc.expected: step3. The value of the params are as expected.
216      */
217     EXPECT_TRUE(ParseBackgroundImageSize("test", bgImgSize));
218     EXPECT_EQ(bgImgSize.GetSizeValueX(), SIZE_VALUE_FIFTY);
219     EXPECT_EQ(bgImgSize.GetSizeTypeX(), BackgroundImageSizeType::AUTO);
220     EXPECT_EQ(bgImgSize.GetSizeValueY(), SIZE_VALUE_ZERO);
221     EXPECT_EQ(bgImgSize.GetSizeTypeY(), BackgroundImageSizeType::AUTO);
222 
223     /**
224      * @tc.steps: step4. parse the param which is "auto".
225      * @tc.expected: step4. The value of the params are as expected.
226      */
227     EXPECT_TRUE(ParseBackgroundImageSize("auto", bgImgSize));
228     EXPECT_EQ(bgImgSize.GetSizeValueX(), SIZE_VALUE_FIFTY);
229     EXPECT_EQ(bgImgSize.GetSizeTypeX(), BackgroundImageSizeType::AUTO);
230     EXPECT_EQ(bgImgSize.GetSizeValueY(), SIZE_VALUE_ZERO);
231     EXPECT_EQ(bgImgSize.GetSizeTypeY(), BackgroundImageSizeType::AUTO);
232 
233     /**
234      * @tc.steps: step5. parse the param which is "contain".
235      * @tc.expected: step5. The value of the params are as expected.
236      */
237     EXPECT_TRUE(ParseBackgroundImageSize("contain", bgImgSize));
238     EXPECT_EQ(bgImgSize.GetSizeValueX(), SIZE_VALUE_FIFTY);
239     EXPECT_EQ(bgImgSize.GetSizeTypeX(), BackgroundImageSizeType::CONTAIN);
240     EXPECT_EQ(bgImgSize.GetSizeValueY(), SIZE_VALUE_ZERO);
241     EXPECT_EQ(bgImgSize.GetSizeTypeY(), BackgroundImageSizeType::AUTO);
242 
243     /**
244      * @tc.steps: step6. parse the param which is "cover".
245      * @tc.expected: step6. The value of the params are as expected.
246      */
247     EXPECT_TRUE(ParseBackgroundImageSize("cover", bgImgSize));
248     EXPECT_EQ(bgImgSize.GetSizeValueX(), SIZE_VALUE_FIFTY);
249     EXPECT_EQ(bgImgSize.GetSizeTypeX(), BackgroundImageSizeType::COVER);
250     EXPECT_EQ(bgImgSize.GetSizeValueY(), SIZE_VALUE_ZERO);
251     EXPECT_EQ(bgImgSize.GetSizeTypeY(), BackgroundImageSizeType::AUTO);
252 }
253 
254 /**
255  * @tc.name: CommonUtilsTest005
256  * @tc.desc: ObjectPosition parse
257  * @tc.type: FUNC
258  */
259 HWTEST_F(CommonUtilsTest, CommonUtilsTest005, TestSize.Level1)
260 {
261     /**
262      * @tc.steps: step1. parse the param contain "px" and "%".
263      * @tc.expected: step1. The value of the params are as expected.
264      */
265     auto imageObjectPosition = ParseImageObjectPosition("10px 10%");
266     EXPECT_EQ(imageObjectPosition.GetSizeValueX(), SIZE_VALUE_TEN);
267     EXPECT_EQ(imageObjectPosition.GetSizeTypeX(), BackgroundImagePositionType::PX);
268     EXPECT_EQ(imageObjectPosition.GetSizeValueY(), SIZE_VALUE_TEN);
269     EXPECT_EQ(imageObjectPosition.GetSizeTypeY(), BackgroundImagePositionType::PERCENT);
270 
271     /**
272      * @tc.steps: step2. parse the param contain "%" and "px".
273      * @tc.expected: step2. The value of the params are as expected.
274      */
275     imageObjectPosition = ParseImageObjectPosition("10% 10px");
276     EXPECT_EQ(imageObjectPosition.GetSizeValueX(), SIZE_VALUE_TEN);
277     EXPECT_EQ(imageObjectPosition.GetSizeTypeX(), BackgroundImagePositionType::PERCENT);
278     EXPECT_EQ(imageObjectPosition.GetSizeValueY(), SIZE_VALUE_TEN);
279     EXPECT_EQ(imageObjectPosition.GetSizeTypeY(), BackgroundImagePositionType::PX);
280 
281     /**
282      * @tc.steps: step3. parse the param.
283      * @tc.expected: step3. The value of the params are as expected.
284      */
285     imageObjectPosition = ParseImageObjectPosition("test");
286     EXPECT_EQ(imageObjectPosition.GetSizeValueX(), SIZE_VALUE_FIFTY);
287     EXPECT_EQ(imageObjectPosition.GetSizeTypeX(), BackgroundImagePositionType::PERCENT);
288     EXPECT_EQ(imageObjectPosition.GetSizeValueY(), SIZE_VALUE_FIFTY);
289     EXPECT_EQ(imageObjectPosition.GetSizeTypeY(), BackgroundImagePositionType::PERCENT);
290 
291     /**
292      * @tc.steps: step4. parse the param contain "left" and "bottom".
293      * @tc.expected: step4. The value of the params are as expected.
294      */
295     imageObjectPosition = ParseImageObjectPosition("left bottom");
296     EXPECT_EQ(imageObjectPosition.GetSizeValueX(), SIZE_VALUE_ZERO);
297     EXPECT_EQ(imageObjectPosition.GetSizeTypeX(), BackgroundImagePositionType::PERCENT);
298     EXPECT_EQ(imageObjectPosition.GetSizeValueY(), SIZE_VALUE_HUNDRED);
299     EXPECT_EQ(imageObjectPosition.GetSizeTypeY(), BackgroundImagePositionType::PERCENT);
300 
301     /**
302      * @tc.steps: step5. parse the param contain "right" and "top".
303      * @tc.expected: step5. The value of the params are as expected.
304      */
305     imageObjectPosition = ParseImageObjectPosition("right top");
306     EXPECT_EQ(imageObjectPosition.GetSizeValueX(), SIZE_VALUE_HUNDRED);
307     EXPECT_EQ(imageObjectPosition.GetSizeTypeX(), BackgroundImagePositionType::PERCENT);
308     EXPECT_EQ(imageObjectPosition.GetSizeValueY(), SIZE_VALUE_ZERO);
309     EXPECT_EQ(imageObjectPosition.GetSizeTypeY(), BackgroundImagePositionType::PERCENT);
310 }
311 
312 /**
313  * @tc.name: CommonUtilsTest006
314  * @tc.desc: ClipPath prase
315  * @tc.type: FUNC
316  */
317 HWTEST_F(CommonUtilsTest, CommonUtilsTest006, TestSize.Level1)
318 {
319     /**
320      * @tc.steps: step1. Create ClipPath ,input a string which contain "inset()" and "margin-box"
321      * @tc.expected: step1. The value of the params are as expected.
322      */
323     auto clipPath = CreateClipPath("inset(margin-box)");
324     EXPECT_NE(clipPath, nullptr);
325     EXPECT_EQ(clipPath->GetGeometryBoxType(), GeometryBoxType::MARGIN_BOX);
326 }
327 
328 /**
329  * @tc.name: CommonUtilsTest007
330  * @tc.desc: RadialGradient parse
331  * @tc.type: FUNC
332  */
333 HWTEST_F(CommonUtilsTest, CommonUtilsTest007, TestSize.Level1)
334 {
335     /**
336      * @tc.steps: step1. parse the param.
337      * @tc.expected: step1. The value of the params are as expected.
338      */
339     auto radialGradient = ParseRadialGradientSize("closest-corner");
340     EXPECT_EQ(radialGradient, RadialSizeType::CLOSEST_CORNER);
341     radialGradient = ParseRadialGradientSize("closest-side");
342     EXPECT_EQ(radialGradient, RadialSizeType::CLOSEST_SIDE);
343     radialGradient = ParseRadialGradientSize("farthest-corner");
344     EXPECT_EQ(radialGradient, RadialSizeType::FARTHEST_CORNER);
345     radialGradient = ParseRadialGradientSize("farthest-side");
346     EXPECT_EQ(radialGradient, RadialSizeType::FARTHEST_SIDE);
347 }
348 
349 /**
350  * @tc.name: CommonUtilsTest008
351  * @tc.desc: TransitionType parse
352  * @tc.type: FUNC
353  */
354 HWTEST_F(CommonUtilsTest, CommonUtilsTest008, TestSize.Level1)
355 {
356     /**
357      * @tc.steps: step1. parse the param.
358      * @tc.expected: step1. The value of the params are as expected.
359      */
360     auto transitionType = ParseTransitionType("All");
361     EXPECT_EQ(transitionType, TransitionType::ALL);
362     transitionType = ParseTransitionType("Insert");
363     EXPECT_EQ(transitionType, TransitionType::APPEARING);
364     transitionType = ParseTransitionType("Delete");
365     EXPECT_EQ(transitionType, TransitionType::DISAPPEARING);
366     transitionType = ParseTransitionType("Modify");
367     EXPECT_EQ(transitionType, TransitionType::ALL);
368 }
369 } // namespace OHOS::Ace::Framework
370