1 /* 2 * Copyright (c) 2020-2021 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 "animator/easing_equation.h" 17 18 #include <climits> 19 #include <gtest/gtest.h> 20 21 using namespace testing::ext; 22 namespace OHOS { 23 namespace { 24 const int16_t START_POS = 0; 25 const int16_t END_POS = 100; 26 const int16_t DURATION_TIME = 4; 27 } 28 29 class EasingEquationTest : public testing::Test { 30 public: SetUpTestCase(void)31 static void SetUpTestCase(void) {} TearDownTestCase(void)32 static void TearDownTestCase(void) {} 33 }; 34 35 /** 36 * @tc.name: EasingEquationBackEaseIn_001 37 * @tc.desc: Verify BackEaseIn and GetHeight function. 38 * @tc.type: FUNC 39 * @tc.require: AR000DSMQM 40 */ 41 HWTEST_F(EasingEquationTest, EasingEquationBackEaseIn_001, TestSize.Level0) 42 { 43 const double overShoot = 2; 44 EasingEquation::SetBackOvershoot(overShoot); 45 uint16_t i = 0; 46 EXPECT_EQ(EasingEquation::BackEaseIn(START_POS, END_POS, i++, DURATION_TIME), 0); 47 EXPECT_EQ(EasingEquation::BackEaseIn(START_POS, END_POS, i++, DURATION_TIME), -7); // -7:the value for 1th s; 48 EXPECT_EQ(EasingEquation::BackEaseIn(START_POS, END_POS, i++, DURATION_TIME), -12); // -12:the value for 2th s; 49 EXPECT_EQ(EasingEquation::BackEaseIn(START_POS, END_POS, i++, DURATION_TIME), 14); // 14:the value for 3th s; 50 EXPECT_EQ(EasingEquation::BackEaseIn(START_POS, END_POS, i++, DURATION_TIME), END_POS); 51 } 52 53 /** 54 * @tc.name: EasingEquationBackEaseOut_001 55 * @tc.desc: Verify BackEaseOut and GetHeight function. 56 * @tc.type: FUNC 57 * @tc.require: AR000DSMQM 58 */ 59 HWTEST_F(EasingEquationTest, EasingEquationBackEaseOut_001, TestSize.Level1) 60 { 61 uint16_t i = 0; 62 EXPECT_EQ(EasingEquation::BackEaseOut(START_POS, END_POS, i++, DURATION_TIME), 0); 63 EXPECT_EQ(EasingEquation::BackEaseOut(START_POS, END_POS, i++, DURATION_TIME), 85); // 85:the value for 1th s; 64 EXPECT_EQ(EasingEquation::BackEaseOut(START_POS, END_POS, i++, DURATION_TIME), 112); // 112:the value for 2th s; 65 EXPECT_EQ(EasingEquation::BackEaseOut(START_POS, END_POS, i++, DURATION_TIME), 107); // 107:the value for 3th s; 66 EXPECT_EQ(EasingEquation::BackEaseOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 67 } 68 69 /** 70 * @tc.name: EasingEquationBackEaseInOut_001 71 * @tc.desc: Verify BackEaseInOut and GetHeight function. 72 * @tc.type: FUNC 73 * @tc.require: AR000DSMQM 74 */ 75 HWTEST_F(EasingEquationTest, EasingEquationBackEaseInOut_001, TestSize.Level1) 76 { 77 uint16_t i = 0; 78 EXPECT_EQ(EasingEquation::BackEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 0); 79 EXPECT_EQ(EasingEquation::BackEaseInOut(START_POS, END_POS, i++, DURATION_TIME), -6); // -6:the value for 1th s; 80 EXPECT_EQ(EasingEquation::BackEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 50); // 50:the value for 2th s; 81 EXPECT_EQ(EasingEquation::BackEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 106); // 106:the value for 3th s; 82 EXPECT_EQ(EasingEquation::BackEaseInOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 83 } 84 85 /** 86 * @tc.name: EasingEquationCircEaseIn_001 87 * @tc.desc: Verify CircEaseIn and GetHeight function. 88 * @tc.type: FUNC 89 * @tc.require: AR000DSMQM 90 */ 91 HWTEST_F(EasingEquationTest, EasingEquationCircEaseIn_001, TestSize.Level1) 92 { 93 uint16_t i = 0; 94 EXPECT_EQ(EasingEquation::CircEaseIn(START_POS, END_POS, i++, DURATION_TIME), 0); 95 EXPECT_EQ(EasingEquation::CircEaseIn(START_POS, END_POS, i++, DURATION_TIME), 3); // 3:the value for 1th s; 96 EXPECT_EQ(EasingEquation::CircEaseIn(START_POS, END_POS, i++, DURATION_TIME), 13); // 13:the value for 2th s; 97 EXPECT_EQ(EasingEquation::CircEaseIn(START_POS, END_POS, i++, DURATION_TIME), 33); // 33:the value for 3th s; 98 EXPECT_EQ(EasingEquation::CircEaseIn(START_POS, END_POS, i++, DURATION_TIME), END_POS); 99 } 100 101 /** 102 * @tc.name: EasingEquationCircEaseOut_001 103 * @tc.desc: Verify CircEaseOut and GetHeight function. 104 * @tc.type: FUNC 105 * @tc.require: AR000DSMQM 106 */ 107 HWTEST_F(EasingEquationTest, EasingEquationCircEaseOut_001, TestSize.Level1) 108 { 109 uint16_t i = 0; 110 EXPECT_EQ(EasingEquation::CircEaseOut(START_POS, END_POS, i++, DURATION_TIME), 0); 111 EXPECT_EQ(EasingEquation::CircEaseOut(START_POS, END_POS, i++, DURATION_TIME), 66); // 66:the value for 1th s; 112 EXPECT_EQ(EasingEquation::CircEaseOut(START_POS, END_POS, i++, DURATION_TIME), 86); // 86:the value for 2th s; 113 EXPECT_EQ(EasingEquation::CircEaseOut(START_POS, END_POS, i++, DURATION_TIME), 96); // 96:the value for 3th s; 114 EXPECT_EQ(EasingEquation::CircEaseOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 115 } 116 117 /** 118 * @tc.name: EasingEquationCircEaseInOut_001 119 * @tc.desc: Verify CircEaseInOut and GetHeight function. 120 * @tc.type: FUNC 121 * @tc.require: AR000DSMQM 122 */ 123 HWTEST_F(EasingEquationTest, EasingEquationCircEaseInOut_001, TestSize.Level1) 124 { 125 uint16_t i = 0; 126 EXPECT_EQ(EasingEquation::CircEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 0); 127 EXPECT_EQ(EasingEquation::CircEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 6); // 6:the value for 1th s; 128 EXPECT_EQ(EasingEquation::CircEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 50); // 50:the value for 2th s; 129 EXPECT_EQ(EasingEquation::CircEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 93); // 93:the value for 3th s; 130 EXPECT_EQ(EasingEquation::CircEaseInOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 131 } 132 133 /** 134 * @tc.name: EasingEquationCubicEaseIn_001 135 * @tc.desc: Verify CubicEaseIn and GetHeight function. 136 * @tc.type: FUNC 137 * @tc.require: AR000DSMQM 138 */ 139 HWTEST_F(EasingEquationTest, EasingEquationCubicEaseIn_001, TestSize.Level1) 140 { 141 uint16_t i = 0; 142 EXPECT_EQ(EasingEquation::CubicEaseIn(START_POS, END_POS, i++, DURATION_TIME), 0); 143 EXPECT_EQ(EasingEquation::CubicEaseIn(START_POS, END_POS, i++, DURATION_TIME), 1); // 1:the value for 1th s; 144 EXPECT_EQ(EasingEquation::CubicEaseIn(START_POS, END_POS, i++, DURATION_TIME), 12); // 12:the value for 2th s; 145 EXPECT_EQ(EasingEquation::CubicEaseIn(START_POS, END_POS, i++, DURATION_TIME), 42); // 42:the value for 3th s; 146 EXPECT_EQ(EasingEquation::CubicEaseIn(START_POS, END_POS, i++, DURATION_TIME), END_POS); 147 } 148 149 /** 150 * @tc.name: EasingEquationCubicEaseOut_001 151 * @tc.desc: Verify CubicEaseOut and GetHeight function. 152 * @tc.type: FUNC 153 * @tc.require: AR000DSMQM 154 */ 155 HWTEST_F(EasingEquationTest, EasingEquationCubicEaseOut_001, TestSize.Level1) 156 { 157 uint16_t i = 0; 158 EXPECT_EQ(EasingEquation::CubicEaseOut(START_POS, END_POS, i++, DURATION_TIME), 0); 159 EXPECT_EQ(EasingEquation::CubicEaseOut(START_POS, END_POS, i++, DURATION_TIME), 57); // 57:the value for 1th s; 160 EXPECT_EQ(EasingEquation::CubicEaseOut(START_POS, END_POS, i++, DURATION_TIME), 87); // 87:the value for 2th s; 161 EXPECT_EQ(EasingEquation::CubicEaseOut(START_POS, END_POS, i++, DURATION_TIME), 98); // 98:the value for 3th s; 162 EXPECT_EQ(EasingEquation::CubicEaseOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 163 } 164 165 /** 166 * @tc.name: EasingEquationCubicEaseInOut_001 167 * @tc.desc: Verify CubicEaseInOut and GetHeight function. 168 * @tc.type: FUNC 169 * @tc.require: AR000DSMQM 170 */ 171 HWTEST_F(EasingEquationTest, EasingEquationCubicEaseInOut_001, TestSize.Level1) 172 { 173 uint16_t i = 0; 174 EXPECT_EQ(EasingEquation::CubicEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 0); 175 EXPECT_EQ(EasingEquation::CubicEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 6); // 6:the value for 1th s; 176 EXPECT_EQ(EasingEquation::CubicEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 50); // 50:the value for 2th s; 177 EXPECT_EQ(EasingEquation::CubicEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 93); // 93:the value for 3th s; 178 EXPECT_EQ(EasingEquation::CubicEaseInOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 179 } 180 181 /** 182 * @tc.name: EasingEquationLinearEaseNone_001 183 * @tc.desc: Verify LinearEaseNone and GetHeight function. 184 * @tc.type: FUNC 185 * @tc.require: AR000DSMQM 186 */ 187 HWTEST_F(EasingEquationTest, EasingEquationLinearEaseNone_001, TestSize.Level1) 188 { 189 uint16_t i = 0; 190 EXPECT_EQ(EasingEquation::LinearEaseNone(START_POS, END_POS, i++, DURATION_TIME), 0); 191 EXPECT_EQ(EasingEquation::LinearEaseNone(START_POS, END_POS, i++, DURATION_TIME), 25); // 25:the value for 1th s; 192 EXPECT_EQ(EasingEquation::LinearEaseNone(START_POS, END_POS, i++, DURATION_TIME), 50); // 50:the value for 2th s; 193 EXPECT_EQ(EasingEquation::LinearEaseNone(START_POS, END_POS, i++, DURATION_TIME), 75); // 75:the value for 3th s; 194 EXPECT_EQ(EasingEquation::LinearEaseNone(START_POS, END_POS, i++, DURATION_TIME), END_POS); 195 } 196 197 /** 198 * @tc.name: EasingEquationQuadEaseIn_001 199 * @tc.desc: Verify QuadEaseIn and GetHeight function. 200 * @tc.type: FUNC 201 * @tc.require: AR000DSMQM 202 */ 203 HWTEST_F(EasingEquationTest, EasingEquationQuadEaseIn_001, TestSize.Level1) 204 { 205 uint16_t i = 0; 206 EXPECT_EQ(EasingEquation::QuadEaseIn(START_POS, END_POS, i++, DURATION_TIME), 0); 207 EXPECT_EQ(EasingEquation::QuadEaseIn(START_POS, END_POS, i++, DURATION_TIME), 6); // 6:the value for 1th s; 208 EXPECT_EQ(EasingEquation::QuadEaseIn(START_POS, END_POS, i++, DURATION_TIME), 25); // 25:the value for 2th s; 209 EXPECT_EQ(EasingEquation::QuadEaseIn(START_POS, END_POS, i++, DURATION_TIME), 56); // 56:the value for 3th s; 210 EXPECT_EQ(EasingEquation::QuadEaseIn(START_POS, END_POS, i++, DURATION_TIME), END_POS); 211 } 212 213 /** 214 * @tc.name: EasingEquationQuadEaseOut_001 215 * @tc.desc: Verify QuadEaseOut and GetHeight function. 216 * @tc.type: FUNC 217 * @tc.require: AR000DSMQM 218 */ 219 HWTEST_F(EasingEquationTest, EasingEquationQuadEaseOut_001, TestSize.Level1) 220 { 221 uint16_t i = 0; 222 EXPECT_EQ(EasingEquation::QuadEaseOut(START_POS, END_POS, i++, DURATION_TIME), 0); 223 EXPECT_EQ(EasingEquation::QuadEaseOut(START_POS, END_POS, i++, DURATION_TIME), 43); // 43:the value for 1th s; 224 EXPECT_EQ(EasingEquation::QuadEaseOut(START_POS, END_POS, i++, DURATION_TIME), 75); // 75:the value for 2th s; 225 EXPECT_EQ(EasingEquation::QuadEaseOut(START_POS, END_POS, i++, DURATION_TIME), 93); // 93:the value for 3th s; 226 EXPECT_EQ(EasingEquation::QuadEaseOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 227 } 228 229 /** 230 * @tc.name: EasingEquationQuadEaseInOut_001 231 * @tc.desc: Verify QuadEaseInOut and GetHeight function. 232 * @tc.type: FUNC 233 * @tc.require: AR000DSMQM 234 */ 235 HWTEST_F(EasingEquationTest, EasingEquationQuadEaseInOut_001, TestSize.Level1) 236 { 237 uint16_t i = 0; 238 EXPECT_EQ(EasingEquation::QuadEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 0); 239 EXPECT_EQ(EasingEquation::QuadEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 12); // 12:the value for 1th s; 240 EXPECT_EQ(EasingEquation::QuadEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 50); // 50:the value for 2th s; 241 EXPECT_EQ(EasingEquation::QuadEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 87); // 87:the value for 3th s; 242 EXPECT_EQ(EasingEquation::QuadEaseInOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 243 } 244 245 /** 246 * @tc.name: EasingEquationQuintEaseIn_001 247 * @tc.desc: Verify QuintEaseIn and GetHeight function. 248 * @tc.type: FUNC 249 * @tc.require: AR000DSMQM 250 */ 251 HWTEST_F(EasingEquationTest, EasingEquationQuintEaseIn_001, TestSize.Level1) 252 { 253 uint16_t i = 0; 254 EXPECT_EQ(EasingEquation::QuintEaseIn(START_POS, END_POS, i++, DURATION_TIME), 0); 255 EXPECT_EQ(EasingEquation::QuintEaseIn(START_POS, END_POS, i++, DURATION_TIME), 0); // 0:the value for 1th s; 256 EXPECT_EQ(EasingEquation::QuintEaseIn(START_POS, END_POS, i++, DURATION_TIME), 3); // 3:the value for 2th s; 257 EXPECT_EQ(EasingEquation::QuintEaseIn(START_POS, END_POS, i++, DURATION_TIME), 23); // 23:the value for 3th s; 258 EXPECT_EQ(EasingEquation::QuintEaseIn(START_POS, END_POS, i++, DURATION_TIME), END_POS); 259 } 260 261 /** 262 * @tc.name: EasingEquationQuintEaseOut_001 263 * @tc.desc: Verify QuintEaseOut and GetHeight function. 264 * @tc.type: FUNC 265 * @tc.require: AR000DSMQM 266 */ 267 HWTEST_F(EasingEquationTest, EasingEquationQuintEaseOut_001, TestSize.Level1) 268 { 269 uint16_t i = 0; 270 EXPECT_EQ(EasingEquation::QuintEaseOut(START_POS, END_POS, i++, DURATION_TIME), 0); 271 EXPECT_EQ(EasingEquation::QuintEaseOut(START_POS, END_POS, i++, DURATION_TIME), 76); // 76:the value for 1th s; 272 EXPECT_EQ(EasingEquation::QuintEaseOut(START_POS, END_POS, i++, DURATION_TIME), 96); // 96:the value for 2th s; 273 EXPECT_EQ(EasingEquation::QuintEaseOut(START_POS, END_POS, i++, DURATION_TIME), 99); // 99:the value for 3th s; 274 EXPECT_EQ(EasingEquation::QuintEaseOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 275 } 276 277 /** 278 * @tc.name: EasingEquationQuintEaseInOut_001 279 * @tc.desc: Verify QuintEaseInOut and GetHeight function. 280 * @tc.type: FUNC 281 * @tc.require: AR000DSMQM 282 */ 283 HWTEST_F(EasingEquationTest, EasingEquationQuintEaseInOut_001, TestSize.Level1) 284 { 285 uint16_t i = 0; 286 EXPECT_EQ(EasingEquation::QuintEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 0); 287 EXPECT_EQ(EasingEquation::QuintEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 1); // 1:the value for 1th s; 288 EXPECT_EQ(EasingEquation::QuintEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 50); // 50:the value for 2th s; 289 EXPECT_EQ(EasingEquation::QuintEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 98); // 87:the value for 3th s; 290 EXPECT_EQ(EasingEquation::QuintEaseInOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 291 } 292 293 /** 294 * @tc.name: EasingEquationSineEaseIn_001 295 * @tc.desc: Verify SineEaseIn and GetHeight function. 296 * @tc.type: FUNC 297 * @tc.require: AR000DSMQM 298 */ 299 HWTEST_F(EasingEquationTest, EasingEquationSineEaseIn_001, TestSize.Level1) 300 { 301 uint16_t i = 0; 302 EXPECT_EQ(EasingEquation::SineEaseIn(START_POS, END_POS, i++, DURATION_TIME), 0); 303 EXPECT_EQ(EasingEquation::SineEaseIn(START_POS, END_POS, i++, DURATION_TIME), 7); // 7:the value for 1th s; 304 EXPECT_EQ(EasingEquation::SineEaseIn(START_POS, END_POS, i++, DURATION_TIME), 29); // 29:the value for 2th s; 305 EXPECT_EQ(EasingEquation::SineEaseIn(START_POS, END_POS, i++, DURATION_TIME), 60); // 60:the value for 3th s; 306 EXPECT_EQ(EasingEquation::SineEaseIn(START_POS, END_POS, i++, DURATION_TIME), END_POS); 307 } 308 309 /** 310 * @tc.name: EasingEquationSineEaseOut_001 311 * @tc.desc: Verify SineEaseOut and GetHeight function. 312 * @tc.type: FUNC 313 * @tc.require: AR000DSMQM 314 */ 315 HWTEST_F(EasingEquationTest, EasingEquationSineEaseOut_001, TestSize.Level1) 316 { 317 uint16_t i = 0; 318 EXPECT_EQ(EasingEquation::SineEaseOut(START_POS, END_POS, i++, DURATION_TIME), 0); 319 EXPECT_EQ(EasingEquation::SineEaseOut(START_POS, END_POS, i++, DURATION_TIME), 37); // 37:the value for 1th s; 320 EXPECT_EQ(EasingEquation::SineEaseOut(START_POS, END_POS, i++, DURATION_TIME), 70); // 70:the value for 2th s; 321 EXPECT_EQ(EasingEquation::SineEaseOut(START_POS, END_POS, i++, DURATION_TIME), 92); // 92:the value for 3th s; 322 EXPECT_EQ(EasingEquation::SineEaseOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 323 } 324 325 /** 326 * @tc.name: EasingEquationSineEaseInOut_001 327 * @tc.desc: Verify SineEaseInOut and GetHeight function. 328 * @tc.type: FUNC 329 * @tc.require: AR000DSMQM 330 */ 331 HWTEST_F(EasingEquationTest, EasingEquationSineEaseInOut_001, TestSize.Level1) 332 { 333 uint16_t i = 0; 334 EXPECT_EQ(EasingEquation::SineEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 0); 335 EXPECT_EQ(EasingEquation::SineEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 14); // 14:the value for 1th s; 336 EXPECT_EQ(EasingEquation::SineEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 50); // 50:the value for 2th s; 337 EXPECT_EQ(EasingEquation::SineEaseInOut(START_POS, END_POS, i++, DURATION_TIME), 85); // 85:the value for 3th s; 338 EXPECT_EQ(EasingEquation::SineEaseInOut(START_POS, END_POS, i++, DURATION_TIME), END_POS); 339 } 340 } // namespace OHOS 341