Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(927)

Unified Diff: cc/base/tiling_data_unittest.cc

Issue 2067213002: cc: Implement tile iteration order based on pyramid sequence. [old] Base URL: https://chromium.googlesource.com/chromium/src.git@tiling_data_fix
Patch Set: for review Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/base/tiling_data_unittest.cc
diff --git a/cc/base/tiling_data_unittest.cc b/cc/base/tiling_data_unittest.cc
index 004db11c3e23f47b6119d3aca2d0cc82cf4ffff3..9a96235f99c75f9a8602f6713cc63feafdb17550 100644
--- a/cc/base/tiling_data_unittest.cc
+++ b/cc/base/tiling_data_unittest.cc
@@ -1422,17 +1422,17 @@ TEST(TilingDataTest, SpiralDifferenceIteratorNoIgnoreFullConsider) {
// Layout of the tiling data, and expected return order:
// x 0 1 2
// y.------
- // 0| 4 3 2
- // 1| 5 * 1
- // 2| 6 7 8
+ // 0| 7 5 3
+ // 1| 8 * 1
+ // 2| 6 4 2
expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(2, 2));
expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(1, 2));
expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(0, 2));
expected.push_back(std::make_pair(0, 0));
expected.push_back(std::make_pair(0, 1));
- expected.push_back(std::make_pair(0, 2));
- expected.push_back(std::make_pair(1, 2));
- expected.push_back(std::make_pair(2, 2));
TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
@@ -1443,7 +1443,7 @@ TEST(TilingDataTest, SpiralDifferenceIteratorNoIgnoreFullConsider) {
// x 0 1 2
// y.------
// 0| 7 4 1
- // 1| 8 5 2 *
+ // 1| 8 5 2 *
// 2| 9 6 3
expected.clear();
expected.push_back(std::make_pair(2, 0));
@@ -1485,19 +1485,19 @@ TEST(TilingDataTest, SpiralDifferenceIteratorNoIgnoreFullConsider) {
// Layout of the tiling data, and expected return order:
// * x 0 1 2
// y.------
- // 0| 1 2 6
- // 1| 3 4 5
- // 2| 7 8 9
+ // 0| 1 4 9
+ // 1| 2 3 8
+ // 2| 6 5 7
expected.clear();
expected.push_back(std::make_pair(0, 0));
- expected.push_back(std::make_pair(1, 0));
expected.push_back(std::make_pair(0, 1));
expected.push_back(std::make_pair(1, 1));
- expected.push_back(std::make_pair(2, 1));
- expected.push_back(std::make_pair(2, 0));
- expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(1, 0));
expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(0, 2));
expected.push_back(std::make_pair(2, 2));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(2, 0));
TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
@@ -1552,13 +1552,13 @@ TEST(TilingDataTest, SpiralDifferenceIteratorSmallConsider) {
// 0|
// 1| *
// 2| 1 2
- // 3| 3 4
+ // 3| 4 3
// 4|
expected.clear();
expected.push_back(std::make_pair(2, 2));
expected.push_back(std::make_pair(3, 2));
- expected.push_back(std::make_pair(2, 3));
expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(2, 3));
TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
@@ -1570,12 +1570,12 @@ TEST(TilingDataTest, SpiralDifferenceIteratorSmallConsider) {
// y.----------
// 0| 2
// 1| *
- // 2| 3
- // 3| 4
- // 4| 5
+ // 2| 1
+ // 3| 3
+ // 4| 4
expected.clear();
- expected.push_back(std::make_pair(1, 0));
expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 0));
expected.push_back(std::make_pair(1, 3));
expected.push_back(std::make_pair(1, 4));
@@ -1592,13 +1592,13 @@ TEST(TilingDataTest, SpiralDifferenceIteratorHasIgnore) {
gfx::Rect ignore(50, 50);
// Layout of the tiling data, and expected return order:
- // x 0 1 2 3 4
- // y.----------
- // 0| . . . . .
- // 1| . * . . .
- // 2| . . . . .
- // 3| . . . . .
- // 4| . . . . .
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| I I I I I
+ // 1| I * I I I
+ // 2| I I I I I
+ // 3| I I I I I
+ // 4| I I I I I
expected.clear();
TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
@@ -1607,25 +1607,25 @@ TEST(TilingDataTest, SpiralDifferenceIteratorHasIgnore) {
ignore = gfx::Rect(15, 0, 20, 100);
// Layout of the tiling data, and expected return order:
- // x 0 1 2 3 4
- // y.----------
- // 0| 1 . . . 8
- // 1| 2 * . . 7
- // 2| 3 . . . 6
- // 3| 4 . . . 5
- // 4| 9 . . . 10
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 2 I I I 8
+ // 1| 3 * I I 7
+ // 2| 1 I I I 6
+ // 3| 4 I I I 5
+ // 4| 10 I I I 9
expected.clear();
+ expected.push_back(std::make_pair(0, 2));
expected.push_back(std::make_pair(0, 0));
expected.push_back(std::make_pair(0, 1));
- expected.push_back(std::make_pair(0, 2));
expected.push_back(std::make_pair(0, 3));
expected.push_back(std::make_pair(4, 3));
expected.push_back(std::make_pair(4, 2));
expected.push_back(std::make_pair(4, 1));
expected.push_back(std::make_pair(4, 0));
- expected.push_back(std::make_pair(0, 4));
expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(0, 4));
TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
@@ -1633,25 +1633,25 @@ TEST(TilingDataTest, SpiralDifferenceIteratorHasIgnore) {
ignore = gfx::Rect(50, 25);
// Layout of the tiling data, and expected return order:
- // x 0 1 2 3 4
- // y.----------
- // 0| . . . . .
- // 1| . * . . .
- // 2| . . . . .
- // 3| 1 2 3 4 5
- // 4| 6 7 8 9 10
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| I I I I I
+ // 1| I * I I I
+ // 2| I I I I I
+ // 3| 2 3 4 1 5
+ // 4| 7 8 9 10 6
expected.clear();
+ expected.push_back(std::make_pair(3, 3));
expected.push_back(std::make_pair(0, 3));
expected.push_back(std::make_pair(1, 3));
expected.push_back(std::make_pair(2, 3));
- expected.push_back(std::make_pair(3, 3));
expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 4));
expected.push_back(std::make_pair(0, 4));
expected.push_back(std::make_pair(1, 4));
expected.push_back(std::make_pair(2, 4));
expected.push_back(std::make_pair(3, 4));
- expected.push_back(std::make_pair(4, 4));
TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
}
@@ -1666,25 +1666,25 @@ TEST(TilingDataTest, SpiralDifferenceIteratorRectangleCenter) {
gfx::Rect center(25, 25, 1, 10);
// Layout of the tiling data, and expected return order:
- // x 0 1 2 3 4
- // y.----------
- // 0| J I H G F
- // 1| K 5 4 3 E
- // 2| L 6 * 2 D
- // 3| M 7 * 1 C
- // 4| N 8 9 A B
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 19 18 17 16 15
+ // 1| 20 8 6 4 14
+ // 2| 21 9 * 2 13
+ // 3| 22 10 * 1 12
+ // 4| 23 7 5 3 11
expected.clear();
expected.push_back(std::make_pair(3, 3));
expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 4));
expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(2, 4));
expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(1, 4));
expected.push_back(std::make_pair(1, 1));
expected.push_back(std::make_pair(1, 2));
expected.push_back(std::make_pair(1, 3));
- expected.push_back(std::make_pair(1, 4));
- expected.push_back(std::make_pair(2, 4));
- expected.push_back(std::make_pair(3, 4));
expected.push_back(std::make_pair(4, 4));
expected.push_back(std::make_pair(4, 3));
expected.push_back(std::make_pair(4, 2));
@@ -1705,29 +1705,29 @@ TEST(TilingDataTest, SpiralDifferenceIteratorRectangleCenter) {
center = gfx::Rect(15, 25, 20, 10);
// Layout of the tiling data, and expected return order:
- // x 0 1 2 3 4
- // y.----------
- // 0| J I H G F
- // 1| 7 6 5 4 3
- // 2| 8 * * * 2
- // 3| 9 * * * 1
- // 4| A B C D E
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 19 18 17 16 15
+ // 1| 12 10 9 8 4
+ // 2| 13 * * * 2
+ // 3| 14 * * * 1
+ // 4| 11 5 6 7 3
expected.clear();
expected.push_back(std::make_pair(4, 3));
expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 4));
expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(3, 4));
expected.push_back(std::make_pair(3, 1));
expected.push_back(std::make_pair(2, 1));
expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(0, 4));
expected.push_back(std::make_pair(0, 1));
expected.push_back(std::make_pair(0, 2));
expected.push_back(std::make_pair(0, 3));
- expected.push_back(std::make_pair(0, 4));
- expected.push_back(std::make_pair(1, 4));
- expected.push_back(std::make_pair(2, 4));
- expected.push_back(std::make_pair(3, 4));
- expected.push_back(std::make_pair(4, 4));
expected.push_back(std::make_pair(4, 0));
expected.push_back(std::make_pair(3, 0));
expected.push_back(std::make_pair(2, 0));
@@ -1740,13 +1740,13 @@ TEST(TilingDataTest, SpiralDifferenceIteratorRectangleCenter) {
center = gfx::Rect(-50, 0, 30, 50);
// Layout of the tiling data, and expected return order:
- // x 0 1 2 3 4
- // y.----------
- // * 0| 5 A F K P
- // * 1| 4 9 E J O
- // * 2| 3 8 D I N
- // * 3| 2 7 C H M
- // * 4| 1 6 B G L
+ // x 0 1 2 3 4
+ // y.---------------
+ // * 0| 5 10 15 20 25
+ // * 1| 4 9 14 19 24
+ // * 2| 3 8 13 18 23
+ // * 3| 2 7 12 17 22
+ // * 4| 1 6 11 16 21
expected.clear();
expected.push_back(std::make_pair(0, 4));
@@ -1793,9 +1793,9 @@ TEST(TilingDataTest, SpiralDifferenceIteratorEdgeCases) {
// Layout of the tiling data, and expected return order:
// x 0 1 2
// y.------
- // 0| . *
- // 1| . .
- // 2| . .
+ // 0| I *
+ // 1| I I
+ // 2| I I
expected.clear();
TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
@@ -1826,9 +1826,9 @@ TEST(TilingDataTest, SpiralDifferenceIteratorEdgeCases) {
// Layout of the tiling data, and expected return order:
// x 0 1 2
// y.------
- // 0| . * 1
- // 1| . 2
- // 2| . 3
+ // 0| I * 1
+ // 1| I 2
+ // 2| I 3
expected.clear();
expected.push_back(std::make_pair(2, 0));
@@ -1846,7 +1846,7 @@ TEST(TilingDataTest, SpiralDifferenceIteratorEdgeCases) {
// x 0 1 2
// y.------
// 0| 3 * 2
- // 1| . * .
+ // 1| I * I
// 2| 4 * 1
expected.clear();
@@ -1903,19 +1903,19 @@ TEST(TilingDataTest, SpiralDifferenceIteratorEdgeCases) {
// * x 0 1 2
// y.------
// 0| 1 2 6
- // 1| 3 4 5
- // 2| 7 8 9
+ // 1| 4 3 5
+ // 2| 8 9 7
expected.clear();
expected.push_back(std::make_pair(0, 0));
expected.push_back(std::make_pair(1, 0));
- expected.push_back(std::make_pair(0, 1));
expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(0, 1));
expected.push_back(std::make_pair(2, 1));
expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(2, 2));
expected.push_back(std::make_pair(0, 2));
expected.push_back(std::make_pair(1, 2));
- expected.push_back(std::make_pair(2, 2));
TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
@@ -1933,11 +1933,11 @@ TEST(TilingDataTest, SpiralDifferenceIteratorEdgeCases) {
center = gfx::Rect(-20, 0, 19, 30);
// Layout of the tiling data, and expected return order:
- // x 0 1 2
- // y.------
- // *0| 3 6 9
- // *1| 2 5 8
- // *2| 1 4 7
+ // x 0 1 2
+ // y.------
+ // * 0| 3 6 9
+ // * 1| 2 5 8
+ // * 2| 1 4 7
expected.clear();
expected.push_back(std::make_pair(0, 2));
@@ -1953,6 +1953,761 @@ TEST(TilingDataTest, SpiralDifferenceIteratorEdgeCases) {
TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
}
+TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesNoIgnoreFullConsider) {
+ TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
+ gfx::Rect consider(100, 50);
+ gfx::Rect ignore;
+ std::vector<std::pair<int, int>> expected;
+
+ // Center is in the center of the tiling.
+ gfx::Rect center(50, 25, 1, 1);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 21 14 13 12 19
+ // 1| 22 7 5 3 17
+ // 2| 23 8 * 1 16
+ // 3| 24 6 4 2 15
+ // 4| 20 9 10 11 18
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 3));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Center is off to the right side of the tiling (and far away).
+ center = gfx::Rect(200, 25, 1, 1);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 21 16 11 6 1
+ // 1| 22 17 12 7 2
+ // 2| 23 18 13 8 3 *
+ // 3| 24 19 14 9 4
+ // 4| 25 20 15 10 5
+ expected.clear();
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(2, 2));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(0, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Center is the bottom right corner of the tiling.
+ center = gfx::Rect(90, 45, 1, 1);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 20 15 14 13 12
+ // 1| 21 16 8 7 6
+ // 2| 22 17 9 5 4
+ // 3| 23 18 10 2 1
+ // 4| 24 19 11 3 *
+ expected.clear();
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(2, 2));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(0, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Center is off the top left side of the tiling.
+ center = gfx::Rect(-60, -50, 1, 1);
+
+ // Layout of the tiling data, and expected return order:
+ // Layout of the tiling data, and expected return order:
+ // *
+ //
+ //
+ //
+ //
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 1 2 20 21 24
+ // 1| 3 4 5 22 23
+ // 2| 6 7 8 9 25
+ // 3| 10 11 12 13 14
+ // 4| 15 16 17 18 19
+ expected.clear();
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(2, 2));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(4, 2));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Two tile center.
+ center = gfx::Rect(50, 15, 1, 10);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 20 8 6 4 17
+ // 1| 21 9 * 2 16
+ // 2| 22 10 * 1 15
+ // 3| 23 7 5 3 14
+ // 4| 19 11 12 13 18
+ expected.clear();
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 3));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+}
+
+TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesSmallConsider) {
+ TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
+ gfx::Rect ignore;
+ std::vector<std::pair<int, int>> expected;
+ gfx::Rect center(30, 15, 1, 1);
+
+ // Consider is one cell.
+ gfx::Rect consider(1, 1);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 1
+ // 1| *
+ // 2|
+ // 3|
+ // 4|
+ expected.push_back(std::make_pair(0, 0));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Consider is bottom right corner.
+ consider = gfx::Rect(70, 35, 20, 10);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0|
+ // 1| *
+ // 2|
+ // 3| 1 3
+ // 4| 2 4
+ expected.clear();
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Consider is one column.
+ consider = gfx::Rect(21, 0, 1, 100);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 2
+ // 1| *
+ // 2| 1
+ // 3| 3
+ // 4| 4
+ expected.clear();
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(1, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Consider is four columns.
+ consider = gfx::Rect(80, 50);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 7 5 3 14
+ // 1| 8 * 1 13
+ // 2| 6 4 2 12
+ // 3| 9 10 11 15
+ // 4| 16 17 18 19
+ expected.clear();
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(2, 2));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(3, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+}
+
+TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesHasIgnore) {
+ TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
+ gfx::Rect consider(100, 50);
+ std::vector<std::pair<int, int>> expected;
+ gfx::Rect center(30, 15, 1, 1);
+
+ // Full ignore.
+ gfx::Rect ignore(100, 50);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| I I I I I
+ // 1| I * I I I
+ // 2| I I I I I
+ // 3| I I I I I
+ // 4| I I I I I
+ expected.clear();
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // 3 column ignore.
+ ignore = gfx::Rect(30, 0, 40, 100);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 2 I I I 9
+ // 1| 3 * I I 8
+ // 2| 1 I I I 7
+ // 3| 4 I I I 6
+ // 4| 5 I I I 10
+ expected.clear();
+
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(4, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Ignore covers the top half.
+ ignore = gfx::Rect(100, 25);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| I I I I I
+ // 1| I * I I I
+ // 2| I I I I I
+ // 3| 1 2 3 4 9
+ // 4| 5 6 7 8 10
+ expected.clear();
+
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+}
+
+TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesRectangleCenter) {
+ TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
+ gfx::Rect consider(100, 50);
+ std::vector<std::pair<int, int>> expected;
+ gfx::Rect ignore;
+
+ // Two cell center
+ gfx::Rect center(50, 25, 1, 10);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 19 13 12 11 18
+ // 1| 20 8 6 4 17
+ // 2| 21 9 * 2 16
+ // 3| 22 10 * 1 15
+ // 4| 23 7 5 3 14
+ expected.clear();
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(0, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Three by two center.
+ center = gfx::Rect(30, 25, 40, 10);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 19 18 17 16 15
+ // 1| 12 10 9 8 4
+ // 2| 13 * * * 2
+ // 3| 14 * * * 1
+ // 4| 11 5 6 7 3
+ expected.clear();
+
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(0, 0));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Column center off the left side.
+ center = gfx::Rect(-100, 0, 60, 50);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // * 0| 5 10 15 20 25
+ // * 1| 4 9 14 19 24
+ // * 2| 3 8 13 18 23
+ // * 3| 2 7 12 17 22
+ // * 4| 1 6 11 16 21
+ expected.clear();
+
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(2, 2));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+}
+
+TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesEdgeCases) {
+ TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
+ std::vector<std::pair<int, int>> expected;
+ gfx::Rect center;
+ gfx::Rect consider;
+ gfx::Rect ignore;
+
+ // Ignore contains, but is not equal to, consider and center.
+ ignore = gfx::Rect(70, 0, 40, 50);
+ consider = gfx::Rect(80, 20, 20, 30);
+ center = gfx::Rect(90, 0, 5, 5);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| I *
+ // 1| I I
+ // 2| I I
+ // 3| I I
+ // 4| I I
+ expected.clear();
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Center intersects with consider.
+ ignore = gfx::Rect();
+ center = gfx::Rect(0, 30, 100, 20);
+ consider = gfx::Rect(40, 50);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 6 5
+ // 1| 4 3
+ // 2| 2 1
+ // 3| * * * * *
+ // 4| * * * * *
+ expected.clear();
+
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(0, 0));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Consider and ignore are non-intersecting.
+ ignore = gfx::Rect(30, 50);
+ consider = gfx::Rect(60, 0, 30, 50);
+ center = gfx::Rect(50, 0, 1, 1);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| I I * 1 5
+ // 1| I I 2 4
+ // 2| I I 3 6
+ // 3| I I 7 8
+ // 4| I I 9 10
+ expected.clear();
+
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(4, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Center intersects with ignore.
+ consider = gfx::Rect(100, 50);
+ center = gfx::Rect(50, 0, 1, 50);
+ ignore = gfx::Rect(0, 25, 100, 1);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 13 5 * 4 12
+ // 1| 14 6 * 3 11
+ // 2| I I * I I
+ // 3| 15 7 * 2 10
+ // 4| 16 8 * 1 9
+ expected.clear();
+
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(0, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Center and ignore are the same.
+ consider = gfx::Rect(100, 50);
+ center = gfx::Rect(50, 0, 1, 50);
+ ignore = center;
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 16 6 * 5 15
+ // 1| 17 7 * 4 14
+ // 2| 18 8 * 3 13
+ // 3| 19 9 * 2 12
+ // 4| 20 10 * 1 11
+ expected.clear();
+
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(0, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Empty tiling data.
+ TilingData empty_data(gfx::Size(0, 0), gfx::Size(0, 0), false);
+
+ expected.clear();
+ TestSpiralIterate(__LINE__, empty_data, consider, ignore, center, expected);
+
+ // Empty consider.
+ ignore = gfx::Rect();
+ center = gfx::Rect(1, 1, 1, 1);
+ consider = gfx::Rect();
+
+ expected.clear();
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Empty center. Note: This arbitrarily puts the center to be off the top-left
+ // corner.
+ consider = gfx::Rect(100, 50);
+ ignore = gfx::Rect();
+ center = gfx::Rect();
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // 0| 1 3 11 19 24
+ // 1| 2 4 10 18 23
+ // 2| 5 6 12 17 22
+ // 3| 7 8 9 20 21
+ // 4| 13 14 15 16 25
+ expected.clear();
+
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(2, 2));
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+ expected.push_back(std::make_pair(4, 4));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Every rect is empty.
+ ignore = gfx::Rect();
+ center = gfx::Rect();
+ consider = gfx::Rect();
+
+ expected.clear();
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+
+ // Center is just to the left of cover, and off of the tiling's left side.
+ consider = gfx::Rect(100, 50);
+ ignore = gfx::Rect();
+ center = gfx::Rect(-40, 0, 39, 50);
+
+ // Layout of the tiling data, and expected return order:
+ // x 0 1 2 3 4
+ // y.---------------
+ // * 0| 5 10 15 20 25
+ // * 1| 4 9 14 19 24
+ // * 2| 3 8 13 18 23
+ // * 3| 2 7 12 17 22
+ // * 4| 1 6 11 16 21
+ expected.clear();
+
+ expected.push_back(std::make_pair(0, 4));
+ expected.push_back(std::make_pair(0, 3));
+ expected.push_back(std::make_pair(0, 2));
+ expected.push_back(std::make_pair(0, 1));
+ expected.push_back(std::make_pair(0, 0));
+ expected.push_back(std::make_pair(1, 4));
+ expected.push_back(std::make_pair(1, 3));
+ expected.push_back(std::make_pair(1, 2));
+ expected.push_back(std::make_pair(1, 1));
+ expected.push_back(std::make_pair(1, 0));
+ expected.push_back(std::make_pair(2, 4));
+ expected.push_back(std::make_pair(2, 3));
+ expected.push_back(std::make_pair(2, 2));
+ expected.push_back(std::make_pair(2, 1));
+ expected.push_back(std::make_pair(2, 0));
+ expected.push_back(std::make_pair(3, 4));
+ expected.push_back(std::make_pair(3, 3));
+ expected.push_back(std::make_pair(3, 2));
+ expected.push_back(std::make_pair(3, 1));
+ expected.push_back(std::make_pair(3, 0));
+ expected.push_back(std::make_pair(4, 4));
+ expected.push_back(std::make_pair(4, 3));
+ expected.push_back(std::make_pair(4, 2));
+ expected.push_back(std::make_pair(4, 1));
+ expected.push_back(std::make_pair(4, 0));
+
+ TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
+}
+
} // namespace
} // namespace cc
« cc/base/pyramid_sequence.cc ('K') | « cc/base/tiling_data.cc ('k') | cc/cc.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698