diff options
Diffstat (limited to 'cc/animation/transform_operations_unittest.cc')
-rw-r--r-- | cc/animation/transform_operations_unittest.cc | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/cc/animation/transform_operations_unittest.cc b/cc/animation/transform_operations_unittest.cc index 7e344c7..8fc9b94 100644 --- a/cc/animation/transform_operations_unittest.cc +++ b/cc/animation/transform_operations_unittest.cc @@ -432,6 +432,22 @@ TEST(TransformOperationTest, BlendRotationFromIdentity) { EXPECT_TRANSFORMATION_MATRIX_EQ( expected, operations.Blend(*identity_operations[i], progress)); + + progress = -0.5; + + expected.MakeIdentity(); + expected.RotateAbout(gfx::Vector3dF(0, 0, 1), -180); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations.Blend(*identity_operations[i], progress)); + + progress = 1.5; + + expected.MakeIdentity(); + expected.RotateAbout(gfx::Vector3dF(0, 0, 1), 540); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations.Blend(*identity_operations[i], progress)); } } @@ -450,6 +466,22 @@ TEST(TransformOperationTest, BlendTranslationFromIdentity) { EXPECT_TRANSFORMATION_MATRIX_EQ( expected, operations.Blend(*identity_operations[i], progress)); + + progress = -0.5; + + expected.MakeIdentity(); + expected.Translate3d(-1, -1, -1); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations.Blend(*identity_operations[i], progress)); + + progress = 1.5; + + expected.MakeIdentity(); + expected.Translate3d(3, 3, 3); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations.Blend(*identity_operations[i], progress)); } } @@ -468,6 +500,22 @@ TEST(TransformOperationTest, BlendScaleFromIdentity) { EXPECT_TRANSFORMATION_MATRIX_EQ( expected, operations.Blend(*identity_operations[i], progress)); + + progress = -0.5; + + expected.MakeIdentity(); + expected.Scale3d(0, 0, 0); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations.Blend(*identity_operations[i], progress)); + + progress = 1.5; + + expected.MakeIdentity(); + expected.Scale3d(4, 4, 4); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations.Blend(*identity_operations[i], progress)); } } @@ -487,6 +535,24 @@ TEST(TransformOperationTest, BlendSkewFromIdentity) { EXPECT_TRANSFORMATION_MATRIX_EQ( expected, operations.Blend(*identity_operations[i], progress)); + + progress = -0.5; + + expected.MakeIdentity(); + expected.SkewX(-1); + expected.SkewY(-1); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations.Blend(*identity_operations[i], progress)); + + progress = 1.5; + + expected.MakeIdentity(); + expected.SkewX(3); + expected.SkewY(3); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations.Blend(*identity_operations[i], progress)); } } @@ -601,5 +667,45 @@ TEST(TransformOperationTest, BlendPerspectiveToIdentity) { } } +TEST(TransformOperationTest, ExtrapolatePerspectiveBlending) { + TransformOperations operations1; + operations1.AppendPerspective(1000); + + TransformOperations operations2; + operations2.AppendPerspective(500); + + gfx::Transform expected; + expected.ApplyPerspectiveDepth(250); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations1.Blend(operations2, -0.5)); + + expected.MakeIdentity(); + expected.ApplyPerspectiveDepth(1250); + + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations1.Blend(operations2, 1.5)); +} + +TEST(TransformOperationTest, ExtrapolateMatrixBlending) { + gfx::Transform transform1; + transform1.Translate3d(1, 1, 1); + TransformOperations operations1; + operations1.AppendMatrix(transform1); + + gfx::Transform transform2; + transform2.Translate3d(3, 3, 3); + TransformOperations operations2; + operations2.AppendMatrix(transform2); + + gfx::Transform expected; + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations1.Blend(operations2, 1.5)); + + expected.Translate3d(4, 4, 4); + EXPECT_TRANSFORMATION_MATRIX_EQ( + expected, operations1.Blend(operations2, -0.5)); +} + } // namespace } // namespace cc |