| Index: gfx/rect_unittest.cc
|
| ===================================================================
|
| --- gfx/rect_unittest.cc (revision 73487)
|
| +++ gfx/rect_unittest.cc (working copy)
|
| @@ -1,314 +0,0 @@
|
| -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "gfx/rect.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -typedef testing::Test RectTest;
|
| -
|
| -TEST(RectTest, Contains) {
|
| - static const struct ContainsCase {
|
| - int rect_x;
|
| - int rect_y;
|
| - int rect_width;
|
| - int rect_height;
|
| - int point_x;
|
| - int point_y;
|
| - bool contained;
|
| - } contains_cases[] = {
|
| - {0, 0, 10, 10, 0, 0, true},
|
| - {0, 0, 10, 10, 5, 5, true},
|
| - {0, 0, 10, 10, 9, 9, true},
|
| - {0, 0, 10, 10, 5, 10, false},
|
| - {0, 0, 10, 10, 10, 5, false},
|
| - {0, 0, 10, 10, -1, -1, false},
|
| - {0, 0, 10, 10, 50, 50, false},
|
| - #ifdef NDEBUG
|
| - {0, 0, -10, -10, 0, 0, false},
|
| - #endif // NDEBUG
|
| - };
|
| - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(contains_cases); ++i) {
|
| - const ContainsCase& value = contains_cases[i];
|
| - gfx::Rect rect(value.rect_x, value.rect_y,
|
| - value.rect_width, value.rect_height);
|
| - EXPECT_EQ(value.contained, rect.Contains(value.point_x, value.point_y));
|
| - }
|
| -}
|
| -
|
| -TEST(RectTest, Intersects) {
|
| - static const struct {
|
| - int x1; // rect 1
|
| - int y1;
|
| - int w1;
|
| - int h1;
|
| - int x2; // rect 2
|
| - int y2;
|
| - int w2;
|
| - int h2;
|
| - bool intersects;
|
| - } tests[] = {
|
| - { 0, 0, 0, 0, 0, 0, 0, 0, false },
|
| - { 0, 0, 10, 10, 0, 0, 10, 10, true },
|
| - { 0, 0, 10, 10, 10, 10, 10, 10, false },
|
| - { 10, 10, 10, 10, 0, 0, 10, 10, false },
|
| - { 10, 10, 10, 10, 5, 5, 10, 10, true },
|
| - { 10, 10, 10, 10, 15, 15, 10, 10, true },
|
| - { 10, 10, 10, 10, 20, 15, 10, 10, false },
|
| - { 10, 10, 10, 10, 21, 15, 10, 10, false }
|
| - };
|
| - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
|
| - gfx::Rect r1(tests[i].x1, tests[i].y1, tests[i].w1, tests[i].h1);
|
| - gfx::Rect r2(tests[i].x2, tests[i].y2, tests[i].w2, tests[i].h2);
|
| - EXPECT_EQ(tests[i].intersects, r1.Intersects(r2));
|
| - }
|
| -}
|
| -
|
| -TEST(RectTest, Intersect) {
|
| - static const struct {
|
| - int x1; // rect 1
|
| - int y1;
|
| - int w1;
|
| - int h1;
|
| - int x2; // rect 2
|
| - int y2;
|
| - int w2;
|
| - int h2;
|
| - int x3; // rect 3: the union of rects 1 and 2
|
| - int y3;
|
| - int w3;
|
| - int h3;
|
| - } tests[] = {
|
| - { 0, 0, 0, 0, // zeros
|
| - 0, 0, 0, 0,
|
| - 0, 0, 0, 0 },
|
| - { 0, 0, 4, 4, // equal
|
| - 0, 0, 4, 4,
|
| - 0, 0, 4, 4 },
|
| - { 0, 0, 4, 4, // neighboring
|
| - 4, 4, 4, 4,
|
| - 0, 0, 0, 0 },
|
| - { 0, 0, 4, 4, // overlapping corners
|
| - 2, 2, 4, 4,
|
| - 2, 2, 2, 2 },
|
| - { 0, 0, 4, 4, // T junction
|
| - 3, 1, 4, 2,
|
| - 3, 1, 1, 2 },
|
| - { 3, 0, 2, 2, // gap
|
| - 0, 0, 2, 2,
|
| - 0, 0, 0, 0 }
|
| - };
|
| - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
|
| - gfx::Rect r1(tests[i].x1, tests[i].y1, tests[i].w1, tests[i].h1);
|
| - gfx::Rect r2(tests[i].x2, tests[i].y2, tests[i].w2, tests[i].h2);
|
| - gfx::Rect r3(tests[i].x3, tests[i].y3, tests[i].w3, tests[i].h3);
|
| - gfx::Rect ir = r1.Intersect(r2);
|
| - EXPECT_EQ(r3.x(), ir.x());
|
| - EXPECT_EQ(r3.y(), ir.y());
|
| - EXPECT_EQ(r3.width(), ir.width());
|
| - EXPECT_EQ(r3.height(), ir.height());
|
| - }
|
| -}
|
| -
|
| -TEST(RectTest, Union) {
|
| - static const struct Test {
|
| - int x1; // rect 1
|
| - int y1;
|
| - int w1;
|
| - int h1;
|
| - int x2; // rect 2
|
| - int y2;
|
| - int w2;
|
| - int h2;
|
| - int x3; // rect 3: the union of rects 1 and 2
|
| - int y3;
|
| - int w3;
|
| - int h3;
|
| - } tests[] = {
|
| - { 0, 0, 0, 0,
|
| - 0, 0, 0, 0,
|
| - 0, 0, 0, 0 },
|
| - { 0, 0, 4, 4,
|
| - 0, 0, 4, 4,
|
| - 0, 0, 4, 4 },
|
| - { 0, 0, 4, 4,
|
| - 4, 4, 4, 4,
|
| - 0, 0, 8, 8 },
|
| - { 0, 0, 4, 4,
|
| - 0, 5, 4, 4,
|
| - 0, 0, 4, 9 },
|
| - { 0, 0, 2, 2,
|
| - 3, 3, 2, 2,
|
| - 0, 0, 5, 5 },
|
| - { 3, 3, 2, 2, // reverse r1 and r2 from previous test
|
| - 0, 0, 2, 2,
|
| - 0, 0, 5, 5 },
|
| - { 0, 0, 0, 0, // union with empty rect
|
| - 2, 2, 2, 2,
|
| - 2, 2, 2, 2 }
|
| - };
|
| - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
|
| - gfx::Rect r1(tests[i].x1, tests[i].y1, tests[i].w1, tests[i].h1);
|
| - gfx::Rect r2(tests[i].x2, tests[i].y2, tests[i].w2, tests[i].h2);
|
| - gfx::Rect r3(tests[i].x3, tests[i].y3, tests[i].w3, tests[i].h3);
|
| - gfx::Rect u = r1.Union(r2);
|
| - EXPECT_EQ(r3.x(), u.x());
|
| - EXPECT_EQ(r3.y(), u.y());
|
| - EXPECT_EQ(r3.width(), u.width());
|
| - EXPECT_EQ(r3.height(), u.height());
|
| - }
|
| -}
|
| -
|
| -TEST(RectTest, Equals) {
|
| - ASSERT_TRUE(gfx::Rect(0, 0, 0, 0).Equals(gfx::Rect(0, 0, 0, 0)));
|
| - ASSERT_TRUE(gfx::Rect(1, 2, 3, 4).Equals(gfx::Rect(1, 2, 3, 4)));
|
| - ASSERT_FALSE(gfx::Rect(0, 0, 0, 0).Equals(gfx::Rect(0, 0, 0, 1)));
|
| - ASSERT_FALSE(gfx::Rect(0, 0, 0, 0).Equals(gfx::Rect(0, 0, 1, 0)));
|
| - ASSERT_FALSE(gfx::Rect(0, 0, 0, 0).Equals(gfx::Rect(0, 1, 0, 0)));
|
| - ASSERT_FALSE(gfx::Rect(0, 0, 0, 0).Equals(gfx::Rect(1, 0, 0, 0)));
|
| -}
|
| -
|
| -TEST(RectTest, AdjustToFit) {
|
| - static const struct Test {
|
| - int x1; // source
|
| - int y1;
|
| - int w1;
|
| - int h1;
|
| - int x2; // target
|
| - int y2;
|
| - int w2;
|
| - int h2;
|
| - int x3; // rect 3: results of invoking AdjustToFit
|
| - int y3;
|
| - int w3;
|
| - int h3;
|
| - } tests[] = {
|
| - { 0, 0, 2, 2,
|
| - 0, 0, 2, 2,
|
| - 0, 0, 2, 2 },
|
| - { 2, 2, 3, 3,
|
| - 0, 0, 4, 4,
|
| - 1, 1, 3, 3 },
|
| - { -1, -1, 5, 5,
|
| - 0, 0, 4, 4,
|
| - 0, 0, 4, 4 },
|
| - { 2, 2, 4, 4,
|
| - 0, 0, 3, 3,
|
| - 0, 0, 3, 3 },
|
| - { 2, 2, 1, 1,
|
| - 0, 0, 3, 3,
|
| - 2, 2, 1, 1 }
|
| - };
|
| - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
|
| - gfx::Rect r1(tests[i].x1, tests[i].y1, tests[i].w1, tests[i].h1);
|
| - gfx::Rect r2(tests[i].x2, tests[i].y2, tests[i].w2, tests[i].h2);
|
| - gfx::Rect r3(tests[i].x3, tests[i].y3, tests[i].w3, tests[i].h3);
|
| - gfx::Rect u(r1.AdjustToFit(r2));
|
| - EXPECT_EQ(r3.x(), u.x());
|
| - EXPECT_EQ(r3.y(), u.y());
|
| - EXPECT_EQ(r3.width(), u.width());
|
| - EXPECT_EQ(r3.height(), u.height());
|
| - }
|
| -}
|
| -
|
| -TEST(RectTest, Subtract) {
|
| - // Matching
|
| - EXPECT_TRUE(
|
| - gfx::Rect(10, 10, 20, 20).Subtract(
|
| - gfx::Rect(10, 10, 20, 20)).Equals(
|
| - gfx::Rect(0, 0, 0, 0)));
|
| -
|
| - // Contains
|
| - EXPECT_TRUE(
|
| - gfx::Rect(10, 10, 20, 20).Subtract(
|
| - gfx::Rect(5, 5, 30, 30)).Equals(
|
| - gfx::Rect(0, 0, 0, 0)));
|
| -
|
| - // No intersection
|
| - EXPECT_TRUE(
|
| - gfx::Rect(10, 10, 20, 20).Subtract(
|
| - gfx::Rect(30, 30, 20, 20)).Equals(
|
| - gfx::Rect(10, 10, 20, 20)));
|
| -
|
| - // Not a complete intersection in either direction
|
| - EXPECT_TRUE(
|
| - gfx::Rect(10, 10, 20, 20).Subtract(
|
| - gfx::Rect(15, 15, 20, 20)).Equals(
|
| - gfx::Rect(10, 10, 20, 20)));
|
| -
|
| - // Complete intersection in the x-direction
|
| - EXPECT_TRUE(
|
| - gfx::Rect(10, 10, 20, 20).Subtract(
|
| - gfx::Rect(10, 15, 20, 20)).Equals(
|
| - gfx::Rect(10, 10, 20, 5)));
|
| -
|
| - // Complete intersection in the x-direction
|
| - EXPECT_TRUE(
|
| - gfx::Rect(10, 10, 20, 20).Subtract(
|
| - gfx::Rect(5, 15, 30, 20)).Equals(
|
| - gfx::Rect(10, 10, 20, 5)));
|
| -
|
| - // Complete intersection in the x-direction
|
| - EXPECT_TRUE(
|
| - gfx::Rect(10, 10, 20, 20).Subtract(
|
| - gfx::Rect(5, 5, 30, 20)).Equals(
|
| - gfx::Rect(10, 25, 20, 5)));
|
| -
|
| - // Complete intersection in the y-direction
|
| - EXPECT_TRUE(
|
| - gfx::Rect(10, 10, 20, 20).Subtract(
|
| - gfx::Rect(10, 10, 10, 30)).Equals(
|
| - gfx::Rect(20, 10, 10, 20)));
|
| -
|
| - // Complete intersection in the y-direction
|
| - EXPECT_TRUE(
|
| - gfx::Rect(10, 10, 20, 20).Subtract(
|
| - gfx::Rect(5, 5, 20, 30)).Equals(
|
| - gfx::Rect(25, 10, 5, 20)));
|
| -}
|
| -
|
| -TEST(RectTest, IsEmpty) {
|
| - EXPECT_TRUE(gfx::Rect(0, 0, 0, 0).IsEmpty());
|
| - EXPECT_TRUE(gfx::Rect(0, 0, 0, 0).size().IsEmpty());
|
| - EXPECT_TRUE(gfx::Rect(0, 0, 10, 0).IsEmpty());
|
| - EXPECT_TRUE(gfx::Rect(0, 0, 10, 0).size().IsEmpty());
|
| - EXPECT_TRUE(gfx::Rect(0, 0, 0, 10).IsEmpty());
|
| - EXPECT_TRUE(gfx::Rect(0, 0, 0, 10).size().IsEmpty());
|
| - EXPECT_FALSE(gfx::Rect(0, 0, 10, 10).IsEmpty());
|
| - EXPECT_FALSE(gfx::Rect(0, 0, 10, 10).size().IsEmpty());
|
| -}
|
| -
|
| -TEST(RectTest, SharesEdgeWith) {
|
| - gfx::Rect r(2, 3, 4, 5);
|
| -
|
| - // Must be non-overlapping
|
| - EXPECT_FALSE(r.SharesEdgeWith(r));
|
| -
|
| - gfx::Rect just_above(2, 1, 4, 2);
|
| - gfx::Rect just_below(2, 8, 4, 2);
|
| - gfx::Rect just_left(0, 3, 2, 5);
|
| - gfx::Rect just_right(6, 3, 2, 5);
|
| -
|
| - EXPECT_TRUE(r.SharesEdgeWith(just_above));
|
| - EXPECT_TRUE(r.SharesEdgeWith(just_below));
|
| - EXPECT_TRUE(r.SharesEdgeWith(just_left));
|
| - EXPECT_TRUE(r.SharesEdgeWith(just_right));
|
| -
|
| - // Wrong placement
|
| - gfx::Rect same_height_no_edge(0, 0, 1, 5);
|
| - gfx::Rect same_width_no_edge(0, 0, 4, 1);
|
| -
|
| - EXPECT_FALSE(r.SharesEdgeWith(same_height_no_edge));
|
| - EXPECT_FALSE(r.SharesEdgeWith(same_width_no_edge));
|
| -
|
| - gfx::Rect just_above_no_edge(2, 1, 5, 2); // too wide
|
| - gfx::Rect just_below_no_edge(2, 8, 3, 2); // too narrow
|
| - gfx::Rect just_left_no_edge(0, 3, 2, 6); // too tall
|
| - gfx::Rect just_right_no_edge(6, 3, 2, 4); // too short
|
| -
|
| - EXPECT_FALSE(r.SharesEdgeWith(just_above_no_edge));
|
| - EXPECT_FALSE(r.SharesEdgeWith(just_below_no_edge));
|
| - EXPECT_FALSE(r.SharesEdgeWith(just_left_no_edge));
|
| - EXPECT_FALSE(r.SharesEdgeWith(just_right_no_edge));
|
| -}
|
|
|