Index: cc/base/math_util_unittest.cc |
diff --git a/cc/base/math_util_unittest.cc b/cc/base/math_util_unittest.cc |
index 6e276c25d64736057f975c17ce1b4ee6c08f7c46..fb8c27f1f67af3853bc0a0ab394bcaf420c26c33 100644 |
--- a/cc/base/math_util_unittest.cc |
+++ b/cc/base/math_util_unittest.cc |
@@ -120,5 +120,78 @@ TEST(MathUtilTest, VectorProjection) { |
projected_vector.y() / target_vector.y()); |
} |
+TEST(MathUtilTest, MapEnclosedRectWith2dAxisAlignedTransform) { |
+ gfx::Rect input(1, 2, 3, 4); |
+ gfx::Rect output; |
+ gfx::Transform transform; |
+ |
+ // Identity. |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_EQ(input, output); |
+ |
+ // Integer translate. |
+ transform.Translate(2.0, 3.0); |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_EQ(gfx::Rect(3, 5, 3, 4), output); |
+ |
+ // Non-integer translate. |
+ transform.Translate(0.5, 0.5); |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_EQ(gfx::Rect(4, 6, 2, 3), output); |
+ |
+ // Scale. |
+ transform = gfx::Transform(); |
+ transform.Scale(2.0, 3.0); |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_EQ(gfx::Rect(2, 6, 6, 12), output); |
+ |
+ // Rotate Z. |
+ transform = gfx::Transform(); |
+ transform.Translate(1.0, 2.0); |
+ transform.RotateAboutZAxis(90.0); |
+ transform.Translate(-1.0, -2.0); |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_EQ(gfx::Rect(-3, 2, 4, 3), output); |
+ |
+ // Rotate X. |
+ transform = gfx::Transform(); |
+ transform.RotateAboutXAxis(90.0); |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_TRUE(output.IsEmpty()); |
+ |
+ transform = gfx::Transform(); |
+ transform.RotateAboutXAxis(180.0); |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_EQ(gfx::Rect(1, -6, 3, 4), output); |
+ |
+ // Rotate Y. |
+ transform = gfx::Transform(); |
+ transform.RotateAboutYAxis(90.0); |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_TRUE(output.IsEmpty()); |
+ |
+ transform = gfx::Transform(); |
+ transform.RotateAboutYAxis(180.0); |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_EQ(gfx::Rect(-4, 2, 3, 4), output); |
+ |
+ // Translate Z. |
+ transform = gfx::Transform(); |
+ transform.ApplyPerspectiveDepth(10.0); |
+ transform.Translate3d(0.0, 0.0, 5.0); |
+ output = |
+ MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(transform, input); |
+ EXPECT_EQ(gfx::Rect(2, 4, 6, 8), output); |
+} |
+ |
} // namespace |
} // namespace cc |