EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(1.5));
}
-TEST(AnimationTest, TrimTimeAlternating) {
+TEST(AnimationTest, TrimTimeReverse) {
scoped_ptr<Animation> anim(CreateAnimation(-1));
- anim->set_alternates_direction(true);
- EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
+ anim->set_direction(Animation::Reverse);
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(0));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(0.25));
EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
- EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1.0));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(0.75));
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(1.0));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(1.25));
+}
+
+TEST(AnimationTest, TrimTimeAlternateInfiniteIterations) {
+ scoped_ptr<Animation> anim(CreateAnimation(-1));
+ anim->set_direction(Animation::Alternate);
+ EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(0.25));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(0.75));
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(1.0));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(1.25));
+}
+
+TEST(AnimationTest, TrimTimeAlternateOneIteration) {
+ scoped_ptr<Animation> anim(CreateAnimation(1));
+ anim->set_direction(Animation::Alternate);
+ EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(0.25));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(0.75));
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(1.0));
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(1.25));
+}
+
+TEST(AnimationTest, TrimTimeAlternateTwoIterations) {
+ scoped_ptr<Animation> anim(CreateAnimation(2));
+ anim->set_direction(Animation::Alternate);
+ EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(0.25));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(0.75));
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(1.0));
EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(1.25));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(1.75));
+ EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(2.0));
+ EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(2.25));
+}
+
+TEST(AnimationTest, TrimTimeAlternateReverseInfiniteIterations) {
+ scoped_ptr<Animation> anim(CreateAnimation(-1));
+ anim->set_direction(Animation::AlternateReverse);
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(0.25));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(0.75));
+ EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(1.0));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(1.25));
+}
+
+TEST(AnimationTest, TrimTimeAlternateReverseOneIteration) {
+ scoped_ptr<Animation> anim(CreateAnimation(1));
+ anim->set_direction(Animation::AlternateReverse);
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(0.25));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(0.75));
+ EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(1.0));
+ EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(1.25));
+}
+
+TEST(AnimationTest, TrimTimeAlternateReverseTwoIterations) {
+ scoped_ptr<Animation> anim(CreateAnimation(2));
+ anim->set_direction(Animation::AlternateReverse);
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(0.25));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(0.75));
+ EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(1.0));
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(1.25));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(1.75));
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(2.0));
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(2.25));
}
TEST(AnimationTest, TrimTimeStartTime) {
EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(6.0));
}
+TEST(AnimationTest, TrimTimeStartTimeReverse) {
+ scoped_ptr<Animation> anim(CreateAnimation(1));
+ anim->set_start_time(4);
+ anim->set_direction(Animation::Reverse);
+ EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(4.0));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(4.5));
+ EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(5.0));
+ EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(6.0));
+}
+
TEST(AnimationTest, TrimTimeTimeOffset) {
scoped_ptr<Animation> anim(CreateAnimation(1));
anim->set_time_offset(4);
EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1.0));
}
+TEST(AnimationTest, TrimTimeTimeOffsetReverse) {
+ scoped_ptr<Animation> anim(CreateAnimation(1));
+ anim->set_time_offset(4);
+ anim->set_start_time(4);
+ anim->set_direction(Animation::Reverse);
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
+ EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(1.0));
+ EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(1.0));
+}
+
TEST(AnimationTest, TrimTimeNegativeTimeOffset) {
scoped_ptr<Animation> anim(CreateAnimation(1));
anim->set_time_offset(-4);
EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(5.0));
}
+TEST(AnimationTest, TrimTimeNegativeTimeOffsetReverse) {
+ scoped_ptr<Animation> anim(CreateAnimation(1));
+ anim->set_time_offset(-4);
+ anim->set_direction(Animation::Reverse);
+
+ EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(4.0));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(4.5));
+ EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(5.0));
+}
+
TEST(AnimationTest, TrimTimePauseResume) {
scoped_ptr<Animation> anim(CreateAnimation(1));
anim->SetRunState(Animation::Running, 0.0);
EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1024.5));
}
+TEST(AnimationTest, TrimTimePauseResumeReverse) {
+ scoped_ptr<Animation> anim(CreateAnimation(1));
+ anim->set_direction(Animation::Reverse);
+ anim->SetRunState(Animation::Running, 0.0);
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
+ anim->SetRunState(Animation::Paused, 0.25);
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(1024.0));
+ anim->SetRunState(Animation::Running, 1024.0);
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(1024.0));
+ EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(1024.75));
+}
+
TEST(AnimationTest, TrimTimeSuspendResume) {
scoped_ptr<Animation> anim(CreateAnimation(1));
anim->SetRunState(Animation::Running, 0.0);
EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1024.5));
}
+TEST(AnimationTest, TrimTimeSuspendResumeReverse) {
+ scoped_ptr<Animation> anim(CreateAnimation(1));
+ anim->set_direction(Animation::Reverse);
+ anim->SetRunState(Animation::Running, 0.0);
+ EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(0.0));
+ EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(0.25));
+ anim->Suspend(0.75);
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(1024.0));
+ anim->Resume(1024);
+ EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(1024.0));
+ EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(1024.25));
+}
+
TEST(AnimationTest, TrimTimeZeroDuration) {
scoped_ptr<Animation> anim(CreateAnimation(0, 0));
anim->SetRunState(Animation::Running, 0.0);