Index: third_party/WebKit/Source/platform/geometry/FloatRectTest.cpp |
diff --git a/third_party/WebKit/Source/platform/geometry/FloatRectTest.cpp b/third_party/WebKit/Source/platform/geometry/FloatRectTest.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dbde1a8db6526928827585a4cd062ed77ab67cb4 |
--- /dev/null |
+++ b/third_party/WebKit/Source/platform/geometry/FloatRectTest.cpp |
@@ -0,0 +1,117 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
fs
2016/01/13 10:22:03
2016
|
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "platform/geometry/FloatRect.h" |
+ |
+#include "platform/geometry/FloatPoint.h" |
+#include "platform/geometry/GeometryTestHelpers.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace blink { |
+ |
+TEST(FloatRectTest, DistanceTest) |
+{ |
+ |
+ // The area around/in the rectangle is defined in terms of |
+ // several regions: |
+ // |
+ // O--x |
+ // | |
+ // y |
+ // |
+ // FloatRect.x() FloatRect.maxX() |
+ // | | |
+ // 1 | 2 | 3 |
+ // ======+==========+====== --FloatRect.y() |
+ // 4 | 5(in) | 6 |
+ // ======+==========+====== --FloatRect.maxY() |
+ // 7 | 8 | 9 |
+ // |
+ // Ref. http://wiki.unity3d.com/index.php/Distance_from_a_point_to_a_rectangle |
+ |
+ FloatRect r1(100, 100, 250, 150); |
+ |
+ // `1` case |
+ FloatPoint p1(80, 80); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p1), 800.f); |
+ |
+ FloatPoint p2(-10, -10); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p2), 24200.f); |
+ |
+ FloatPoint p3(80, -10); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p3), 12500.f); |
+ |
+ // `2` case |
+ FloatPoint p4(110, 80); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p4), 20.f); |
+ |
+ FloatPoint p5(150, 0); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p5), 100.f); |
+ |
+ FloatPoint p6(180, -10); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p6), 110.f); |
+ |
+ // `3` case |
+ FloatPoint p7(400, 80); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p7), 2900.f); |
+ |
+ FloatPoint p8(360, -10); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p8), 12200.f); |
+ |
+ // `4` case |
+ FloatPoint p9(80, 110); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p9), 20.f); |
+ |
+ FloatPoint p10(-10, 180); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p10), 110.f); |
+ |
+ // `5`(& In) case |
+ FloatPoint p11(100, 100); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p11), 0.f); |
+ |
+ FloatPoint p12(150, 100); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p12), 0.f); |
+ |
+ FloatPoint p13(350, 100); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p13), 0.f); |
+ |
+ FloatPoint p14(350, 150); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p14), 0.f); |
+ |
+ FloatPoint p15(350, 250); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p15), 0.f); |
+ |
+ FloatPoint p16(150, 250); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p16), 0.f); |
+ |
+ FloatPoint p17(100, 250); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p17), 0.f); |
+ |
+ FloatPoint p18(100, 150); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p18), 0.f); |
+ |
+ FloatPoint p19(150, 150); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p19), 0.f); |
+ |
+ // `6` case |
+ FloatPoint p20(380, 150); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p20), 30.f); |
+ |
+ // `7` case |
+ FloatPoint p21(80, 280); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p21), 1300.f); |
+ |
+ FloatPoint p22(-10, 300); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p22), 14600.f); |
+ |
+ // `8` case |
+ FloatPoint p23(180, 300); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p23), 50.f); |
+ |
+ // `9` case |
+ FloatPoint p24(450, 450); |
+ EXPECT_PRED_FORMAT2(GeometryTest::AssertAlmostEqual, r1.distanceTo(p24), 50000.f); |
+} |
+ |
+} // namespace blink |