TEST(AnimationAnimationEffectTest, ZeroDurationSanity) { Timing timing; RefPtrWillBeRawPtr<TestAnimationEffect> animationNode = TestAnimationEffect::create(timing); EXPECT_EQ(0, animationNode->computedTiming().startTime()); animationNode->updateInheritedTime(0); EXPECT_EQ(AnimationEffect::PhaseAfter, animationNode->phase()); EXPECT_FALSE(animationNode->isInPlay()); EXPECT_FALSE(animationNode->isCurrent()); EXPECT_TRUE(animationNode->isInEffect()); EXPECT_EQ(0, animationNode->currentIteration()); EXPECT_EQ(0, animationNode->computedTiming().startTime()); EXPECT_EQ(0, animationNode->activeDurationInternal()); EXPECT_EQ(1, animationNode->timeFraction()); animationNode->updateInheritedTime(1); EXPECT_EQ(AnimationEffect::PhaseAfter, animationNode->phase()); EXPECT_FALSE(animationNode->isInPlay()); EXPECT_FALSE(animationNode->isCurrent()); EXPECT_TRUE(animationNode->isInEffect()); EXPECT_EQ(0, animationNode->currentIteration()); EXPECT_EQ(0, animationNode->computedTiming().startTime()); EXPECT_EQ(0, animationNode->activeDurationInternal()); EXPECT_EQ(1, animationNode->timeFraction()); }
TEST(AnimationAnimationEffectTest, InfiniteDurationZeroPlaybackRate) { Timing timing; timing.iterationDuration = std::numeric_limits<double>::infinity(); timing.playbackRate = 0; RefPtrWillBeRawPtr<TestAnimationEffect> animationNode = TestAnimationEffect::create(timing); EXPECT_EQ(0, animationNode->computedTiming().startTime()); animationNode->updateInheritedTime(0); EXPECT_EQ(std::numeric_limits<double>::infinity(), animationNode->activeDurationInternal()); EXPECT_EQ(AnimationEffect::PhaseActive, animationNode->phase()); EXPECT_TRUE(animationNode->isInPlay()); EXPECT_TRUE(animationNode->isCurrent()); EXPECT_TRUE(animationNode->isInEffect()); EXPECT_EQ(0, animationNode->currentIteration()); EXPECT_EQ(0, animationNode->timeFraction()); animationNode->updateInheritedTime(std::numeric_limits<double>::infinity()); EXPECT_EQ(std::numeric_limits<double>::infinity(), animationNode->activeDurationInternal()); EXPECT_EQ(AnimationEffect::PhaseAfter, animationNode->phase()); EXPECT_FALSE(animationNode->isInPlay()); EXPECT_FALSE(animationNode->isCurrent()); EXPECT_TRUE(animationNode->isInEffect()); EXPECT_EQ(0, animationNode->currentIteration()); EXPECT_EQ(0, animationNode->timeFraction()); }