Chromium Code Reviews| 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 |