virtual bool updateChildrenAndEffects() const OVERRIDE { return false; }
void willDetach() { }
TestTimedItemEventDelegate* eventDelegate() { return m_eventDelegate; }
- virtual double calculateTimeToEffectChange(double localTime, double timeToNextIteration) const OVERRIDE
+ virtual double calculateTimeToEffectChange(bool forwards, double localTime, double timeToNextIteration) const OVERRIDE
{
m_localTime = localTime;
m_timeToNextIteration = timeToNextIteration;
return -1;
}
-
double takeLocalTime()
{
const double result = m_localTime;
TEST(AnimationTimedItemTest, Sanity)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = 2;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
EXPECT_EQ(1, timedItem->timeFraction());
}
+TEST(AnimationTimedItemTest, FillAuto)
+{
+ Timing timing;
+ timing.iterationDuration = 1;
+ RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
+
+ timedItem->updateInheritedTime(-1);
+ EXPECT_EQ(0, timedItem->timeFraction());
+
+ timedItem->updateInheritedTime(2);
+ EXPECT_EQ(1, timedItem->timeFraction());
+}
+
TEST(AnimationTimedItemTest, FillForwards)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
+ timing.fillMode = Timing::FillModeForwards;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
timedItem->updateInheritedTime(-1);
TEST(AnimationTimedItemTest, FillBackwards)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
timing.fillMode = Timing::FillModeBackwards;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, FillBoth)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
timing.fillMode = Timing::FillModeBoth;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, StartDelay)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
+ timing.fillMode = Timing::FillModeForwards;
timing.startDelay = 0.5;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, ZeroIteration)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
+ timing.fillMode = Timing::FillModeForwards;
timing.iterationCount = 0;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, InfiniteIteration)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
+ timing.fillMode = Timing::FillModeForwards;
timing.iterationCount = std::numeric_limits<double>::infinity();
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
{
Timing timing;
timing.iterationCount = 2;
- timing.hasIterationDuration = true;
timing.iterationDuration = 2;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
Timing timing;
timing.iterationStart = 1.2;
timing.iterationCount = 2.2;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
timing.fillMode = Timing::FillModeBoth;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
{
Timing timing;
timing.iterationCount = 10;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
timing.direction = Timing::PlaybackDirectionAlternate;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
{
Timing timing;
timing.iterationCount = 10;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
timing.direction = Timing::PlaybackDirectionAlternateReverse;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, ZeroDurationFillForwards)
{
Timing timing;
+ timing.fillMode = Timing::FillModeForwards;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
timedItem->updateInheritedTime(-1);
TEST(AnimationTimedItemTest, ZeroDurationStartDelay)
{
Timing timing;
+ timing.fillMode = Timing::FillModeForwards;
timing.startDelay = 0.5;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, ZeroDurationInfiniteIteration)
{
Timing timing;
+ timing.fillMode = Timing::FillModeForwards;
timing.iterationCount = std::numeric_limits<double>::infinity();
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, ZeroDurationIteration)
{
Timing timing;
+ timing.fillMode = Timing::FillModeForwards;
timing.iterationCount = 2;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, ZeroDurationIterationAlternate)
{
Timing timing;
+ timing.fillMode = Timing::FillModeForwards;
timing.iterationCount = 2;
timing.direction = Timing::PlaybackDirectionAlternate;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, ZeroDurationIterationAlternateReverse)
{
Timing timing;
+ timing.fillMode = Timing::FillModeForwards;
timing.iterationCount = 2;
timing.direction = Timing::PlaybackDirectionAlternateReverse;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, InfiniteDurationSanity)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = std::numeric_limits<double>::infinity();
timing.iterationCount = 1;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, InfiniteDurationZeroIterations)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = std::numeric_limits<double>::infinity();
timing.iterationCount = 0;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, InfiniteDurationInfiniteIterations)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = std::numeric_limits<double>::infinity();
timing.iterationCount = std::numeric_limits<double>::infinity();
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, InfiniteDurationZeroPlaybackRate)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = std::numeric_limits<double>::infinity();
timing.playbackRate = 0;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
EXPECT_EQ(0, timedItem->timeFraction());
}
+TEST(AnimationTimedItemTest, EndTime)
+{
+ Timing timing;
+ timing.startDelay = 1;
+ timing.endDelay = 2;
+ timing.iterationDuration = 4;
+ timing.iterationCount = 2;
+ RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
+ EXPECT_EQ(11, timedItem->endTime());
+}
+
TEST(AnimationTimedItemTest, Events)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
+ timing.fillMode = Timing::FillModeForwards;
timing.iterationCount = 2;
timing.startDelay = 1;
RefPtr<TestTimedItem> timedItem = TestTimedItem::create(timing);
TEST(AnimationTimedItemTest, TimeToEffectChange)
{
Timing timing;
- timing.hasIterationDuration = true;
timing.iterationDuration = 1;
+ timing.fillMode = Timing::FillModeForwards;
timing.iterationStart = 0.2;
timing.iterationCount = 2.5;
timing.startDelay = 1;