Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / cc / animation / animation_unittest.cc
index 8223cee..7768ceb 100644 (file)
@@ -49,13 +49,87 @@ TEST(AnimationTest, TrimTimeInfiniteIterations) {
   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) {
@@ -68,6 +142,17 @@ 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);
@@ -78,6 +163,17 @@ TEST(AnimationTest, TrimTimeTimeOffset) {
   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);
@@ -88,6 +184,17 @@ TEST(AnimationTest, TrimTimeNegativeTimeOffset) {
   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);
@@ -100,6 +207,19 @@ TEST(AnimationTest, TrimTimePauseResume) {
   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);
@@ -112,6 +232,19 @@ TEST(AnimationTest, TrimTimeSuspendResume) {
   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);