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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/base/tiling_data.h" 5 #include "cc/base/tiling_data.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 1404 matching lines...) Expand 10 before | Expand all | Expand 10 after
1415 gfx::Rect consider(30, 30); 1415 gfx::Rect consider(30, 30);
1416 gfx::Rect ignore; 1416 gfx::Rect ignore;
1417 std::vector<std::pair<int, int>> expected; 1417 std::vector<std::pair<int, int>> expected;
1418 1418
1419 // Center is in the center of the tiling. 1419 // Center is in the center of the tiling.
1420 gfx::Rect center(15, 15, 1, 1); 1420 gfx::Rect center(15, 15, 1, 1);
1421 1421
1422 // Layout of the tiling data, and expected return order: 1422 // Layout of the tiling data, and expected return order:
1423 // x 0 1 2 1423 // x 0 1 2
1424 // y.------ 1424 // y.------
1425 // 0| 4 3 2 1425 // 0| 7 5 3
1426 // 1| 5 * 1 1426 // 1| 8 * 1
1427 // 2| 6 7 8 1427 // 2| 6 4 2
1428 expected.push_back(std::make_pair(2, 1)); 1428 expected.push_back(std::make_pair(2, 1));
1429 expected.push_back(std::make_pair(2, 2));
1429 expected.push_back(std::make_pair(2, 0)); 1430 expected.push_back(std::make_pair(2, 0));
1431 expected.push_back(std::make_pair(1, 2));
1430 expected.push_back(std::make_pair(1, 0)); 1432 expected.push_back(std::make_pair(1, 0));
1433 expected.push_back(std::make_pair(0, 2));
1431 expected.push_back(std::make_pair(0, 0)); 1434 expected.push_back(std::make_pair(0, 0));
1432 expected.push_back(std::make_pair(0, 1)); 1435 expected.push_back(std::make_pair(0, 1));
1433 expected.push_back(std::make_pair(0, 2));
1434 expected.push_back(std::make_pair(1, 2));
1435 expected.push_back(std::make_pair(2, 2));
1436 1436
1437 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1437 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1438 1438
1439 // Center is off to the right side of the tiling (and far away). 1439 // Center is off to the right side of the tiling (and far away).
1440 center = gfx::Rect(100, 15, 1, 1); 1440 center = gfx::Rect(100, 15, 1, 1);
1441 1441
1442 // Layout of the tiling data, and expected return order: 1442 // Layout of the tiling data, and expected return order:
1443 // x 0 1 2 1443 // x 0 1 2
1444 // y.------ 1444 // y.------
1445 // 0| 7 4 1 1445 // 0| 7 4 1
1446 // 1| 8 5 2 * 1446 // 1| 8 5 2 *
1447 // 2| 9 6 3 1447 // 2| 9 6 3
1448 expected.clear(); 1448 expected.clear();
1449 expected.push_back(std::make_pair(2, 0)); 1449 expected.push_back(std::make_pair(2, 0));
1450 expected.push_back(std::make_pair(2, 1)); 1450 expected.push_back(std::make_pair(2, 1));
1451 expected.push_back(std::make_pair(2, 2)); 1451 expected.push_back(std::make_pair(2, 2));
1452 expected.push_back(std::make_pair(1, 0)); 1452 expected.push_back(std::make_pair(1, 0));
1453 expected.push_back(std::make_pair(1, 1)); 1453 expected.push_back(std::make_pair(1, 1));
1454 expected.push_back(std::make_pair(1, 2)); 1454 expected.push_back(std::make_pair(1, 2));
1455 expected.push_back(std::make_pair(0, 0)); 1455 expected.push_back(std::make_pair(0, 0));
1456 expected.push_back(std::make_pair(0, 1)); 1456 expected.push_back(std::make_pair(0, 1));
(...skipping 21 matching lines...) Expand all
1478 expected.push_back(std::make_pair(0, 2)); 1478 expected.push_back(std::make_pair(0, 2));
1479 1479
1480 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1480 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1481 1481
1482 // Center is off the top left side of the tiling. 1482 // Center is off the top left side of the tiling.
1483 center = gfx::Rect(-60, -50, 1, 1); 1483 center = gfx::Rect(-60, -50, 1, 1);
1484 1484
1485 // Layout of the tiling data, and expected return order: 1485 // Layout of the tiling data, and expected return order:
1486 // * x 0 1 2 1486 // * x 0 1 2
1487 // y.------ 1487 // y.------
1488 // 0| 1 2 6 1488 // 0| 1 4 9
1489 // 1| 3 4 5 1489 // 1| 2 3 8
1490 // 2| 7 8 9 1490 // 2| 6 5 7
1491 expected.clear(); 1491 expected.clear();
1492 expected.push_back(std::make_pair(0, 0)); 1492 expected.push_back(std::make_pair(0, 0));
1493 expected.push_back(std::make_pair(1, 0));
1494 expected.push_back(std::make_pair(0, 1)); 1493 expected.push_back(std::make_pair(0, 1));
1495 expected.push_back(std::make_pair(1, 1)); 1494 expected.push_back(std::make_pair(1, 1));
1495 expected.push_back(std::make_pair(1, 0));
1496 expected.push_back(std::make_pair(1, 2));
1497 expected.push_back(std::make_pair(0, 2));
1498 expected.push_back(std::make_pair(2, 2));
1496 expected.push_back(std::make_pair(2, 1)); 1499 expected.push_back(std::make_pair(2, 1));
1497 expected.push_back(std::make_pair(2, 0)); 1500 expected.push_back(std::make_pair(2, 0));
1498 expected.push_back(std::make_pair(0, 2));
1499 expected.push_back(std::make_pair(1, 2));
1500 expected.push_back(std::make_pair(2, 2));
1501 1501
1502 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1502 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1503 1503
1504 // Two tile center. 1504 // Two tile center.
1505 center = gfx::Rect(15, 15, 1, 10); 1505 center = gfx::Rect(15, 15, 1, 10);
1506 1506
1507 // Layout of the tiling data, and expected return order: 1507 // Layout of the tiling data, and expected return order:
1508 // x 0 1 2 1508 // x 0 1 2
1509 // y.------ 1509 // y.------
1510 // 0| 5 4 3 1510 // 0| 5 4 3
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 1545
1546 // Consider is bottom right corner. 1546 // Consider is bottom right corner.
1547 consider = gfx::Rect(25, 25, 10, 10); 1547 consider = gfx::Rect(25, 25, 10, 10);
1548 1548
1549 // Layout of the tiling data, and expected return order: 1549 // Layout of the tiling data, and expected return order:
1550 // x 0 1 2 3 4 1550 // x 0 1 2 3 4
1551 // y.---------- 1551 // y.----------
1552 // 0| 1552 // 0|
1553 // 1| * 1553 // 1| *
1554 // 2| 1 2 1554 // 2| 1 2
1555 // 3| 3 4 1555 // 3| 4 3
1556 // 4| 1556 // 4|
1557 expected.clear(); 1557 expected.clear();
1558 expected.push_back(std::make_pair(2, 2)); 1558 expected.push_back(std::make_pair(2, 2));
1559 expected.push_back(std::make_pair(3, 2)); 1559 expected.push_back(std::make_pair(3, 2));
1560 expected.push_back(std::make_pair(3, 3));
1560 expected.push_back(std::make_pair(2, 3)); 1561 expected.push_back(std::make_pair(2, 3));
1561 expected.push_back(std::make_pair(3, 3));
1562 1562
1563 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1563 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1564 1564
1565 // Consider is one column. 1565 // Consider is one column.
1566 consider = gfx::Rect(11, 0, 1, 100); 1566 consider = gfx::Rect(11, 0, 1, 100);
1567 1567
1568 // Layout of the tiling data, and expected return order: 1568 // Layout of the tiling data, and expected return order:
1569 // x 0 1 2 3 4 1569 // x 0 1 2 3 4
1570 // y.---------- 1570 // y.----------
1571 // 0| 2 1571 // 0| 2
1572 // 1| * 1572 // 1| *
1573 // 2| 3 1573 // 2| 1
1574 // 3| 4 1574 // 3| 3
1575 // 4| 5 1575 // 4| 4
1576 expected.clear(); 1576 expected.clear();
1577 expected.push_back(std::make_pair(1, 2));
1577 expected.push_back(std::make_pair(1, 0)); 1578 expected.push_back(std::make_pair(1, 0));
1578 expected.push_back(std::make_pair(1, 2));
1579 expected.push_back(std::make_pair(1, 3)); 1579 expected.push_back(std::make_pair(1, 3));
1580 expected.push_back(std::make_pair(1, 4)); 1580 expected.push_back(std::make_pair(1, 4));
1581 1581
1582 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1582 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1583 } 1583 }
1584 1584
1585 TEST(TilingDataTest, SpiralDifferenceIteratorHasIgnore) { 1585 TEST(TilingDataTest, SpiralDifferenceIteratorHasIgnore) {
1586 TilingData tiling_data(gfx::Size(10, 10), gfx::Size(50, 50), false); 1586 TilingData tiling_data(gfx::Size(10, 10), gfx::Size(50, 50), false);
1587 gfx::Rect consider(50, 50); 1587 gfx::Rect consider(50, 50);
1588 std::vector<std::pair<int, int>> expected; 1588 std::vector<std::pair<int, int>> expected;
1589 gfx::Rect center(15, 15, 1, 1); 1589 gfx::Rect center(15, 15, 1, 1);
1590 1590
1591 // Full ignore. 1591 // Full ignore.
1592 gfx::Rect ignore(50, 50); 1592 gfx::Rect ignore(50, 50);
1593 1593
1594 // Layout of the tiling data, and expected return order: 1594 // Layout of the tiling data, and expected return order:
1595 // x 0 1 2 3 4 1595 // x 0 1 2 3 4
1596 // y.---------- 1596 // y.---------------
1597 // 0| . . . . . 1597 // 0| I I I I I
1598 // 1| . * . . . 1598 // 1| I * I I I
1599 // 2| . . . . . 1599 // 2| I I I I I
1600 // 3| . . . . . 1600 // 3| I I I I I
1601 // 4| . . . . . 1601 // 4| I I I I I
1602 expected.clear(); 1602 expected.clear();
1603 1603
1604 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1604 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1605 1605
1606 // 3 column ignore. 1606 // 3 column ignore.
1607 ignore = gfx::Rect(15, 0, 20, 100); 1607 ignore = gfx::Rect(15, 0, 20, 100);
1608 1608
1609 // Layout of the tiling data, and expected return order: 1609 // Layout of the tiling data, and expected return order:
1610 // x 0 1 2 3 4 1610 // x 0 1 2 3 4
1611 // y.---------- 1611 // y.---------------
1612 // 0| 1 . . . 8 1612 // 0| 2 I I I 8
1613 // 1| 2 * . . 7 1613 // 1| 3 * I I 7
1614 // 2| 3 . . . 6 1614 // 2| 1 I I I 6
1615 // 3| 4 . . . 5 1615 // 3| 4 I I I 5
1616 // 4| 9 . . . 10 1616 // 4| 10 I I I 9
1617 expected.clear(); 1617 expected.clear();
1618 1618
1619 expected.push_back(std::make_pair(0, 2));
1619 expected.push_back(std::make_pair(0, 0)); 1620 expected.push_back(std::make_pair(0, 0));
1620 expected.push_back(std::make_pair(0, 1)); 1621 expected.push_back(std::make_pair(0, 1));
1621 expected.push_back(std::make_pair(0, 2));
1622 expected.push_back(std::make_pair(0, 3)); 1622 expected.push_back(std::make_pair(0, 3));
1623 expected.push_back(std::make_pair(4, 3)); 1623 expected.push_back(std::make_pair(4, 3));
1624 expected.push_back(std::make_pair(4, 2)); 1624 expected.push_back(std::make_pair(4, 2));
1625 expected.push_back(std::make_pair(4, 1)); 1625 expected.push_back(std::make_pair(4, 1));
1626 expected.push_back(std::make_pair(4, 0)); 1626 expected.push_back(std::make_pair(4, 0));
1627 expected.push_back(std::make_pair(4, 4));
1627 expected.push_back(std::make_pair(0, 4)); 1628 expected.push_back(std::make_pair(0, 4));
1628 expected.push_back(std::make_pair(4, 4));
1629 1629
1630 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1630 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1631 1631
1632 // Ignore covers the top half. 1632 // Ignore covers the top half.
1633 ignore = gfx::Rect(50, 25); 1633 ignore = gfx::Rect(50, 25);
1634 1634
1635 // Layout of the tiling data, and expected return order: 1635 // Layout of the tiling data, and expected return order:
1636 // x 0 1 2 3 4 1636 // x 0 1 2 3 4
1637 // y.---------- 1637 // y.---------------
1638 // 0| . . . . . 1638 // 0| I I I I I
1639 // 1| . * . . . 1639 // 1| I * I I I
1640 // 2| . . . . . 1640 // 2| I I I I I
1641 // 3| 1 2 3 4 5 1641 // 3| 2 3 4 1 5
1642 // 4| 6 7 8 9 10 1642 // 4| 7 8 9 10 6
1643 expected.clear(); 1643 expected.clear();
1644 1644
1645 expected.push_back(std::make_pair(3, 3));
1645 expected.push_back(std::make_pair(0, 3)); 1646 expected.push_back(std::make_pair(0, 3));
1646 expected.push_back(std::make_pair(1, 3)); 1647 expected.push_back(std::make_pair(1, 3));
1647 expected.push_back(std::make_pair(2, 3)); 1648 expected.push_back(std::make_pair(2, 3));
1648 expected.push_back(std::make_pair(3, 3));
1649 expected.push_back(std::make_pair(4, 3)); 1649 expected.push_back(std::make_pair(4, 3));
1650 expected.push_back(std::make_pair(4, 4));
1650 expected.push_back(std::make_pair(0, 4)); 1651 expected.push_back(std::make_pair(0, 4));
1651 expected.push_back(std::make_pair(1, 4)); 1652 expected.push_back(std::make_pair(1, 4));
1652 expected.push_back(std::make_pair(2, 4)); 1653 expected.push_back(std::make_pair(2, 4));
1653 expected.push_back(std::make_pair(3, 4)); 1654 expected.push_back(std::make_pair(3, 4));
1654 expected.push_back(std::make_pair(4, 4));
1655 1655
1656 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1656 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1657 } 1657 }
1658 1658
1659 TEST(TilingDataTest, SpiralDifferenceIteratorRectangleCenter) { 1659 TEST(TilingDataTest, SpiralDifferenceIteratorRectangleCenter) {
1660 TilingData tiling_data(gfx::Size(10, 10), gfx::Size(50, 50), false); 1660 TilingData tiling_data(gfx::Size(10, 10), gfx::Size(50, 50), false);
1661 gfx::Rect consider(50, 50); 1661 gfx::Rect consider(50, 50);
1662 std::vector<std::pair<int, int>> expected; 1662 std::vector<std::pair<int, int>> expected;
1663 gfx::Rect ignore; 1663 gfx::Rect ignore;
1664 1664
1665 // Two cell center 1665 // Two cell center
1666 gfx::Rect center(25, 25, 1, 10); 1666 gfx::Rect center(25, 25, 1, 10);
1667 1667
1668 // Layout of the tiling data, and expected return order: 1668 // Layout of the tiling data, and expected return order:
1669 // x 0 1 2 3 4 1669 // x 0 1 2 3 4
1670 // y.---------- 1670 // y.---------------
1671 // 0| J I H G F 1671 // 0| 19 18 17 16 15
1672 // 1| K 5 4 3 E 1672 // 1| 20 8 6 4 14
1673 // 2| L 6 * 2 D 1673 // 2| 21 9 * 2 13
1674 // 3| M 7 * 1 C 1674 // 3| 22 10 * 1 12
1675 // 4| N 8 9 A B 1675 // 4| 23 7 5 3 11
1676 expected.clear(); 1676 expected.clear();
1677 1677
1678 expected.push_back(std::make_pair(3, 3)); 1678 expected.push_back(std::make_pair(3, 3));
1679 expected.push_back(std::make_pair(3, 2)); 1679 expected.push_back(std::make_pair(3, 2));
1680 expected.push_back(std::make_pair(3, 4));
1680 expected.push_back(std::make_pair(3, 1)); 1681 expected.push_back(std::make_pair(3, 1));
1682 expected.push_back(std::make_pair(2, 4));
1681 expected.push_back(std::make_pair(2, 1)); 1683 expected.push_back(std::make_pair(2, 1));
1684 expected.push_back(std::make_pair(1, 4));
1682 expected.push_back(std::make_pair(1, 1)); 1685 expected.push_back(std::make_pair(1, 1));
1683 expected.push_back(std::make_pair(1, 2)); 1686 expected.push_back(std::make_pair(1, 2));
1684 expected.push_back(std::make_pair(1, 3)); 1687 expected.push_back(std::make_pair(1, 3));
1685 expected.push_back(std::make_pair(1, 4));
1686 expected.push_back(std::make_pair(2, 4));
1687 expected.push_back(std::make_pair(3, 4));
1688 expected.push_back(std::make_pair(4, 4)); 1688 expected.push_back(std::make_pair(4, 4));
1689 expected.push_back(std::make_pair(4, 3)); 1689 expected.push_back(std::make_pair(4, 3));
1690 expected.push_back(std::make_pair(4, 2)); 1690 expected.push_back(std::make_pair(4, 2));
1691 expected.push_back(std::make_pair(4, 1)); 1691 expected.push_back(std::make_pair(4, 1));
1692 expected.push_back(std::make_pair(4, 0)); 1692 expected.push_back(std::make_pair(4, 0));
1693 expected.push_back(std::make_pair(3, 0)); 1693 expected.push_back(std::make_pair(3, 0));
1694 expected.push_back(std::make_pair(2, 0)); 1694 expected.push_back(std::make_pair(2, 0));
1695 expected.push_back(std::make_pair(1, 0)); 1695 expected.push_back(std::make_pair(1, 0));
1696 expected.push_back(std::make_pair(0, 0)); 1696 expected.push_back(std::make_pair(0, 0));
1697 expected.push_back(std::make_pair(0, 1)); 1697 expected.push_back(std::make_pair(0, 1));
1698 expected.push_back(std::make_pair(0, 2)); 1698 expected.push_back(std::make_pair(0, 2));
1699 expected.push_back(std::make_pair(0, 3)); 1699 expected.push_back(std::make_pair(0, 3));
1700 expected.push_back(std::make_pair(0, 4)); 1700 expected.push_back(std::make_pair(0, 4));
1701 1701
1702 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1702 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1703 1703
1704 // Three by two center. 1704 // Three by two center.
1705 center = gfx::Rect(15, 25, 20, 10); 1705 center = gfx::Rect(15, 25, 20, 10);
1706 1706
1707 // Layout of the tiling data, and expected return order: 1707 // Layout of the tiling data, and expected return order:
1708 // x 0 1 2 3 4 1708 // x 0 1 2 3 4
1709 // y.---------- 1709 // y.---------------
1710 // 0| J I H G F 1710 // 0| 19 18 17 16 15
1711 // 1| 7 6 5 4 3 1711 // 1| 12 10 9 8 4
1712 // 2| 8 * * * 2 1712 // 2| 13 * * * 2
1713 // 3| 9 * * * 1 1713 // 3| 14 * * * 1
1714 // 4| A B C D E 1714 // 4| 11 5 6 7 3
1715 expected.clear(); 1715 expected.clear();
1716 1716
1717 expected.push_back(std::make_pair(4, 3)); 1717 expected.push_back(std::make_pair(4, 3));
1718 expected.push_back(std::make_pair(4, 2)); 1718 expected.push_back(std::make_pair(4, 2));
1719 expected.push_back(std::make_pair(4, 4));
1719 expected.push_back(std::make_pair(4, 1)); 1720 expected.push_back(std::make_pair(4, 1));
1721 expected.push_back(std::make_pair(1, 4));
1722 expected.push_back(std::make_pair(2, 4));
1723 expected.push_back(std::make_pair(3, 4));
1720 expected.push_back(std::make_pair(3, 1)); 1724 expected.push_back(std::make_pair(3, 1));
1721 expected.push_back(std::make_pair(2, 1)); 1725 expected.push_back(std::make_pair(2, 1));
1722 expected.push_back(std::make_pair(1, 1)); 1726 expected.push_back(std::make_pair(1, 1));
1727 expected.push_back(std::make_pair(0, 4));
1723 expected.push_back(std::make_pair(0, 1)); 1728 expected.push_back(std::make_pair(0, 1));
1724 expected.push_back(std::make_pair(0, 2)); 1729 expected.push_back(std::make_pair(0, 2));
1725 expected.push_back(std::make_pair(0, 3)); 1730 expected.push_back(std::make_pair(0, 3));
1726 expected.push_back(std::make_pair(0, 4));
1727 expected.push_back(std::make_pair(1, 4));
1728 expected.push_back(std::make_pair(2, 4));
1729 expected.push_back(std::make_pair(3, 4));
1730 expected.push_back(std::make_pair(4, 4));
1731 expected.push_back(std::make_pair(4, 0)); 1731 expected.push_back(std::make_pair(4, 0));
1732 expected.push_back(std::make_pair(3, 0)); 1732 expected.push_back(std::make_pair(3, 0));
1733 expected.push_back(std::make_pair(2, 0)); 1733 expected.push_back(std::make_pair(2, 0));
1734 expected.push_back(std::make_pair(1, 0)); 1734 expected.push_back(std::make_pair(1, 0));
1735 expected.push_back(std::make_pair(0, 0)); 1735 expected.push_back(std::make_pair(0, 0));
1736 1736
1737 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1737 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1738 1738
1739 // Column center off the left side. 1739 // Column center off the left side.
1740 center = gfx::Rect(-50, 0, 30, 50); 1740 center = gfx::Rect(-50, 0, 30, 50);
1741 1741
1742 // Layout of the tiling data, and expected return order: 1742 // Layout of the tiling data, and expected return order:
1743 // x 0 1 2 3 4 1743 // x 0 1 2 3 4
1744 // y.---------- 1744 // y.---------------
1745 // * 0| 5 A F K P 1745 // * 0| 5 10 15 20 25
1746 // * 1| 4 9 E J O 1746 // * 1| 4 9 14 19 24
1747 // * 2| 3 8 D I N 1747 // * 2| 3 8 13 18 23
1748 // * 3| 2 7 C H M 1748 // * 3| 2 7 12 17 22
1749 // * 4| 1 6 B G L 1749 // * 4| 1 6 11 16 21
1750 expected.clear(); 1750 expected.clear();
1751 1751
1752 expected.push_back(std::make_pair(0, 4)); 1752 expected.push_back(std::make_pair(0, 4));
1753 expected.push_back(std::make_pair(0, 3)); 1753 expected.push_back(std::make_pair(0, 3));
1754 expected.push_back(std::make_pair(0, 2)); 1754 expected.push_back(std::make_pair(0, 2));
1755 expected.push_back(std::make_pair(0, 1)); 1755 expected.push_back(std::make_pair(0, 1));
1756 expected.push_back(std::make_pair(0, 0)); 1756 expected.push_back(std::make_pair(0, 0));
1757 expected.push_back(std::make_pair(1, 4)); 1757 expected.push_back(std::make_pair(1, 4));
1758 expected.push_back(std::make_pair(1, 3)); 1758 expected.push_back(std::make_pair(1, 3));
1759 expected.push_back(std::make_pair(1, 2)); 1759 expected.push_back(std::make_pair(1, 2));
(...skipping 26 matching lines...) Expand all
1786 gfx::Rect ignore; 1786 gfx::Rect ignore;
1787 1787
1788 // Ignore contains, but is not equal to, consider and center. 1788 // Ignore contains, but is not equal to, consider and center.
1789 ignore = gfx::Rect(15, 0, 20, 30); 1789 ignore = gfx::Rect(15, 0, 20, 30);
1790 consider = gfx::Rect(20, 10, 10, 20); 1790 consider = gfx::Rect(20, 10, 10, 20);
1791 center = gfx::Rect(25, 0, 5, 5); 1791 center = gfx::Rect(25, 0, 5, 5);
1792 1792
1793 // Layout of the tiling data, and expected return order: 1793 // Layout of the tiling data, and expected return order:
1794 // x 0 1 2 1794 // x 0 1 2
1795 // y.------ 1795 // y.------
1796 // 0| . * 1796 // 0| I *
1797 // 1| . . 1797 // 1| I I
1798 // 2| . . 1798 // 2| I I
1799 expected.clear(); 1799 expected.clear();
1800 1800
1801 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1801 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1802 1802
1803 // Center intersects with consider. 1803 // Center intersects with consider.
1804 ignore = gfx::Rect(); 1804 ignore = gfx::Rect();
1805 center = gfx::Rect(0, 15, 30, 15); 1805 center = gfx::Rect(0, 15, 30, 15);
1806 consider = gfx::Rect(15, 30); 1806 consider = gfx::Rect(15, 30);
1807 1807
1808 // Layout of the tiling data, and expected return order: 1808 // Layout of the tiling data, and expected return order:
(...skipping 10 matching lines...) Expand all
1819 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1819 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1820 1820
1821 // Consider and ignore are non-intersecting. 1821 // Consider and ignore are non-intersecting.
1822 ignore = gfx::Rect(5, 30); 1822 ignore = gfx::Rect(5, 30);
1823 consider = gfx::Rect(25, 0, 5, 30); 1823 consider = gfx::Rect(25, 0, 5, 30);
1824 center = gfx::Rect(15, 0, 1, 1); 1824 center = gfx::Rect(15, 0, 1, 1);
1825 1825
1826 // Layout of the tiling data, and expected return order: 1826 // Layout of the tiling data, and expected return order:
1827 // x 0 1 2 1827 // x 0 1 2
1828 // y.------ 1828 // y.------
1829 // 0| . * 1 1829 // 0| I * 1
1830 // 1| . 2 1830 // 1| I 2
1831 // 2| . 3 1831 // 2| I 3
1832 expected.clear(); 1832 expected.clear();
1833 1833
1834 expected.push_back(std::make_pair(2, 0)); 1834 expected.push_back(std::make_pair(2, 0));
1835 expected.push_back(std::make_pair(2, 1)); 1835 expected.push_back(std::make_pair(2, 1));
1836 expected.push_back(std::make_pair(2, 2)); 1836 expected.push_back(std::make_pair(2, 2));
1837 1837
1838 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1838 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1839 1839
1840 // Center intersects with ignore. 1840 // Center intersects with ignore.
1841 consider = gfx::Rect(30, 30); 1841 consider = gfx::Rect(30, 30);
1842 center = gfx::Rect(15, 0, 1, 30); 1842 center = gfx::Rect(15, 0, 1, 30);
1843 ignore = gfx::Rect(0, 15, 30, 1); 1843 ignore = gfx::Rect(0, 15, 30, 1);
1844 1844
1845 // Layout of the tiling data, and expected return order: 1845 // Layout of the tiling data, and expected return order:
1846 // x 0 1 2 1846 // x 0 1 2
1847 // y.------ 1847 // y.------
1848 // 0| 3 * 2 1848 // 0| 3 * 2
1849 // 1| . * . 1849 // 1| I * I
1850 // 2| 4 * 1 1850 // 2| 4 * 1
1851 expected.clear(); 1851 expected.clear();
1852 1852
1853 expected.push_back(std::make_pair(2, 2)); 1853 expected.push_back(std::make_pair(2, 2));
1854 expected.push_back(std::make_pair(2, 0)); 1854 expected.push_back(std::make_pair(2, 0));
1855 expected.push_back(std::make_pair(0, 0)); 1855 expected.push_back(std::make_pair(0, 0));
1856 expected.push_back(std::make_pair(0, 2)); 1856 expected.push_back(std::make_pair(0, 2));
1857 1857
1858 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1858 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1859 1859
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1896 // Empty center. Note: This arbitrarily puts the center to be off the top-left 1896 // Empty center. Note: This arbitrarily puts the center to be off the top-left
1897 // corner. 1897 // corner.
1898 consider = gfx::Rect(30, 30); 1898 consider = gfx::Rect(30, 30);
1899 ignore = gfx::Rect(); 1899 ignore = gfx::Rect();
1900 center = gfx::Rect(); 1900 center = gfx::Rect();
1901 1901
1902 // Layout of the tiling data, and expected return order: 1902 // Layout of the tiling data, and expected return order:
1903 // * x 0 1 2 1903 // * x 0 1 2
1904 // y.------ 1904 // y.------
1905 // 0| 1 2 6 1905 // 0| 1 2 6
1906 // 1| 3 4 5 1906 // 1| 4 3 5
1907 // 2| 7 8 9 1907 // 2| 8 9 7
1908 expected.clear(); 1908 expected.clear();
1909 1909
1910 expected.push_back(std::make_pair(0, 0)); 1910 expected.push_back(std::make_pair(0, 0));
1911 expected.push_back(std::make_pair(1, 0)); 1911 expected.push_back(std::make_pair(1, 0));
1912 expected.push_back(std::make_pair(1, 1));
1912 expected.push_back(std::make_pair(0, 1)); 1913 expected.push_back(std::make_pair(0, 1));
1913 expected.push_back(std::make_pair(1, 1));
1914 expected.push_back(std::make_pair(2, 1)); 1914 expected.push_back(std::make_pair(2, 1));
1915 expected.push_back(std::make_pair(2, 0)); 1915 expected.push_back(std::make_pair(2, 0));
1916 expected.push_back(std::make_pair(2, 2));
1916 expected.push_back(std::make_pair(0, 2)); 1917 expected.push_back(std::make_pair(0, 2));
1917 expected.push_back(std::make_pair(1, 2)); 1918 expected.push_back(std::make_pair(1, 2));
1918 expected.push_back(std::make_pair(2, 2));
1919 1919
1920 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1920 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1921 1921
1922 // Every rect is empty. 1922 // Every rect is empty.
1923 ignore = gfx::Rect(); 1923 ignore = gfx::Rect();
1924 center = gfx::Rect(); 1924 center = gfx::Rect();
1925 consider = gfx::Rect(); 1925 consider = gfx::Rect();
1926 1926
1927 expected.clear(); 1927 expected.clear();
1928 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1928 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1929 1929
1930 // Center is just to the left of cover, and off of the tiling's left side. 1930 // Center is just to the left of cover, and off of the tiling's left side.
1931 consider = gfx::Rect(30, 30); 1931 consider = gfx::Rect(30, 30);
1932 ignore = gfx::Rect(); 1932 ignore = gfx::Rect();
1933 center = gfx::Rect(-20, 0, 19, 30); 1933 center = gfx::Rect(-20, 0, 19, 30);
1934 1934
1935 // Layout of the tiling data, and expected return order: 1935 // Layout of the tiling data, and expected return order:
1936 // x 0 1 2 1936 // x 0 1 2
1937 // y.------ 1937 // y.------
1938 // *0| 3 6 9 1938 // * 0| 3 6 9
1939 // *1| 2 5 8 1939 // * 1| 2 5 8
1940 // *2| 1 4 7 1940 // * 2| 1 4 7
1941 expected.clear(); 1941 expected.clear();
1942 1942
1943 expected.push_back(std::make_pair(0, 2)); 1943 expected.push_back(std::make_pair(0, 2));
1944 expected.push_back(std::make_pair(0, 1)); 1944 expected.push_back(std::make_pair(0, 1));
1945 expected.push_back(std::make_pair(0, 0)); 1945 expected.push_back(std::make_pair(0, 0));
1946 expected.push_back(std::make_pair(1, 2)); 1946 expected.push_back(std::make_pair(1, 2));
1947 expected.push_back(std::make_pair(1, 1)); 1947 expected.push_back(std::make_pair(1, 1));
1948 expected.push_back(std::make_pair(1, 0)); 1948 expected.push_back(std::make_pair(1, 0));
1949 expected.push_back(std::make_pair(2, 2)); 1949 expected.push_back(std::make_pair(2, 2));
1950 expected.push_back(std::make_pair(2, 1)); 1950 expected.push_back(std::make_pair(2, 1));
1951 expected.push_back(std::make_pair(2, 0)); 1951 expected.push_back(std::make_pair(2, 0));
1952 1952
1953 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1953 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1954 } 1954 }
1955 1955
1956 TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesNoIgnoreFullConsider) {
1957 TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
1958 gfx::Rect consider(100, 50);
1959 gfx::Rect ignore;
1960 std::vector<std::pair<int, int>> expected;
1961
1962 // Center is in the center of the tiling.
1963 gfx::Rect center(50, 25, 1, 1);
1964
1965 // Layout of the tiling data, and expected return order:
1966 // x 0 1 2 3 4
1967 // y.---------------
1968 // 0| 21 14 13 12 19
1969 // 1| 22 7 5 3 17
1970 // 2| 23 8 * 1 16
1971 // 3| 24 6 4 2 15
1972 // 4| 20 9 10 11 18
1973 expected.push_back(std::make_pair(3, 2));
1974 expected.push_back(std::make_pair(3, 3));
1975 expected.push_back(std::make_pair(3, 1));
1976 expected.push_back(std::make_pair(2, 3));
1977 expected.push_back(std::make_pair(2, 1));
1978 expected.push_back(std::make_pair(1, 3));
1979 expected.push_back(std::make_pair(1, 1));
1980 expected.push_back(std::make_pair(1, 2));
1981 expected.push_back(std::make_pair(1, 4));
1982 expected.push_back(std::make_pair(2, 4));
1983 expected.push_back(std::make_pair(3, 4));
1984 expected.push_back(std::make_pair(3, 0));
1985 expected.push_back(std::make_pair(2, 0));
1986 expected.push_back(std::make_pair(1, 0));
1987 expected.push_back(std::make_pair(4, 3));
1988 expected.push_back(std::make_pair(4, 2));
1989 expected.push_back(std::make_pair(4, 1));
1990 expected.push_back(std::make_pair(4, 4));
1991 expected.push_back(std::make_pair(4, 0));
1992 expected.push_back(std::make_pair(0, 4));
1993 expected.push_back(std::make_pair(0, 0));
1994 expected.push_back(std::make_pair(0, 1));
1995 expected.push_back(std::make_pair(0, 2));
1996 expected.push_back(std::make_pair(0, 3));
1997
1998 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
1999
2000 // Center is off to the right side of the tiling (and far away).
2001 center = gfx::Rect(200, 25, 1, 1);
2002
2003 // Layout of the tiling data, and expected return order:
2004 // x 0 1 2 3 4
2005 // y.---------------
2006 // 0| 21 16 11 6 1
2007 // 1| 22 17 12 7 2
2008 // 2| 23 18 13 8 3 *
2009 // 3| 24 19 14 9 4
2010 // 4| 25 20 15 10 5
2011 expected.clear();
2012 expected.push_back(std::make_pair(4, 0));
2013 expected.push_back(std::make_pair(4, 1));
2014 expected.push_back(std::make_pair(4, 2));
2015 expected.push_back(std::make_pair(4, 3));
2016 expected.push_back(std::make_pair(4, 4));
2017 expected.push_back(std::make_pair(3, 0));
2018 expected.push_back(std::make_pair(3, 1));
2019 expected.push_back(std::make_pair(3, 2));
2020 expected.push_back(std::make_pair(3, 3));
2021 expected.push_back(std::make_pair(3, 4));
2022 expected.push_back(std::make_pair(2, 0));
2023 expected.push_back(std::make_pair(2, 1));
2024 expected.push_back(std::make_pair(2, 2));
2025 expected.push_back(std::make_pair(2, 3));
2026 expected.push_back(std::make_pair(2, 4));
2027 expected.push_back(std::make_pair(1, 0));
2028 expected.push_back(std::make_pair(1, 1));
2029 expected.push_back(std::make_pair(1, 2));
2030 expected.push_back(std::make_pair(1, 3));
2031 expected.push_back(std::make_pair(1, 4));
2032 expected.push_back(std::make_pair(0, 0));
2033 expected.push_back(std::make_pair(0, 1));
2034 expected.push_back(std::make_pair(0, 2));
2035 expected.push_back(std::make_pair(0, 3));
2036 expected.push_back(std::make_pair(0, 4));
2037
2038 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2039
2040 // Center is the bottom right corner of the tiling.
2041 center = gfx::Rect(90, 45, 1, 1);
2042
2043 // Layout of the tiling data, and expected return order:
2044 // x 0 1 2 3 4
2045 // y.---------------
2046 // 0| 20 15 14 13 12
2047 // 1| 21 16 8 7 6
2048 // 2| 22 17 9 5 4
2049 // 3| 23 18 10 2 1
2050 // 4| 24 19 11 3 *
2051 expected.clear();
2052 expected.push_back(std::make_pair(4, 3));
2053 expected.push_back(std::make_pair(3, 3));
2054 expected.push_back(std::make_pair(3, 4));
2055 expected.push_back(std::make_pair(4, 2));
2056 expected.push_back(std::make_pair(3, 2));
2057 expected.push_back(std::make_pair(4, 1));
2058 expected.push_back(std::make_pair(3, 1));
2059 expected.push_back(std::make_pair(2, 1));
2060 expected.push_back(std::make_pair(2, 2));
2061 expected.push_back(std::make_pair(2, 3));
2062 expected.push_back(std::make_pair(2, 4));
2063 expected.push_back(std::make_pair(4, 0));
2064 expected.push_back(std::make_pair(3, 0));
2065 expected.push_back(std::make_pair(2, 0));
2066 expected.push_back(std::make_pair(1, 0));
2067 expected.push_back(std::make_pair(1, 1));
2068 expected.push_back(std::make_pair(1, 2));
2069 expected.push_back(std::make_pair(1, 3));
2070 expected.push_back(std::make_pair(1, 4));
2071 expected.push_back(std::make_pair(0, 0));
2072 expected.push_back(std::make_pair(0, 1));
2073 expected.push_back(std::make_pair(0, 2));
2074 expected.push_back(std::make_pair(0, 3));
2075 expected.push_back(std::make_pair(0, 4));
2076
2077 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2078
2079 // Center is off the top left side of the tiling.
2080 center = gfx::Rect(-60, -50, 1, 1);
2081
2082 // Layout of the tiling data, and expected return order:
2083 // Layout of the tiling data, and expected return order:
2084 // *
2085 //
2086 //
2087 //
2088 //
2089 // x 0 1 2 3 4
2090 // y.---------------
2091 // 0| 1 2 20 21 24
2092 // 1| 3 4 5 22 23
2093 // 2| 6 7 8 9 25
2094 // 3| 10 11 12 13 14
2095 // 4| 15 16 17 18 19
2096 expected.clear();
2097 expected.push_back(std::make_pair(0, 0));
2098 expected.push_back(std::make_pair(1, 0));
2099 expected.push_back(std::make_pair(0, 1));
2100 expected.push_back(std::make_pair(1, 1));
2101 expected.push_back(std::make_pair(2, 1));
2102 expected.push_back(std::make_pair(0, 2));
2103 expected.push_back(std::make_pair(1, 2));
2104 expected.push_back(std::make_pair(2, 2));
2105 expected.push_back(std::make_pair(3, 2));
2106 expected.push_back(std::make_pair(0, 3));
2107 expected.push_back(std::make_pair(1, 3));
2108 expected.push_back(std::make_pair(2, 3));
2109 expected.push_back(std::make_pair(3, 3));
2110 expected.push_back(std::make_pair(4, 3));
2111 expected.push_back(std::make_pair(0, 4));
2112 expected.push_back(std::make_pair(1, 4));
2113 expected.push_back(std::make_pair(2, 4));
2114 expected.push_back(std::make_pair(3, 4));
2115 expected.push_back(std::make_pair(4, 4));
2116 expected.push_back(std::make_pair(2, 0));
2117 expected.push_back(std::make_pair(3, 0));
2118 expected.push_back(std::make_pair(3, 1));
2119 expected.push_back(std::make_pair(4, 1));
2120 expected.push_back(std::make_pair(4, 0));
2121 expected.push_back(std::make_pair(4, 2));
2122
2123 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2124
2125 // Two tile center.
2126 center = gfx::Rect(50, 15, 1, 10);
2127
2128 // Layout of the tiling data, and expected return order:
2129 // x 0 1 2 3 4
2130 // y.---------------
2131 // 0| 20 8 6 4 17
2132 // 1| 21 9 * 2 16
2133 // 2| 22 10 * 1 15
2134 // 3| 23 7 5 3 14
2135 // 4| 19 11 12 13 18
2136 expected.clear();
2137 expected.push_back(std::make_pair(3, 2));
2138 expected.push_back(std::make_pair(3, 1));
2139 expected.push_back(std::make_pair(3, 3));
2140 expected.push_back(std::make_pair(3, 0));
2141 expected.push_back(std::make_pair(2, 3));
2142 expected.push_back(std::make_pair(2, 0));
2143 expected.push_back(std::make_pair(1, 3));
2144 expected.push_back(std::make_pair(1, 0));
2145 expected.push_back(std::make_pair(1, 1));
2146 expected.push_back(std::make_pair(1, 2));
2147 expected.push_back(std::make_pair(1, 4));
2148 expected.push_back(std::make_pair(2, 4));
2149 expected.push_back(std::make_pair(3, 4));
2150 expected.push_back(std::make_pair(4, 3));
2151 expected.push_back(std::make_pair(4, 2));
2152 expected.push_back(std::make_pair(4, 1));
2153 expected.push_back(std::make_pair(4, 0));
2154 expected.push_back(std::make_pair(4, 4));
2155 expected.push_back(std::make_pair(0, 4));
2156 expected.push_back(std::make_pair(0, 0));
2157 expected.push_back(std::make_pair(0, 1));
2158 expected.push_back(std::make_pair(0, 2));
2159 expected.push_back(std::make_pair(0, 3));
2160
2161 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2162 }
2163
2164 TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesSmallConsider) {
2165 TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
2166 gfx::Rect ignore;
2167 std::vector<std::pair<int, int>> expected;
2168 gfx::Rect center(30, 15, 1, 1);
2169
2170 // Consider is one cell.
2171 gfx::Rect consider(1, 1);
2172
2173 // Layout of the tiling data, and expected return order:
2174 // x 0 1 2 3 4
2175 // y.---------------
2176 // 0| 1
2177 // 1| *
2178 // 2|
2179 // 3|
2180 // 4|
2181 expected.push_back(std::make_pair(0, 0));
2182
2183 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2184
2185 // Consider is bottom right corner.
2186 consider = gfx::Rect(70, 35, 20, 10);
2187
2188 // Layout of the tiling data, and expected return order:
2189 // x 0 1 2 3 4
2190 // y.---------------
2191 // 0|
2192 // 1| *
2193 // 2|
2194 // 3| 1 3
2195 // 4| 2 4
2196 expected.clear();
2197 expected.push_back(std::make_pair(3, 3));
2198 expected.push_back(std::make_pair(3, 4));
2199 expected.push_back(std::make_pair(4, 3));
2200 expected.push_back(std::make_pair(4, 4));
2201
2202 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2203
2204 // Consider is one column.
2205 consider = gfx::Rect(21, 0, 1, 100);
2206
2207 // Layout of the tiling data, and expected return order:
2208 // x 0 1 2 3 4
2209 // y.---------------
2210 // 0| 2
2211 // 1| *
2212 // 2| 1
2213 // 3| 3
2214 // 4| 4
2215 expected.clear();
2216 expected.push_back(std::make_pair(1, 2));
2217 expected.push_back(std::make_pair(1, 0));
2218 expected.push_back(std::make_pair(1, 3));
2219 expected.push_back(std::make_pair(1, 4));
2220
2221 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2222
2223 // Consider is four columns.
2224 consider = gfx::Rect(80, 50);
2225
2226 // Layout of the tiling data, and expected return order:
2227 // x 0 1 2 3 4
2228 // y.---------------
2229 // 0| 7 5 3 14
2230 // 1| 8 * 1 13
2231 // 2| 6 4 2 12
2232 // 3| 9 10 11 15
2233 // 4| 16 17 18 19
2234 expected.clear();
2235 expected.push_back(std::make_pair(2, 1));
2236 expected.push_back(std::make_pair(2, 2));
2237 expected.push_back(std::make_pair(2, 0));
2238 expected.push_back(std::make_pair(1, 2));
2239 expected.push_back(std::make_pair(1, 0));
2240 expected.push_back(std::make_pair(0, 2));
2241 expected.push_back(std::make_pair(0, 0));
2242 expected.push_back(std::make_pair(0, 1));
2243 expected.push_back(std::make_pair(0, 3));
2244 expected.push_back(std::make_pair(1, 3));
2245 expected.push_back(std::make_pair(2, 3));
2246 expected.push_back(std::make_pair(3, 2));
2247 expected.push_back(std::make_pair(3, 1));
2248 expected.push_back(std::make_pair(3, 0));
2249 expected.push_back(std::make_pair(3, 3));
2250 expected.push_back(std::make_pair(0, 4));
2251 expected.push_back(std::make_pair(1, 4));
2252 expected.push_back(std::make_pair(2, 4));
2253 expected.push_back(std::make_pair(3, 4));
2254
2255 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2256 }
2257
2258 TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesHasIgnore) {
2259 TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
2260 gfx::Rect consider(100, 50);
2261 std::vector<std::pair<int, int>> expected;
2262 gfx::Rect center(30, 15, 1, 1);
2263
2264 // Full ignore.
2265 gfx::Rect ignore(100, 50);
2266
2267 // Layout of the tiling data, and expected return order:
2268 // x 0 1 2 3 4
2269 // y.---------------
2270 // 0| I I I I I
2271 // 1| I * I I I
2272 // 2| I I I I I
2273 // 3| I I I I I
2274 // 4| I I I I I
2275 expected.clear();
2276
2277 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2278
2279 // 3 column ignore.
2280 ignore = gfx::Rect(30, 0, 40, 100);
2281
2282 // Layout of the tiling data, and expected return order:
2283 // x 0 1 2 3 4
2284 // y.---------------
2285 // 0| 2 I I I 9
2286 // 1| 3 * I I 8
2287 // 2| 1 I I I 7
2288 // 3| 4 I I I 6
2289 // 4| 5 I I I 10
2290 expected.clear();
2291
2292 expected.push_back(std::make_pair(0, 2));
2293 expected.push_back(std::make_pair(0, 0));
2294 expected.push_back(std::make_pair(0, 1));
2295 expected.push_back(std::make_pair(0, 3));
2296 expected.push_back(std::make_pair(0, 4));
2297 expected.push_back(std::make_pair(4, 3));
2298 expected.push_back(std::make_pair(4, 2));
2299 expected.push_back(std::make_pair(4, 1));
2300 expected.push_back(std::make_pair(4, 0));
2301 expected.push_back(std::make_pair(4, 4));
2302
2303 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2304
2305 // Ignore covers the top half.
2306 ignore = gfx::Rect(100, 25);
2307
2308 // Layout of the tiling data, and expected return order:
2309 // x 0 1 2 3 4
2310 // y.---------------
2311 // 0| I I I I I
2312 // 1| I * I I I
2313 // 2| I I I I I
2314 // 3| 1 2 3 4 9
2315 // 4| 5 6 7 8 10
2316 expected.clear();
2317
2318 expected.push_back(std::make_pair(0, 3));
2319 expected.push_back(std::make_pair(1, 3));
2320 expected.push_back(std::make_pair(2, 3));
2321 expected.push_back(std::make_pair(3, 3));
2322 expected.push_back(std::make_pair(0, 4));
2323 expected.push_back(std::make_pair(1, 4));
2324 expected.push_back(std::make_pair(2, 4));
2325 expected.push_back(std::make_pair(3, 4));
2326 expected.push_back(std::make_pair(4, 3));
2327 expected.push_back(std::make_pair(4, 4));
2328
2329 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2330 }
2331
2332 TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesRectangleCenter) {
2333 TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
2334 gfx::Rect consider(100, 50);
2335 std::vector<std::pair<int, int>> expected;
2336 gfx::Rect ignore;
2337
2338 // Two cell center
2339 gfx::Rect center(50, 25, 1, 10);
2340
2341 // Layout of the tiling data, and expected return order:
2342 // x 0 1 2 3 4
2343 // y.---------------
2344 // 0| 19 13 12 11 18
2345 // 1| 20 8 6 4 17
2346 // 2| 21 9 * 2 16
2347 // 3| 22 10 * 1 15
2348 // 4| 23 7 5 3 14
2349 expected.clear();
2350 expected.push_back(std::make_pair(3, 3));
2351 expected.push_back(std::make_pair(3, 2));
2352 expected.push_back(std::make_pair(3, 4));
2353 expected.push_back(std::make_pair(3, 1));
2354 expected.push_back(std::make_pair(2, 4));
2355 expected.push_back(std::make_pair(2, 1));
2356 expected.push_back(std::make_pair(1, 4));
2357 expected.push_back(std::make_pair(1, 1));
2358 expected.push_back(std::make_pair(1, 2));
2359 expected.push_back(std::make_pair(1, 3));
2360 expected.push_back(std::make_pair(3, 0));
2361 expected.push_back(std::make_pair(2, 0));
2362 expected.push_back(std::make_pair(1, 0));
2363 expected.push_back(std::make_pair(4, 4));
2364 expected.push_back(std::make_pair(4, 3));
2365 expected.push_back(std::make_pair(4, 2));
2366 expected.push_back(std::make_pair(4, 1));
2367 expected.push_back(std::make_pair(4, 0));
2368 expected.push_back(std::make_pair(0, 0));
2369 expected.push_back(std::make_pair(0, 1));
2370 expected.push_back(std::make_pair(0, 2));
2371 expected.push_back(std::make_pair(0, 3));
2372 expected.push_back(std::make_pair(0, 4));
2373
2374 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2375
2376 // Three by two center.
2377 center = gfx::Rect(30, 25, 40, 10);
2378
2379 // Layout of the tiling data, and expected return order:
2380 // x 0 1 2 3 4
2381 // y.---------------
2382 // 0| 19 18 17 16 15
2383 // 1| 12 10 9 8 4
2384 // 2| 13 * * * 2
2385 // 3| 14 * * * 1
2386 // 4| 11 5 6 7 3
2387 expected.clear();
2388
2389 expected.push_back(std::make_pair(4, 3));
2390 expected.push_back(std::make_pair(4, 2));
2391 expected.push_back(std::make_pair(4, 4));
2392 expected.push_back(std::make_pair(4, 1));
2393 expected.push_back(std::make_pair(1, 4));
2394 expected.push_back(std::make_pair(2, 4));
2395 expected.push_back(std::make_pair(3, 4));
2396 expected.push_back(std::make_pair(3, 1));
2397 expected.push_back(std::make_pair(2, 1));
2398 expected.push_back(std::make_pair(1, 1));
2399 expected.push_back(std::make_pair(0, 4));
2400 expected.push_back(std::make_pair(0, 1));
2401 expected.push_back(std::make_pair(0, 2));
2402 expected.push_back(std::make_pair(0, 3));
2403 expected.push_back(std::make_pair(4, 0));
2404 expected.push_back(std::make_pair(3, 0));
2405 expected.push_back(std::make_pair(2, 0));
2406 expected.push_back(std::make_pair(1, 0));
2407 expected.push_back(std::make_pair(0, 0));
2408
2409 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2410
2411 // Column center off the left side.
2412 center = gfx::Rect(-100, 0, 60, 50);
2413
2414 // Layout of the tiling data, and expected return order:
2415 // x 0 1 2 3 4
2416 // y.---------------
2417 // * 0| 5 10 15 20 25
2418 // * 1| 4 9 14 19 24
2419 // * 2| 3 8 13 18 23
2420 // * 3| 2 7 12 17 22
2421 // * 4| 1 6 11 16 21
2422 expected.clear();
2423
2424 expected.push_back(std::make_pair(0, 4));
2425 expected.push_back(std::make_pair(0, 3));
2426 expected.push_back(std::make_pair(0, 2));
2427 expected.push_back(std::make_pair(0, 1));
2428 expected.push_back(std::make_pair(0, 0));
2429 expected.push_back(std::make_pair(1, 4));
2430 expected.push_back(std::make_pair(1, 3));
2431 expected.push_back(std::make_pair(1, 2));
2432 expected.push_back(std::make_pair(1, 1));
2433 expected.push_back(std::make_pair(1, 0));
2434 expected.push_back(std::make_pair(2, 4));
2435 expected.push_back(std::make_pair(2, 3));
2436 expected.push_back(std::make_pair(2, 2));
2437 expected.push_back(std::make_pair(2, 1));
2438 expected.push_back(std::make_pair(2, 0));
2439 expected.push_back(std::make_pair(3, 4));
2440 expected.push_back(std::make_pair(3, 3));
2441 expected.push_back(std::make_pair(3, 2));
2442 expected.push_back(std::make_pair(3, 1));
2443 expected.push_back(std::make_pair(3, 0));
2444 expected.push_back(std::make_pair(4, 4));
2445 expected.push_back(std::make_pair(4, 3));
2446 expected.push_back(std::make_pair(4, 2));
2447 expected.push_back(std::make_pair(4, 1));
2448 expected.push_back(std::make_pair(4, 0));
2449
2450 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2451 }
2452
2453 TEST(TilingDataTest, SpiralDifferenceIteratorWideTilesEdgeCases) {
2454 TilingData tiling_data(gfx::Size(20, 10), gfx::Size(100, 50), false);
2455 std::vector<std::pair<int, int>> expected;
2456 gfx::Rect center;
2457 gfx::Rect consider;
2458 gfx::Rect ignore;
2459
2460 // Ignore contains, but is not equal to, consider and center.
2461 ignore = gfx::Rect(70, 0, 40, 50);
2462 consider = gfx::Rect(80, 20, 20, 30);
2463 center = gfx::Rect(90, 0, 5, 5);
2464
2465 // Layout of the tiling data, and expected return order:
2466 // x 0 1 2 3 4
2467 // y.---------------
2468 // 0| I *
2469 // 1| I I
2470 // 2| I I
2471 // 3| I I
2472 // 4| I I
2473 expected.clear();
2474
2475 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2476
2477 // Center intersects with consider.
2478 ignore = gfx::Rect();
2479 center = gfx::Rect(0, 30, 100, 20);
2480 consider = gfx::Rect(40, 50);
2481
2482 // Layout of the tiling data, and expected return order:
2483 // x 0 1 2 3 4
2484 // y.---------------
2485 // 0| 6 5
2486 // 1| 4 3
2487 // 2| 2 1
2488 // 3| * * * * *
2489 // 4| * * * * *
2490 expected.clear();
2491
2492 expected.push_back(std::make_pair(1, 2));
2493 expected.push_back(std::make_pair(0, 2));
2494 expected.push_back(std::make_pair(1, 1));
2495 expected.push_back(std::make_pair(0, 1));
2496 expected.push_back(std::make_pair(1, 0));
2497 expected.push_back(std::make_pair(0, 0));
2498
2499 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2500
2501 // Consider and ignore are non-intersecting.
2502 ignore = gfx::Rect(30, 50);
2503 consider = gfx::Rect(60, 0, 30, 50);
2504 center = gfx::Rect(50, 0, 1, 1);
2505
2506 // Layout of the tiling data, and expected return order:
2507 // x 0 1 2 3 4
2508 // y.---------------
2509 // 0| I I * 1 5
2510 // 1| I I 2 4
2511 // 2| I I 3 6
2512 // 3| I I 7 8
2513 // 4| I I 9 10
2514 expected.clear();
2515
2516 expected.push_back(std::make_pair(3, 0));
2517 expected.push_back(std::make_pair(3, 1));
2518 expected.push_back(std::make_pair(3, 2));
2519 expected.push_back(std::make_pair(4, 1));
2520 expected.push_back(std::make_pair(4, 0));
2521 expected.push_back(std::make_pair(4, 2));
2522 expected.push_back(std::make_pair(3, 3));
2523 expected.push_back(std::make_pair(4, 3));
2524 expected.push_back(std::make_pair(3, 4));
2525 expected.push_back(std::make_pair(4, 4));
2526
2527 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2528
2529 // Center intersects with ignore.
2530 consider = gfx::Rect(100, 50);
2531 center = gfx::Rect(50, 0, 1, 50);
2532 ignore = gfx::Rect(0, 25, 100, 1);
2533
2534 // Layout of the tiling data, and expected return order:
2535 // x 0 1 2 3 4
2536 // y.---------------
2537 // 0| 13 5 * 4 12
2538 // 1| 14 6 * 3 11
2539 // 2| I I * I I
2540 // 3| 15 7 * 2 10
2541 // 4| 16 8 * 1 9
2542 expected.clear();
2543
2544 expected.push_back(std::make_pair(3, 4));
2545 expected.push_back(std::make_pair(3, 3));
2546 expected.push_back(std::make_pair(3, 1));
2547 expected.push_back(std::make_pair(3, 0));
2548 expected.push_back(std::make_pair(1, 0));
2549 expected.push_back(std::make_pair(1, 1));
2550 expected.push_back(std::make_pair(1, 3));
2551 expected.push_back(std::make_pair(1, 4));
2552 expected.push_back(std::make_pair(4, 4));
2553 expected.push_back(std::make_pair(4, 3));
2554 expected.push_back(std::make_pair(4, 1));
2555 expected.push_back(std::make_pair(4, 0));
2556 expected.push_back(std::make_pair(0, 0));
2557 expected.push_back(std::make_pair(0, 1));
2558 expected.push_back(std::make_pair(0, 3));
2559 expected.push_back(std::make_pair(0, 4));
2560
2561 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2562
2563 // Center and ignore are the same.
2564 consider = gfx::Rect(100, 50);
2565 center = gfx::Rect(50, 0, 1, 50);
2566 ignore = center;
2567
2568 // Layout of the tiling data, and expected return order:
2569 // x 0 1 2 3 4
2570 // y.---------------
2571 // 0| 16 6 * 5 15
2572 // 1| 17 7 * 4 14
2573 // 2| 18 8 * 3 13
2574 // 3| 19 9 * 2 12
2575 // 4| 20 10 * 1 11
2576 expected.clear();
2577
2578 expected.push_back(std::make_pair(3, 4));
2579 expected.push_back(std::make_pair(3, 3));
2580 expected.push_back(std::make_pair(3, 2));
2581 expected.push_back(std::make_pair(3, 1));
2582 expected.push_back(std::make_pair(3, 0));
2583 expected.push_back(std::make_pair(1, 0));
2584 expected.push_back(std::make_pair(1, 1));
2585 expected.push_back(std::make_pair(1, 2));
2586 expected.push_back(std::make_pair(1, 3));
2587 expected.push_back(std::make_pair(1, 4));
2588 expected.push_back(std::make_pair(4, 4));
2589 expected.push_back(std::make_pair(4, 3));
2590 expected.push_back(std::make_pair(4, 2));
2591 expected.push_back(std::make_pair(4, 1));
2592 expected.push_back(std::make_pair(4, 0));
2593 expected.push_back(std::make_pair(0, 0));
2594 expected.push_back(std::make_pair(0, 1));
2595 expected.push_back(std::make_pair(0, 2));
2596 expected.push_back(std::make_pair(0, 3));
2597 expected.push_back(std::make_pair(0, 4));
2598
2599 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2600
2601 // Empty tiling data.
2602 TilingData empty_data(gfx::Size(0, 0), gfx::Size(0, 0), false);
2603
2604 expected.clear();
2605 TestSpiralIterate(__LINE__, empty_data, consider, ignore, center, expected);
2606
2607 // Empty consider.
2608 ignore = gfx::Rect();
2609 center = gfx::Rect(1, 1, 1, 1);
2610 consider = gfx::Rect();
2611
2612 expected.clear();
2613 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2614
2615 // Empty center. Note: This arbitrarily puts the center to be off the top-left
2616 // corner.
2617 consider = gfx::Rect(100, 50);
2618 ignore = gfx::Rect();
2619 center = gfx::Rect();
2620
2621 // Layout of the tiling data, and expected return order:
2622 // x 0 1 2 3 4
2623 // y.---------------
2624 // 0| 1 3 11 19 24
2625 // 1| 2 4 10 18 23
2626 // 2| 5 6 12 17 22
2627 // 3| 7 8 9 20 21
2628 // 4| 13 14 15 16 25
2629 expected.clear();
2630
2631 expected.push_back(std::make_pair(0, 0));
2632 expected.push_back(std::make_pair(0, 1));
2633 expected.push_back(std::make_pair(1, 0));
2634 expected.push_back(std::make_pair(1, 1));
2635 expected.push_back(std::make_pair(0, 2));
2636 expected.push_back(std::make_pair(1, 2));
2637 expected.push_back(std::make_pair(0, 3));
2638 expected.push_back(std::make_pair(1, 3));
2639 expected.push_back(std::make_pair(2, 3));
2640 expected.push_back(std::make_pair(2, 1));
2641 expected.push_back(std::make_pair(2, 0));
2642 expected.push_back(std::make_pair(2, 2));
2643 expected.push_back(std::make_pair(0, 4));
2644 expected.push_back(std::make_pair(1, 4));
2645 expected.push_back(std::make_pair(2, 4));
2646 expected.push_back(std::make_pair(3, 4));
2647 expected.push_back(std::make_pair(3, 2));
2648 expected.push_back(std::make_pair(3, 1));
2649 expected.push_back(std::make_pair(3, 0));
2650 expected.push_back(std::make_pair(3, 3));
2651 expected.push_back(std::make_pair(4, 3));
2652 expected.push_back(std::make_pair(4, 2));
2653 expected.push_back(std::make_pair(4, 1));
2654 expected.push_back(std::make_pair(4, 0));
2655 expected.push_back(std::make_pair(4, 4));
2656
2657 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2658
2659 // Every rect is empty.
2660 ignore = gfx::Rect();
2661 center = gfx::Rect();
2662 consider = gfx::Rect();
2663
2664 expected.clear();
2665 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2666
2667 // Center is just to the left of cover, and off of the tiling's left side.
2668 consider = gfx::Rect(100, 50);
2669 ignore = gfx::Rect();
2670 center = gfx::Rect(-40, 0, 39, 50);
2671
2672 // Layout of the tiling data, and expected return order:
2673 // x 0 1 2 3 4
2674 // y.---------------
2675 // * 0| 5 10 15 20 25
2676 // * 1| 4 9 14 19 24
2677 // * 2| 3 8 13 18 23
2678 // * 3| 2 7 12 17 22
2679 // * 4| 1 6 11 16 21
2680 expected.clear();
2681
2682 expected.push_back(std::make_pair(0, 4));
2683 expected.push_back(std::make_pair(0, 3));
2684 expected.push_back(std::make_pair(0, 2));
2685 expected.push_back(std::make_pair(0, 1));
2686 expected.push_back(std::make_pair(0, 0));
2687 expected.push_back(std::make_pair(1, 4));
2688 expected.push_back(std::make_pair(1, 3));
2689 expected.push_back(std::make_pair(1, 2));
2690 expected.push_back(std::make_pair(1, 1));
2691 expected.push_back(std::make_pair(1, 0));
2692 expected.push_back(std::make_pair(2, 4));
2693 expected.push_back(std::make_pair(2, 3));
2694 expected.push_back(std::make_pair(2, 2));
2695 expected.push_back(std::make_pair(2, 1));
2696 expected.push_back(std::make_pair(2, 0));
2697 expected.push_back(std::make_pair(3, 4));
2698 expected.push_back(std::make_pair(3, 3));
2699 expected.push_back(std::make_pair(3, 2));
2700 expected.push_back(std::make_pair(3, 1));
2701 expected.push_back(std::make_pair(3, 0));
2702 expected.push_back(std::make_pair(4, 4));
2703 expected.push_back(std::make_pair(4, 3));
2704 expected.push_back(std::make_pair(4, 2));
2705 expected.push_back(std::make_pair(4, 1));
2706 expected.push_back(std::make_pair(4, 0));
2707
2708 TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected);
2709 }
2710
1956 } // namespace 2711 } // namespace
1957 2712
1958 } // namespace cc 2713 } // namespace cc
OLDNEW
« 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