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

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