Changeset 112432 in webkit
- Timestamp:
- Mar 28, 2012 1:20:23 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r112428 r112432 1 2012-03-28 Adrienne Walker <enne@google.com> 2 3 [chromium] Fix tiled layer assert for huge layers 4 https://bugs.webkit.org/show_bug.cgi?id=82486 5 6 Reviewed by James Robinson. 7 8 Test: TiledLayerChromiumTest.hugeLayerUpdateCrash 9 10 TilingData::numTiles() is calculated as the product of two ints and so 11 can potentially overflow, causing numTiles() to be incorrect. To avoid 12 calling code accidentally falling into this trap, remove this function 13 and all code that uses tile index from TilingData. This requires 14 fixing up a bunch of callers of TilingData and CCLayerTilingData. 15 16 Additionally, TilingData::numTiles() has long been a confusing 17 function name in some contexts, so rename to bool hasEmptyBounds(). 18 19 Also, remove TilingData::intersectDrawQuad because there are no 20 clients of that function. 21 22 * platform/graphics/chromium/TiledLayerChromium.cpp: 23 (WebCore::TiledLayerChromium::drawsContent): 24 (WebCore::TiledLayerChromium::reserveTextures): 25 (WebCore::TiledLayerChromium::prepareToUpdate): 26 (WebCore::TiledLayerChromium::prepareToUpdateIdle): 27 (WebCore::TiledLayerChromium::needsIdlePaint): 28 (WebCore::TiledLayerChromium::idlePaintRect): 29 * platform/graphics/chromium/cc/CCLayerTilingData.cpp: 30 (WebCore::CCLayerTilingData::tileRect): 31 * platform/graphics/chromium/cc/CCLayerTilingData.h: 32 (WebCore::CCLayerTilingData::hasEmptyBounds): 33 (WebCore::CCLayerTilingData::tileBounds): 34 (WebCore::CCLayerTilingData::isEmpty): 35 * platform/graphics/chromium/cc/CCTiledLayerImpl.cpp: 36 (WebCore::CCTiledLayerImpl::bindContentsTexture): 37 (WebCore::CCTiledLayerImpl::appendQuads): 38 * platform/graphics/gpu/Texture.cpp: 39 (WebCore::Texture::create): 40 (WebCore::Texture::updateSubRect): 41 * platform/graphics/gpu/TilingData.cpp: 42 (WebCore::TilingData::tileBounds): 43 (WebCore::TilingData::tileBoundsWithBorder): 44 (WebCore::TilingData::tileBoundsNormalized): 45 * platform/graphics/gpu/TilingData.h: 46 (WebCore::TilingData::hasEmptyBounds): 47 (TilingData): 48 (WebCore::TilingData::assertTile): 49 1 50 2012-03-28 Peter Rybin <peter.rybin@gmail.com> 2 51 -
trunk/Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp
r112327 r112432 167 167 return false; 168 168 169 if (m_tilingOption == NeverTile && m_tiler->numTiles() > 1) 169 bool hasMoreThanOneTile = m_tiler->numTilesX() > 1 || m_tiler->numTilesY() > 1; 170 if (m_tilingOption == NeverTile && hasMoreThanOneTile) 170 171 return false; 171 172 … … 557 558 558 559 const IntRect& layerRect = visibleLayerRect(); 559 if (layerRect.isEmpty() || !m_tiler->numTiles())560 if (layerRect.isEmpty() || m_tiler->hasEmptyBounds()) 560 561 return; 561 562 … … 610 611 resetUpdateState(); 611 612 612 if (layerRect.isEmpty() || !m_tiler->numTiles())613 if (layerRect.isEmpty() || m_tiler->hasEmptyBounds()) 613 614 return; 614 615 … … 629 630 updateBounds(); 630 631 631 if ( !m_tiler->numTiles())632 if (m_tiler->hasEmptyBounds()) 632 633 return; 633 634 … … 702 703 return false; 703 704 704 if ( !m_tiler->numTiles())705 if (m_tiler->hasEmptyBounds()) 705 706 return false; 706 707 … … 732 733 // ones we avoid prepainting the layer at all. 733 734 if (visibleLayerRect.isEmpty()) { 734 if ((drawTransformIsAnimating() || screenSpaceTransformIsAnimating()) && m_tiler->numTiles() <= 9) 735 bool isSmallLayer = m_tiler->numTilesX() <= 9 && m_tiler->numTilesY() <= 9 && m_tiler->numTilesX() * m_tiler->numTilesY() <= 9; 736 if ((drawTransformIsAnimating() || screenSpaceTransformIsAnimating()) && isSmallLayer) 735 737 return IntRect(IntPoint(), contentBounds()); 736 738 return IntRect(); -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp
r110317 r112432 107 107 IntRect CCLayerTilingData::tileRect(const Tile* tile) const 108 108 { 109 const int index = m_tilingData.tileIndex(tile->i(), tile->j()); 110 IntRect tileRect = m_tilingData.tileBoundsWithBorder(index); 109 IntRect tileRect = m_tilingData.tileBoundsWithBorder(tile->i(), tile->j()); 111 110 tileRect.setSize(m_tileSize); 112 111 return tileRect; -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.h
r110317 r112432 45 45 static PassOwnPtr<CCLayerTilingData> create(const IntSize& tileSize, BorderTexelOption); 46 46 47 int numTiles() const { return m_tilingData.numTiles(); }47 bool hasEmptyBounds() const { return m_tilingData.hasEmptyBounds(); } 48 48 int numTilesX() const { return m_tilingData.numTilesX(); } 49 49 int numTilesY() const { return m_tilingData.numTilesY(); } 50 IntRect tileBounds(int i, int j) const { return m_tilingData.tileBounds( m_tilingData.tileIndex(i, j)); }50 IntRect tileBounds(int i, int j) const { return m_tilingData.tileBounds(i, j); } 51 51 IntPoint textureOffset(int xIndex, int yIndex) const { return m_tilingData.textureOffset(xIndex, yIndex); } 52 52 … … 58 58 bool hasBorderTexels() const { return m_tilingData.borderTexels(); } 59 59 60 bool isEmpty() const { return !m_tilingData.numTiles() || !tiles().size(); }60 bool isEmpty() const { return hasEmptyBounds() || !tiles().size(); } 61 61 62 62 const CCLayerTilingData& operator=(const CCLayerTilingData&); -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp
r112327 r112432 81 81 // This function is only valid for single texture layers, e.g. masks. 82 82 ASSERT(m_tiler); 83 ASSERT(m_tiler->numTiles() == 1); 83 ASSERT(m_tiler->numTilesX() == 1); 84 ASSERT(m_tiler->numTilesY() == 1); 84 85 85 86 DrawableTile* tile = tileAt(0, 0); … … 144 145 appendGutterQuads(quadList, sharedQuadState); 145 146 146 if (!m_tiler || !m_tiler->numTiles() || layerRect.isEmpty())147 if (!m_tiler || m_tiler->hasEmptyBounds() || layerRect.isEmpty()) 147 148 return; 148 149 -
trunk/Source/WebCore/platform/graphics/filters/FECustomFilter.cpp
r111610 r112432 113 113 114 114 // Do not draw the filter if the input image cannot fit inside a single GPU texture. 115 if (m_inputTexture->tiles().numTiles () != 1)115 if (m_inputTexture->tiles().numTilesX() != 1 || m_inputTexture->tiles().numTilesY() != 1) 116 116 return; 117 117 -
trunk/Source/WebCore/platform/graphics/gpu/Texture.cpp
r103170 r112432 91 91 context->getIntegerv(GraphicsContext3D::MAX_TEXTURE_SIZE, &maxTextureSize); 92 92 TilingData tiling(maxTextureSize, width, height, true); 93 int numTiles = tiling.numTiles(); 93 94 // Check for overflow. 95 int numTiles = width * height; 96 if (numTiles / width != height) { 97 tiling.setTotalSize(0, 0); 98 numTiles = 0; 99 } 94 100 95 101 OwnPtr<Vector<unsigned int> > textureIds = adoptPtr(new Vector<unsigned int>(numTiles)); … … 105 111 textureIds->at(i) = textureId; 106 112 107 IntRect tileBoundsWithBorder = tiling.tileBoundsWithBorder(i); 113 int xIndex = i % width; 114 int yIndex = i / width; 115 IntRect tileBoundsWithBorder = tiling.tileBoundsWithBorder(xIndex, yIndex); 108 116 109 117 unsigned int glFormat = 0; … … 169 177 OwnArrayPtr<uint32_t> tempBuff = adoptArrayPtr(new uint32_t[tempBuffSize]); 170 178 171 for (int tile = 0; tile < m_tiles.numTiles(); tile++) { 179 for (int tile = 0; tile < m_tiles.numTilesX() * m_tiles.numTilesY(); tile++) { 180 int xIndex = tile % m_tiles.totalSizeX(); 181 int yIndex = tile / m_tiles.totalSizeX(); 182 172 183 // Intersect with tile 173 IntRect tileBoundsWithBorder = m_tiles.tileBoundsWithBorder( tile);184 IntRect tileBoundsWithBorder = m_tiles.tileBoundsWithBorder(xIndex, yIndex); 174 185 175 186 IntRect updateRectIntersected = updateRectSanitized; -
trunk/Source/WebCore/platform/graphics/gpu/TilingData.cpp
r103944 r112432 100 100 } 101 101 102 IntRect TilingData::tileBounds(int tile) const 103 { 104 assertTile(tile); 105 int ix = tileXIndex(tile); 106 int iy = tileYIndex(tile); 107 int x = tilePositionX(ix); 108 int y = tilePositionY(iy); 109 int width = tileSizeX(ix); 110 int height = tileSizeY(iy); 102 IntRect TilingData::tileBounds(int i, int j) const 103 { 104 assertTile(i, j); 105 int x = tilePositionX(i); 106 int y = tilePositionY(j); 107 int width = tileSizeX(i); 108 int height = tileSizeY(j); 111 109 ASSERT(x >= 0 && y >= 0 && width >= 0 && height >= 0); 112 110 ASSERT(x <= totalSizeX() && y <= totalSizeY()); … … 114 112 } 115 113 116 IntRect TilingData::tileBoundsWithBorder(int tile) const117 { 118 IntRect bounds = tileBounds( tile);114 IntRect TilingData::tileBoundsWithBorder(int i, int j) const 115 { 116 IntRect bounds = tileBounds(i, j); 119 117 120 118 if (m_borderTexels) { … … 124 122 int y2 = bounds.maxY(); 125 123 126 if ( tileXIndex(tile)> 0)124 if (i > 0) 127 125 x1--; 128 if ( tileXIndex(tile)< (numTilesX() - 1))126 if (i < (numTilesX() - 1)) 129 127 x2++; 130 if ( tileYIndex(tile)> 0)128 if (j > 0) 131 129 y1--; 132 if ( tileYIndex(tile)< (numTilesY() - 1))130 if (j < (numTilesY() - 1)) 133 131 y2++; 134 132 … … 139 137 } 140 138 141 FloatRect TilingData::tileBoundsNormalized(int tile) const142 { 143 assertTile( tile);144 FloatRect bounds(tileBounds( tile));139 FloatRect TilingData::tileBoundsNormalized(int i, int j) const 140 { 141 assertTile(i, j); 142 FloatRect bounds(tileBounds(i, j)); 145 143 bounds.scale(1.0f / m_totalSizeX, 1.0f / m_totalSizeY); 146 144 return bounds; … … 217 215 } 218 216 219 void TilingData::intersectDrawQuad(const FloatRect& srcRect, const FloatRect& dstRect, int tile,220 FloatRect* newSrc, FloatRect* newDst) const221 {222 // Intersect with tile223 FloatRect tileBounds = this->tileBounds(tile);224 FloatRect srcRectIntersected = srcRect;225 srcRectIntersected.intersect(tileBounds);226 227 if (srcRectIntersected.isEmpty()) {228 *newSrc = *newDst = FloatRect(0, 0, 0, 0);229 return;230 }231 232 float srcRectIntersectedNormX = (srcRectIntersected.x() - srcRect.x()) / srcRect.width();233 float srcRectIntersectedNormY = (srcRectIntersected.y() - srcRect.y()) / srcRect.height();234 float srcRectIntersectedNormW = srcRectIntersected.width() / srcRect.width();235 float srcRectIntersectedNormH = srcRectIntersected.height() / srcRect.height();236 237 *newSrc = srcRectIntersected;238 newSrc->move(239 -tileBounds.x() + ((tileXIndex(tile) > 0) ? m_borderTexels : 0),240 -tileBounds.y() + ((tileYIndex(tile) > 0) ? m_borderTexels : 0));241 242 *newDst = FloatRect(243 srcRectIntersectedNormX * dstRect.width() + dstRect.x(),244 srcRectIntersectedNormY * dstRect.height() + dstRect.y(),245 srcRectIntersectedNormW * dstRect.width(),246 srcRectIntersectedNormH * dstRect.height());247 }248 249 217 IntPoint TilingData::textureOffset(int xIndex, int yIndex) const 250 218 { -
trunk/Source/WebCore/platform/graphics/gpu/TilingData.h
r103944 r112432 51 51 int borderTexels() const { return m_borderTexels; } 52 52 53 int numTiles() const { return numTilesX() *numTilesY(); }53 bool hasEmptyBounds() const { return !numTilesX() || !numTilesY(); } 54 54 int numTilesX() const { return m_numTilesX; } 55 55 int numTilesY() const { return m_numTilesY; } 56 int tileIndex(int x, int y) const { return x + y * numTilesX(); }57 int tileXIndex(int tile) const { assertTile(tile); return tile % numTilesX(); }58 int tileYIndex(int tile) const { assertTile(tile); return tile / numTilesX(); }59 56 int tileXIndexFromSrcCoord(int) const; 60 57 int tileYIndexFromSrcCoord(int) const; 61 58 62 IntRect tileBounds(int tile) const;63 IntRect tileBoundsWithBorder(int tile) const;64 FloatRect tileBoundsNormalized(int tile) const;59 IntRect tileBounds(int, int) const; 60 IntRect tileBoundsWithBorder(int, int) const; 61 FloatRect tileBoundsNormalized(int, int) const; 65 62 int tilePositionX(int xIndex) const; 66 63 int tilePositionY(int yIndex) const; … … 70 67 IntRect overlappedTileIndices(const FloatRect& srcRect) const; 71 68 72 // Given a set of source and destination coordinates for a drawing quad73 // in texel units, returns adjusted data to render just the one tile.74 void intersectDrawQuad(const FloatRect& srcRect, const FloatRect& dstRect, int tile, FloatRect* newSrc, FloatRect* newDst) const;75 76 69 // Difference between tileBound's and tileBoundWithBorder's location(). 77 70 IntPoint textureOffset(int xIndex, int yIndex) const; … … 79 72 private: 80 73 TilingData() : m_maxTextureSize(0), m_totalSizeX(0), m_totalSizeY(0) {} 81 void assertTile(int tile) const { ASSERT_UNUSED(tile, tile >= 0 && tile < numTiles()); }74 void assertTile(int i, int j) const { ASSERT_UNUSED(i, i >= 0 && i < numTilesX()); ASSERT_UNUSED(j, j >= 0 && j < numTilesY()); } 82 75 void recomputeNumTiles(); 83 76 -
trunk/Source/WebKit/chromium/ChangeLog
r112421 r112432 1 2012-03-28 Adrienne Walker <enne@google.com> 2 3 [chromium] Fix tiled layer assert for huge layers 4 https://bugs.webkit.org/show_bug.cgi?id=82486 5 6 Reviewed by James Robinson. 7 8 Add test for updating a huge layer that would assert prior to this 9 code. Fix up TilingData tests to use a testing class that provides a 10 safe version of numTiles(). 11 12 * tests/TiledLayerChromiumTest.cpp: 13 (WTF::TEST): 14 (WTF): 15 * tests/TilingDataTest.cpp: 16 (TestTiling): 17 (WebCore::TestTiling::TestTiling): 18 (WebCore::TestTiling::numTiles): 19 (WebCore): 20 (WebCore::TEST): 21 1 22 2012-03-28 Tommy Widenflycht <tommyw@google.com> 2 23 -
trunk/Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp
r112327 r112432 1083 1083 } 1084 1084 1085 TEST(TiledLayerChromiumTest, hugeLayerUpdateCrash) 1086 { 1087 OwnPtr<TextureManager> textureManager = TextureManager::create(60*1024*1024, 60*1024*1024, 1024); 1088 RefPtr<FakeTiledLayerChromium> layer = adoptRef(new FakeTiledLayerChromium(textureManager.get())); 1089 1090 int size = 1 << 30; 1091 layer->setBounds(IntSize(size, size)); 1092 layer->invalidateRect(IntRect(0, 0, size, size)); 1093 1094 // Ensure no crash for bounds where size * size would overflow an int. 1095 layer->prepareToUpdate(IntRect(0, 0, 700, 700), 0); 1096 } 1097 1085 1098 TEST(TiledLayerChromiumTest, partialUpdates) 1086 1099 { -
trunk/Source/WebKit/chromium/tests/TilingDataTest.cpp
r103944 r112432 39 39 namespace { 40 40 41 class TestTiling : public TilingData { 42 public: 43 TestTiling(int maxTextureSize, int totalSizeX, int totalSizeY, bool hasBorderTexels) 44 : TilingData(maxTextureSize, totalSizeX, totalSizeY, hasBorderTexels) 45 { 46 } 47 48 // This function only available for testing because of potential overflow. 49 int numTiles() const 50 { 51 int numTiles = numTilesX() * numTilesY(); 52 53 // Assert no overflow. 54 EXPECT_GE(numTiles, 0); 55 if (numTiles > 0) 56 EXPECT_EQ(numTiles / numTilesX(), numTilesY()); 57 58 return numTiles; 59 } 60 }; 61 41 62 TEST(TilingDataTest, numTiles_NoTiling) 42 63 { 43 EXPECT_EQ(1, T ilingData(16, 16, 16, false).numTiles());44 EXPECT_EQ(1, T ilingData(16, 15, 15, true).numTiles());45 EXPECT_EQ(1, T ilingData(16, 16, 16, true).numTiles());46 EXPECT_EQ(1, T ilingData(16, 1, 16, false).numTiles());47 EXPECT_EQ(1, T ilingData(15, 15, 15, true).numTiles());64 EXPECT_EQ(1, TestTiling(16, 16, 16, false).numTiles()); 65 EXPECT_EQ(1, TestTiling(16, 15, 15, true).numTiles()); 66 EXPECT_EQ(1, TestTiling(16, 16, 16, true).numTiles()); 67 EXPECT_EQ(1, TestTiling(16, 1, 16, false).numTiles()); 68 EXPECT_EQ(1, TestTiling(15, 15, 15, true).numTiles()); 48 69 } 49 70 50 71 TEST(TilingDataTest, numTiles_TilingNoBorders) 51 72 { 52 EXPECT_EQ(0, T ilingData(0, 0, 0, false).numTiles());53 EXPECT_EQ(0, T ilingData(0, 4, 0, false).numTiles());54 EXPECT_EQ(0, T ilingData(0, 0, 4, false).numTiles());55 EXPECT_EQ(0, T ilingData(4, 4, 0, false).numTiles());56 EXPECT_EQ(0, T ilingData(4, 0, 4, false).numTiles());57 EXPECT_EQ(0, T ilingData(-8, 1, 1, false).numTiles());58 EXPECT_EQ(0, T ilingData(-1, 1, 1, false).numTiles());59 EXPECT_EQ(0, T ilingData(0, 1, 1, false).numTiles());60 61 EXPECT_EQ(1, T ilingData(1, 1, 1, false).numTiles());62 EXPECT_EQ(2, T ilingData(1, 1, 2, false).numTiles());63 EXPECT_EQ(2, T ilingData(1, 2, 1, false).numTiles());64 EXPECT_EQ(1, T ilingData(2, 1, 1, false).numTiles());65 EXPECT_EQ(1, T ilingData(2, 1, 2, false).numTiles());66 EXPECT_EQ(1, T ilingData(2, 2, 1, false).numTiles());67 EXPECT_EQ(1, T ilingData(2, 2, 2, false).numTiles());68 EXPECT_EQ(1, T ilingData(3, 3, 3, false).numTiles());69 70 EXPECT_EQ(1, T ilingData(4, 1, 4, false).numTiles());71 EXPECT_EQ(1, T ilingData(4, 2, 4, false).numTiles());72 EXPECT_EQ(1, T ilingData(4, 3, 4, false).numTiles());73 EXPECT_EQ(1, T ilingData(4, 4, 4, false).numTiles());74 EXPECT_EQ(2, T ilingData(4, 5, 4, false).numTiles());75 EXPECT_EQ(2, T ilingData(4, 6, 4, false).numTiles());76 EXPECT_EQ(2, T ilingData(4, 7, 4, false).numTiles());77 EXPECT_EQ(2, T ilingData(4, 8, 4, false).numTiles());78 EXPECT_EQ(3, T ilingData(4, 9, 4, false).numTiles());79 EXPECT_EQ(3, T ilingData(4, 10, 4, false).numTiles());80 EXPECT_EQ(3, T ilingData(4, 11, 4, false).numTiles());81 82 EXPECT_EQ(1, T ilingData(5, 1, 5, false).numTiles());83 EXPECT_EQ(1, T ilingData(5, 2, 5, false).numTiles());84 EXPECT_EQ(1, T ilingData(5, 3, 5, false).numTiles());85 EXPECT_EQ(1, T ilingData(5, 4, 5, false).numTiles());86 EXPECT_EQ(1, T ilingData(5, 5, 5, false).numTiles());87 EXPECT_EQ(2, T ilingData(5, 6, 5, false).numTiles());88 EXPECT_EQ(2, T ilingData(5, 7, 5, false).numTiles());89 EXPECT_EQ(2, T ilingData(5, 8, 5, false).numTiles());90 EXPECT_EQ(2, T ilingData(5, 9, 5, false).numTiles());91 EXPECT_EQ(2, T ilingData(5, 10, 5, false).numTiles());92 EXPECT_EQ(3, T ilingData(5, 11, 5, false).numTiles());93 94 EXPECT_EQ(1, T ilingData(16, 16, 16, false).numTiles());95 EXPECT_EQ(1, T ilingData(17, 16, 16, false).numTiles());96 EXPECT_EQ(4, T ilingData(15, 16, 16, false).numTiles());97 EXPECT_EQ(4, T ilingData(8, 16, 16, false).numTiles());98 EXPECT_EQ(6, T ilingData(8, 17, 16, false).numTiles());73 EXPECT_EQ(0, TestTiling(0, 0, 0, false).numTiles()); 74 EXPECT_EQ(0, TestTiling(0, 4, 0, false).numTiles()); 75 EXPECT_EQ(0, TestTiling(0, 0, 4, false).numTiles()); 76 EXPECT_EQ(0, TestTiling(4, 4, 0, false).numTiles()); 77 EXPECT_EQ(0, TestTiling(4, 0, 4, false).numTiles()); 78 EXPECT_EQ(0, TestTiling(-8, 1, 1, false).numTiles()); 79 EXPECT_EQ(0, TestTiling(-1, 1, 1, false).numTiles()); 80 EXPECT_EQ(0, TestTiling(0, 1, 1, false).numTiles()); 81 82 EXPECT_EQ(1, TestTiling(1, 1, 1, false).numTiles()); 83 EXPECT_EQ(2, TestTiling(1, 1, 2, false).numTiles()); 84 EXPECT_EQ(2, TestTiling(1, 2, 1, false).numTiles()); 85 EXPECT_EQ(1, TestTiling(2, 1, 1, false).numTiles()); 86 EXPECT_EQ(1, TestTiling(2, 1, 2, false).numTiles()); 87 EXPECT_EQ(1, TestTiling(2, 2, 1, false).numTiles()); 88 EXPECT_EQ(1, TestTiling(2, 2, 2, false).numTiles()); 89 EXPECT_EQ(1, TestTiling(3, 3, 3, false).numTiles()); 90 91 EXPECT_EQ(1, TestTiling(4, 1, 4, false).numTiles()); 92 EXPECT_EQ(1, TestTiling(4, 2, 4, false).numTiles()); 93 EXPECT_EQ(1, TestTiling(4, 3, 4, false).numTiles()); 94 EXPECT_EQ(1, TestTiling(4, 4, 4, false).numTiles()); 95 EXPECT_EQ(2, TestTiling(4, 5, 4, false).numTiles()); 96 EXPECT_EQ(2, TestTiling(4, 6, 4, false).numTiles()); 97 EXPECT_EQ(2, TestTiling(4, 7, 4, false).numTiles()); 98 EXPECT_EQ(2, TestTiling(4, 8, 4, false).numTiles()); 99 EXPECT_EQ(3, TestTiling(4, 9, 4, false).numTiles()); 100 EXPECT_EQ(3, TestTiling(4, 10, 4, false).numTiles()); 101 EXPECT_EQ(3, TestTiling(4, 11, 4, false).numTiles()); 102 103 EXPECT_EQ(1, TestTiling(5, 1, 5, false).numTiles()); 104 EXPECT_EQ(1, TestTiling(5, 2, 5, false).numTiles()); 105 EXPECT_EQ(1, TestTiling(5, 3, 5, false).numTiles()); 106 EXPECT_EQ(1, TestTiling(5, 4, 5, false).numTiles()); 107 EXPECT_EQ(1, TestTiling(5, 5, 5, false).numTiles()); 108 EXPECT_EQ(2, TestTiling(5, 6, 5, false).numTiles()); 109 EXPECT_EQ(2, TestTiling(5, 7, 5, false).numTiles()); 110 EXPECT_EQ(2, TestTiling(5, 8, 5, false).numTiles()); 111 EXPECT_EQ(2, TestTiling(5, 9, 5, false).numTiles()); 112 EXPECT_EQ(2, TestTiling(5, 10, 5, false).numTiles()); 113 EXPECT_EQ(3, TestTiling(5, 11, 5, false).numTiles()); 114 115 EXPECT_EQ(1, TestTiling(16, 16, 16, false).numTiles()); 116 EXPECT_EQ(1, TestTiling(17, 16, 16, false).numTiles()); 117 EXPECT_EQ(4, TestTiling(15, 16, 16, false).numTiles()); 118 EXPECT_EQ(4, TestTiling(8, 16, 16, false).numTiles()); 119 EXPECT_EQ(6, TestTiling(8, 17, 16, false).numTiles()); 99 120 } 100 121 101 122 TEST(TilingDataTest, numTiles_TilingWithBorders) 102 123 { 103 EXPECT_EQ(0, T ilingData(0, 0, 0, true).numTiles());104 EXPECT_EQ(0, T ilingData(0, 4, 0, true).numTiles());105 EXPECT_EQ(0, T ilingData(0, 0, 4, true).numTiles());106 EXPECT_EQ(0, T ilingData(4, 4, 0, true).numTiles());107 EXPECT_EQ(0, T ilingData(4, 0, 4, true).numTiles());108 EXPECT_EQ(0, T ilingData(-8, 1, 1, true).numTiles());109 EXPECT_EQ(0, T ilingData(-1, 1, 1, true).numTiles());110 EXPECT_EQ(0, T ilingData(0, 1, 1, true).numTiles());111 112 EXPECT_EQ(1, T ilingData(1, 1, 1, true).numTiles());113 EXPECT_EQ(0, T ilingData(1, 1, 2, true).numTiles());114 EXPECT_EQ(0, T ilingData(1, 2, 1, true).numTiles());115 EXPECT_EQ(1, T ilingData(2, 1, 1, true).numTiles());116 EXPECT_EQ(1, T ilingData(2, 1, 2, true).numTiles());117 EXPECT_EQ(1, T ilingData(2, 2, 1, true).numTiles());118 EXPECT_EQ(1, T ilingData(2, 2, 2, true).numTiles());119 120 EXPECT_EQ(1, T ilingData(3, 1, 3, true).numTiles());121 EXPECT_EQ(1, T ilingData(3, 2, 3, true).numTiles());122 EXPECT_EQ(1, T ilingData(3, 3, 3, true).numTiles());123 EXPECT_EQ(2, T ilingData(3, 4, 3, true).numTiles());124 EXPECT_EQ(3, T ilingData(3, 5, 3, true).numTiles());125 EXPECT_EQ(4, T ilingData(3, 6, 3, true).numTiles());126 EXPECT_EQ(5, T ilingData(3, 7, 3, true).numTiles());127 128 EXPECT_EQ(1, T ilingData(4, 1, 4, true).numTiles());129 EXPECT_EQ(1, T ilingData(4, 2, 4, true).numTiles());130 EXPECT_EQ(1, T ilingData(4, 3, 4, true).numTiles());131 EXPECT_EQ(1, T ilingData(4, 4, 4, true).numTiles());132 EXPECT_EQ(2, T ilingData(4, 5, 4, true).numTiles());133 EXPECT_EQ(2, T ilingData(4, 6, 4, true).numTiles());134 EXPECT_EQ(3, T ilingData(4, 7, 4, true).numTiles());135 EXPECT_EQ(3, T ilingData(4, 8, 4, true).numTiles());136 EXPECT_EQ(4, T ilingData(4, 9, 4, true).numTiles());137 EXPECT_EQ(4, T ilingData(4, 10, 4, true).numTiles());138 EXPECT_EQ(5, T ilingData(4, 11, 4, true).numTiles());139 140 EXPECT_EQ(1, T ilingData(5, 1, 5, true).numTiles());141 EXPECT_EQ(1, T ilingData(5, 2, 5, true).numTiles());142 EXPECT_EQ(1, T ilingData(5, 3, 5, true).numTiles());143 EXPECT_EQ(1, T ilingData(5, 4, 5, true).numTiles());144 EXPECT_EQ(1, T ilingData(5, 5, 5, true).numTiles());145 EXPECT_EQ(2, T ilingData(5, 6, 5, true).numTiles());146 EXPECT_EQ(2, T ilingData(5, 7, 5, true).numTiles());147 EXPECT_EQ(2, T ilingData(5, 8, 5, true).numTiles());148 EXPECT_EQ(3, T ilingData(5, 9, 5, true).numTiles());149 EXPECT_EQ(3, T ilingData(5, 10, 5, true).numTiles());150 EXPECT_EQ(3, T ilingData(5, 11, 5, true).numTiles());124 EXPECT_EQ(0, TestTiling(0, 0, 0, true).numTiles()); 125 EXPECT_EQ(0, TestTiling(0, 4, 0, true).numTiles()); 126 EXPECT_EQ(0, TestTiling(0, 0, 4, true).numTiles()); 127 EXPECT_EQ(0, TestTiling(4, 4, 0, true).numTiles()); 128 EXPECT_EQ(0, TestTiling(4, 0, 4, true).numTiles()); 129 EXPECT_EQ(0, TestTiling(-8, 1, 1, true).numTiles()); 130 EXPECT_EQ(0, TestTiling(-1, 1, 1, true).numTiles()); 131 EXPECT_EQ(0, TestTiling(0, 1, 1, true).numTiles()); 132 133 EXPECT_EQ(1, TestTiling(1, 1, 1, true).numTiles()); 134 EXPECT_EQ(0, TestTiling(1, 1, 2, true).numTiles()); 135 EXPECT_EQ(0, TestTiling(1, 2, 1, true).numTiles()); 136 EXPECT_EQ(1, TestTiling(2, 1, 1, true).numTiles()); 137 EXPECT_EQ(1, TestTiling(2, 1, 2, true).numTiles()); 138 EXPECT_EQ(1, TestTiling(2, 2, 1, true).numTiles()); 139 EXPECT_EQ(1, TestTiling(2, 2, 2, true).numTiles()); 140 141 EXPECT_EQ(1, TestTiling(3, 1, 3, true).numTiles()); 142 EXPECT_EQ(1, TestTiling(3, 2, 3, true).numTiles()); 143 EXPECT_EQ(1, TestTiling(3, 3, 3, true).numTiles()); 144 EXPECT_EQ(2, TestTiling(3, 4, 3, true).numTiles()); 145 EXPECT_EQ(3, TestTiling(3, 5, 3, true).numTiles()); 146 EXPECT_EQ(4, TestTiling(3, 6, 3, true).numTiles()); 147 EXPECT_EQ(5, TestTiling(3, 7, 3, true).numTiles()); 148 149 EXPECT_EQ(1, TestTiling(4, 1, 4, true).numTiles()); 150 EXPECT_EQ(1, TestTiling(4, 2, 4, true).numTiles()); 151 EXPECT_EQ(1, TestTiling(4, 3, 4, true).numTiles()); 152 EXPECT_EQ(1, TestTiling(4, 4, 4, true).numTiles()); 153 EXPECT_EQ(2, TestTiling(4, 5, 4, true).numTiles()); 154 EXPECT_EQ(2, TestTiling(4, 6, 4, true).numTiles()); 155 EXPECT_EQ(3, TestTiling(4, 7, 4, true).numTiles()); 156 EXPECT_EQ(3, TestTiling(4, 8, 4, true).numTiles()); 157 EXPECT_EQ(4, TestTiling(4, 9, 4, true).numTiles()); 158 EXPECT_EQ(4, TestTiling(4, 10, 4, true).numTiles()); 159 EXPECT_EQ(5, TestTiling(4, 11, 4, true).numTiles()); 160 161 EXPECT_EQ(1, TestTiling(5, 1, 5, true).numTiles()); 162 EXPECT_EQ(1, TestTiling(5, 2, 5, true).numTiles()); 163 EXPECT_EQ(1, TestTiling(5, 3, 5, true).numTiles()); 164 EXPECT_EQ(1, TestTiling(5, 4, 5, true).numTiles()); 165 EXPECT_EQ(1, TestTiling(5, 5, 5, true).numTiles()); 166 EXPECT_EQ(2, TestTiling(5, 6, 5, true).numTiles()); 167 EXPECT_EQ(2, TestTiling(5, 7, 5, true).numTiles()); 168 EXPECT_EQ(2, TestTiling(5, 8, 5, true).numTiles()); 169 EXPECT_EQ(3, TestTiling(5, 9, 5, true).numTiles()); 170 EXPECT_EQ(3, TestTiling(5, 10, 5, true).numTiles()); 171 EXPECT_EQ(3, TestTiling(5, 11, 5, true).numTiles()); 151 172 } 152 173 153 174 TEST(TilingDataTest, tileXIndexFromSrcCoord) 154 175 { 155 EXPECT_EQ(0, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(0));156 EXPECT_EQ(0, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(1));157 EXPECT_EQ(0, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(2));158 EXPECT_EQ(1, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(3));159 EXPECT_EQ(1, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(4));160 EXPECT_EQ(1, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(5));161 EXPECT_EQ(2, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(6));162 EXPECT_EQ(2, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(7));163 EXPECT_EQ(2, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(8));164 EXPECT_EQ(3, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(9));165 EXPECT_EQ(3, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(10));166 EXPECT_EQ(3, T ilingData(3, 10, 10, false).tileXIndexFromSrcCoord(11));167 168 EXPECT_EQ(0, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(0));169 EXPECT_EQ(0, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(1));170 EXPECT_EQ(1, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(2));171 EXPECT_EQ(2, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(3));172 EXPECT_EQ(3, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(4));173 EXPECT_EQ(4, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(5));174 EXPECT_EQ(5, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(6));175 EXPECT_EQ(6, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(7));176 EXPECT_EQ(7, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(8));177 EXPECT_EQ(7, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(9));178 EXPECT_EQ(7, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(10));179 EXPECT_EQ(7, T ilingData(3, 10, 10, true).tileXIndexFromSrcCoord(11));180 181 EXPECT_EQ(0, T ilingData(1, 1, 1, false).tileXIndexFromSrcCoord(0));182 EXPECT_EQ(0, T ilingData(2, 2, 2, false).tileXIndexFromSrcCoord(0));183 EXPECT_EQ(0, T ilingData(2, 2, 2, false).tileXIndexFromSrcCoord(1));184 EXPECT_EQ(0, T ilingData(3, 3, 3, false).tileXIndexFromSrcCoord(0));185 EXPECT_EQ(0, T ilingData(3, 3, 3, false).tileXIndexFromSrcCoord(1));186 EXPECT_EQ(0, T ilingData(3, 3, 3, false).tileXIndexFromSrcCoord(2));187 188 EXPECT_EQ(0, T ilingData(3, 4, 3, false).tileXIndexFromSrcCoord(0));189 EXPECT_EQ(0, T ilingData(3, 4, 3, false).tileXIndexFromSrcCoord(1));190 EXPECT_EQ(0, T ilingData(3, 4, 3, false).tileXIndexFromSrcCoord(2));191 EXPECT_EQ(1, T ilingData(3, 4, 3, false).tileXIndexFromSrcCoord(3));192 193 EXPECT_EQ(0, T ilingData(1, 1, 1, true).tileXIndexFromSrcCoord(0));194 EXPECT_EQ(0, T ilingData(2, 2, 2, true).tileXIndexFromSrcCoord(0));195 EXPECT_EQ(0, T ilingData(2, 2, 2, true).tileXIndexFromSrcCoord(1));196 EXPECT_EQ(0, T ilingData(3, 3, 3, true).tileXIndexFromSrcCoord(0));197 EXPECT_EQ(0, T ilingData(3, 3, 3, true).tileXIndexFromSrcCoord(1));198 EXPECT_EQ(0, T ilingData(3, 3, 3, true).tileXIndexFromSrcCoord(2));199 200 EXPECT_EQ(0, T ilingData(3, 4, 3, true).tileXIndexFromSrcCoord(0));201 EXPECT_EQ(0, T ilingData(3, 4, 3, true).tileXIndexFromSrcCoord(1));202 EXPECT_EQ(1, T ilingData(3, 4, 3, true).tileXIndexFromSrcCoord(2));203 EXPECT_EQ(1, T ilingData(3, 4, 3, true).tileXIndexFromSrcCoord(3));176 EXPECT_EQ(0, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(0)); 177 EXPECT_EQ(0, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(1)); 178 EXPECT_EQ(0, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(2)); 179 EXPECT_EQ(1, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(3)); 180 EXPECT_EQ(1, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(4)); 181 EXPECT_EQ(1, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(5)); 182 EXPECT_EQ(2, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(6)); 183 EXPECT_EQ(2, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(7)); 184 EXPECT_EQ(2, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(8)); 185 EXPECT_EQ(3, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(9)); 186 EXPECT_EQ(3, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(10)); 187 EXPECT_EQ(3, TestTiling(3, 10, 10, false).tileXIndexFromSrcCoord(11)); 188 189 EXPECT_EQ(0, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(0)); 190 EXPECT_EQ(0, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(1)); 191 EXPECT_EQ(1, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(2)); 192 EXPECT_EQ(2, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(3)); 193 EXPECT_EQ(3, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(4)); 194 EXPECT_EQ(4, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(5)); 195 EXPECT_EQ(5, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(6)); 196 EXPECT_EQ(6, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(7)); 197 EXPECT_EQ(7, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(8)); 198 EXPECT_EQ(7, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(9)); 199 EXPECT_EQ(7, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(10)); 200 EXPECT_EQ(7, TestTiling(3, 10, 10, true).tileXIndexFromSrcCoord(11)); 201 202 EXPECT_EQ(0, TestTiling(1, 1, 1, false).tileXIndexFromSrcCoord(0)); 203 EXPECT_EQ(0, TestTiling(2, 2, 2, false).tileXIndexFromSrcCoord(0)); 204 EXPECT_EQ(0, TestTiling(2, 2, 2, false).tileXIndexFromSrcCoord(1)); 205 EXPECT_EQ(0, TestTiling(3, 3, 3, false).tileXIndexFromSrcCoord(0)); 206 EXPECT_EQ(0, TestTiling(3, 3, 3, false).tileXIndexFromSrcCoord(1)); 207 EXPECT_EQ(0, TestTiling(3, 3, 3, false).tileXIndexFromSrcCoord(2)); 208 209 EXPECT_EQ(0, TestTiling(3, 4, 3, false).tileXIndexFromSrcCoord(0)); 210 EXPECT_EQ(0, TestTiling(3, 4, 3, false).tileXIndexFromSrcCoord(1)); 211 EXPECT_EQ(0, TestTiling(3, 4, 3, false).tileXIndexFromSrcCoord(2)); 212 EXPECT_EQ(1, TestTiling(3, 4, 3, false).tileXIndexFromSrcCoord(3)); 213 214 EXPECT_EQ(0, TestTiling(1, 1, 1, true).tileXIndexFromSrcCoord(0)); 215 EXPECT_EQ(0, TestTiling(2, 2, 2, true).tileXIndexFromSrcCoord(0)); 216 EXPECT_EQ(0, TestTiling(2, 2, 2, true).tileXIndexFromSrcCoord(1)); 217 EXPECT_EQ(0, TestTiling(3, 3, 3, true).tileXIndexFromSrcCoord(0)); 218 EXPECT_EQ(0, TestTiling(3, 3, 3, true).tileXIndexFromSrcCoord(1)); 219 EXPECT_EQ(0, TestTiling(3, 3, 3, true).tileXIndexFromSrcCoord(2)); 220 221 EXPECT_EQ(0, TestTiling(3, 4, 3, true).tileXIndexFromSrcCoord(0)); 222 EXPECT_EQ(0, TestTiling(3, 4, 3, true).tileXIndexFromSrcCoord(1)); 223 EXPECT_EQ(1, TestTiling(3, 4, 3, true).tileXIndexFromSrcCoord(2)); 224 EXPECT_EQ(1, TestTiling(3, 4, 3, true).tileXIndexFromSrcCoord(3)); 204 225 } 205 226 TEST(TilingDataTest, tileYIndexFromSrcCoord) 206 227 { 207 EXPECT_EQ(0, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(0));208 EXPECT_EQ(0, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(1));209 EXPECT_EQ(0, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(2));210 EXPECT_EQ(1, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(3));211 EXPECT_EQ(1, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(4));212 EXPECT_EQ(1, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(5));213 EXPECT_EQ(2, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(6));214 EXPECT_EQ(2, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(7));215 EXPECT_EQ(2, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(8));216 EXPECT_EQ(3, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(9));217 EXPECT_EQ(3, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(10));218 EXPECT_EQ(3, T ilingData(3, 10, 10, false).tileYIndexFromSrcCoord(11));219 220 EXPECT_EQ(0, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(0));221 EXPECT_EQ(0, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(1));222 EXPECT_EQ(1, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(2));223 EXPECT_EQ(2, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(3));224 EXPECT_EQ(3, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(4));225 EXPECT_EQ(4, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(5));226 EXPECT_EQ(5, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(6));227 EXPECT_EQ(6, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(7));228 EXPECT_EQ(7, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(8));229 EXPECT_EQ(7, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(9));230 EXPECT_EQ(7, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(10));231 EXPECT_EQ(7, T ilingData(3, 10, 10, true).tileYIndexFromSrcCoord(11));232 233 EXPECT_EQ(0, T ilingData(1, 1, 1, false).tileYIndexFromSrcCoord(0));234 EXPECT_EQ(0, T ilingData(2, 2, 2, false).tileYIndexFromSrcCoord(0));235 EXPECT_EQ(0, T ilingData(2, 2, 2, false).tileYIndexFromSrcCoord(1));236 EXPECT_EQ(0, T ilingData(3, 3, 3, false).tileYIndexFromSrcCoord(0));237 EXPECT_EQ(0, T ilingData(3, 3, 3, false).tileYIndexFromSrcCoord(1));238 EXPECT_EQ(0, T ilingData(3, 3, 3, false).tileYIndexFromSrcCoord(2));239 240 EXPECT_EQ(0, T ilingData(3, 3, 4, false).tileYIndexFromSrcCoord(0));241 EXPECT_EQ(0, T ilingData(3, 3, 4, false).tileYIndexFromSrcCoord(1));242 EXPECT_EQ(0, T ilingData(3, 3, 4, false).tileYIndexFromSrcCoord(2));243 EXPECT_EQ(1, T ilingData(3, 3, 4, false).tileYIndexFromSrcCoord(3));244 245 EXPECT_EQ(0, T ilingData(1, 1, 1, true).tileYIndexFromSrcCoord(0));246 EXPECT_EQ(0, T ilingData(2, 2, 2, true).tileYIndexFromSrcCoord(0));247 EXPECT_EQ(0, T ilingData(2, 2, 2, true).tileYIndexFromSrcCoord(1));248 EXPECT_EQ(0, T ilingData(3, 3, 3, true).tileYIndexFromSrcCoord(0));249 EXPECT_EQ(0, T ilingData(3, 3, 3, true).tileYIndexFromSrcCoord(1));250 EXPECT_EQ(0, T ilingData(3, 3, 3, true).tileYIndexFromSrcCoord(2));251 252 EXPECT_EQ(0, T ilingData(3, 3, 4, true).tileYIndexFromSrcCoord(0));253 EXPECT_EQ(0, T ilingData(3, 3, 4, true).tileYIndexFromSrcCoord(1));254 EXPECT_EQ(1, T ilingData(3, 3, 4, true).tileYIndexFromSrcCoord(2));255 EXPECT_EQ(1, T ilingData(3, 3, 4, true).tileYIndexFromSrcCoord(3));228 EXPECT_EQ(0, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(0)); 229 EXPECT_EQ(0, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(1)); 230 EXPECT_EQ(0, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(2)); 231 EXPECT_EQ(1, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(3)); 232 EXPECT_EQ(1, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(4)); 233 EXPECT_EQ(1, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(5)); 234 EXPECT_EQ(2, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(6)); 235 EXPECT_EQ(2, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(7)); 236 EXPECT_EQ(2, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(8)); 237 EXPECT_EQ(3, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(9)); 238 EXPECT_EQ(3, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(10)); 239 EXPECT_EQ(3, TestTiling(3, 10, 10, false).tileYIndexFromSrcCoord(11)); 240 241 EXPECT_EQ(0, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(0)); 242 EXPECT_EQ(0, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(1)); 243 EXPECT_EQ(1, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(2)); 244 EXPECT_EQ(2, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(3)); 245 EXPECT_EQ(3, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(4)); 246 EXPECT_EQ(4, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(5)); 247 EXPECT_EQ(5, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(6)); 248 EXPECT_EQ(6, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(7)); 249 EXPECT_EQ(7, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(8)); 250 EXPECT_EQ(7, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(9)); 251 EXPECT_EQ(7, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(10)); 252 EXPECT_EQ(7, TestTiling(3, 10, 10, true).tileYIndexFromSrcCoord(11)); 253 254 EXPECT_EQ(0, TestTiling(1, 1, 1, false).tileYIndexFromSrcCoord(0)); 255 EXPECT_EQ(0, TestTiling(2, 2, 2, false).tileYIndexFromSrcCoord(0)); 256 EXPECT_EQ(0, TestTiling(2, 2, 2, false).tileYIndexFromSrcCoord(1)); 257 EXPECT_EQ(0, TestTiling(3, 3, 3, false).tileYIndexFromSrcCoord(0)); 258 EXPECT_EQ(0, TestTiling(3, 3, 3, false).tileYIndexFromSrcCoord(1)); 259 EXPECT_EQ(0, TestTiling(3, 3, 3, false).tileYIndexFromSrcCoord(2)); 260 261 EXPECT_EQ(0, TestTiling(3, 3, 4, false).tileYIndexFromSrcCoord(0)); 262 EXPECT_EQ(0, TestTiling(3, 3, 4, false).tileYIndexFromSrcCoord(1)); 263 EXPECT_EQ(0, TestTiling(3, 3, 4, false).tileYIndexFromSrcCoord(2)); 264 EXPECT_EQ(1, TestTiling(3, 3, 4, false).tileYIndexFromSrcCoord(3)); 265 266 EXPECT_EQ(0, TestTiling(1, 1, 1, true).tileYIndexFromSrcCoord(0)); 267 EXPECT_EQ(0, TestTiling(2, 2, 2, true).tileYIndexFromSrcCoord(0)); 268 EXPECT_EQ(0, TestTiling(2, 2, 2, true).tileYIndexFromSrcCoord(1)); 269 EXPECT_EQ(0, TestTiling(3, 3, 3, true).tileYIndexFromSrcCoord(0)); 270 EXPECT_EQ(0, TestTiling(3, 3, 3, true).tileYIndexFromSrcCoord(1)); 271 EXPECT_EQ(0, TestTiling(3, 3, 3, true).tileYIndexFromSrcCoord(2)); 272 273 EXPECT_EQ(0, TestTiling(3, 3, 4, true).tileYIndexFromSrcCoord(0)); 274 EXPECT_EQ(0, TestTiling(3, 3, 4, true).tileYIndexFromSrcCoord(1)); 275 EXPECT_EQ(1, TestTiling(3, 3, 4, true).tileYIndexFromSrcCoord(2)); 276 EXPECT_EQ(1, TestTiling(3, 3, 4, true).tileYIndexFromSrcCoord(3)); 256 277 } 257 278 258 279 TEST(TilingDataTest, tileSizeX) 259 280 { 260 EXPECT_EQ(5, T ilingData(5, 5, 5, false).tileSizeX(0));261 EXPECT_EQ(5, T ilingData(5, 5, 5, true).tileSizeX(0));262 263 EXPECT_EQ(5, T ilingData(5, 6, 6, false).tileSizeX(0));264 EXPECT_EQ(1, T ilingData(5, 6, 6, false).tileSizeX(1));265 EXPECT_EQ(4, T ilingData(5, 6, 6, true).tileSizeX(0));266 EXPECT_EQ(2, T ilingData(5, 6, 6, true).tileSizeX(1));267 268 EXPECT_EQ(5, T ilingData(5, 8, 8, false).tileSizeX(0));269 EXPECT_EQ(3, T ilingData(5, 8, 8, false).tileSizeX(1));270 EXPECT_EQ(4, T ilingData(5, 8, 8, true).tileSizeX(0));271 EXPECT_EQ(4, T ilingData(5, 8, 8, true).tileSizeX(1));272 273 EXPECT_EQ(5, T ilingData(5, 10, 10, false).tileSizeX(0));274 EXPECT_EQ(5, T ilingData(5, 10, 10, false).tileSizeX(1));275 EXPECT_EQ(4, T ilingData(5, 10, 10, true).tileSizeX(0));276 EXPECT_EQ(3, T ilingData(5, 10, 10, true).tileSizeX(1));277 EXPECT_EQ(3, T ilingData(5, 10, 10, true).tileSizeX(2));278 279 EXPECT_EQ(4, T ilingData(5, 11, 11, true).tileSizeX(2));280 EXPECT_EQ(3, T ilingData(5, 12, 12, true).tileSizeX(2));281 EXPECT_EQ(5, TestTiling(5, 5, 5, false).tileSizeX(0)); 282 EXPECT_EQ(5, TestTiling(5, 5, 5, true).tileSizeX(0)); 283 284 EXPECT_EQ(5, TestTiling(5, 6, 6, false).tileSizeX(0)); 285 EXPECT_EQ(1, TestTiling(5, 6, 6, false).tileSizeX(1)); 286 EXPECT_EQ(4, TestTiling(5, 6, 6, true).tileSizeX(0)); 287 EXPECT_EQ(2, TestTiling(5, 6, 6, true).tileSizeX(1)); 288 289 EXPECT_EQ(5, TestTiling(5, 8, 8, false).tileSizeX(0)); 290 EXPECT_EQ(3, TestTiling(5, 8, 8, false).tileSizeX(1)); 291 EXPECT_EQ(4, TestTiling(5, 8, 8, true).tileSizeX(0)); 292 EXPECT_EQ(4, TestTiling(5, 8, 8, true).tileSizeX(1)); 293 294 EXPECT_EQ(5, TestTiling(5, 10, 10, false).tileSizeX(0)); 295 EXPECT_EQ(5, TestTiling(5, 10, 10, false).tileSizeX(1)); 296 EXPECT_EQ(4, TestTiling(5, 10, 10, true).tileSizeX(0)); 297 EXPECT_EQ(3, TestTiling(5, 10, 10, true).tileSizeX(1)); 298 EXPECT_EQ(3, TestTiling(5, 10, 10, true).tileSizeX(2)); 299 300 EXPECT_EQ(4, TestTiling(5, 11, 11, true).tileSizeX(2)); 301 EXPECT_EQ(3, TestTiling(5, 12, 12, true).tileSizeX(2)); 281 302 } 282 303 TEST(TilingDataTest, tileSizeY) 283 304 { 284 EXPECT_EQ(5, T ilingData(5, 5, 5, false).tileSizeY(0));285 EXPECT_EQ(5, T ilingData(5, 5, 5, true).tileSizeY(0));286 287 EXPECT_EQ(5, T ilingData(5, 6, 6, false).tileSizeY(0));288 EXPECT_EQ(1, T ilingData(5, 6, 6, false).tileSizeY(1));289 EXPECT_EQ(4, T ilingData(5, 6, 6, true).tileSizeY(0));290 EXPECT_EQ(2, T ilingData(5, 6, 6, true).tileSizeY(1));291 292 EXPECT_EQ(5, T ilingData(5, 8, 8, false).tileSizeY(0));293 EXPECT_EQ(3, T ilingData(5, 8, 8, false).tileSizeY(1));294 EXPECT_EQ(4, T ilingData(5, 8, 8, true).tileSizeY(0));295 EXPECT_EQ(4, T ilingData(5, 8, 8, true).tileSizeY(1));296 297 EXPECT_EQ(5, T ilingData(5, 10, 10, false).tileSizeY(0));298 EXPECT_EQ(5, T ilingData(5, 10, 10, false).tileSizeY(1));299 EXPECT_EQ(4, T ilingData(5, 10, 10, true).tileSizeY(0));300 EXPECT_EQ(3, T ilingData(5, 10, 10, true).tileSizeY(1));301 EXPECT_EQ(3, T ilingData(5, 10, 10, true).tileSizeY(2));302 303 EXPECT_EQ(4, T ilingData(5, 11, 11, true).tileSizeY(2));304 EXPECT_EQ(3, T ilingData(5, 12, 12, true).tileSizeY(2));305 EXPECT_EQ(5, TestTiling(5, 5, 5, false).tileSizeY(0)); 306 EXPECT_EQ(5, TestTiling(5, 5, 5, true).tileSizeY(0)); 307 308 EXPECT_EQ(5, TestTiling(5, 6, 6, false).tileSizeY(0)); 309 EXPECT_EQ(1, TestTiling(5, 6, 6, false).tileSizeY(1)); 310 EXPECT_EQ(4, TestTiling(5, 6, 6, true).tileSizeY(0)); 311 EXPECT_EQ(2, TestTiling(5, 6, 6, true).tileSizeY(1)); 312 313 EXPECT_EQ(5, TestTiling(5, 8, 8, false).tileSizeY(0)); 314 EXPECT_EQ(3, TestTiling(5, 8, 8, false).tileSizeY(1)); 315 EXPECT_EQ(4, TestTiling(5, 8, 8, true).tileSizeY(0)); 316 EXPECT_EQ(4, TestTiling(5, 8, 8, true).tileSizeY(1)); 317 318 EXPECT_EQ(5, TestTiling(5, 10, 10, false).tileSizeY(0)); 319 EXPECT_EQ(5, TestTiling(5, 10, 10, false).tileSizeY(1)); 320 EXPECT_EQ(4, TestTiling(5, 10, 10, true).tileSizeY(0)); 321 EXPECT_EQ(3, TestTiling(5, 10, 10, true).tileSizeY(1)); 322 EXPECT_EQ(3, TestTiling(5, 10, 10, true).tileSizeY(2)); 323 324 EXPECT_EQ(4, TestTiling(5, 11, 11, true).tileSizeY(2)); 325 EXPECT_EQ(3, TestTiling(5, 12, 12, true).tileSizeY(2)); 305 326 } 306 327 … … 308 329 { 309 330 // Single tile cases: 310 EXPECT_EQ(1, T ilingData(3, 1, 1, false).tileSizeX(0));311 EXPECT_EQ(0, T ilingData(3, 1, 1, false).tilePositionX(0));312 EXPECT_EQ(1, T ilingData(3, 1, 100, false).tileSizeX(0));313 EXPECT_EQ(0, T ilingData(3, 1, 100, false).tilePositionX(0));314 EXPECT_EQ(3, T ilingData(3, 3, 1, false).tileSizeX(0));315 EXPECT_EQ(0, T ilingData(3, 3, 1, false).tilePositionX(0));316 EXPECT_EQ(3, T ilingData(3, 3, 100, false).tileSizeX(0));317 EXPECT_EQ(0, T ilingData(3, 3, 100, false).tilePositionX(0));318 EXPECT_EQ(1, T ilingData(3, 1, 1, true).tileSizeX(0));319 EXPECT_EQ(0, T ilingData(3, 1, 1, true).tilePositionX(0));320 EXPECT_EQ(1, T ilingData(3, 1, 100, true).tileSizeX(0));321 EXPECT_EQ(0, T ilingData(3, 1, 100, true).tilePositionX(0));322 EXPECT_EQ(3, T ilingData(3, 3, 1, true).tileSizeX(0));323 EXPECT_EQ(0, T ilingData(3, 3, 1, true).tilePositionX(0));324 EXPECT_EQ(3, T ilingData(3, 3, 100, true).tileSizeX(0));325 EXPECT_EQ(0, T ilingData(3, 3, 100, true).tilePositionX(0));331 EXPECT_EQ(1, TestTiling(3, 1, 1, false).tileSizeX(0)); 332 EXPECT_EQ(0, TestTiling(3, 1, 1, false).tilePositionX(0)); 333 EXPECT_EQ(1, TestTiling(3, 1, 100, false).tileSizeX(0)); 334 EXPECT_EQ(0, TestTiling(3, 1, 100, false).tilePositionX(0)); 335 EXPECT_EQ(3, TestTiling(3, 3, 1, false).tileSizeX(0)); 336 EXPECT_EQ(0, TestTiling(3, 3, 1, false).tilePositionX(0)); 337 EXPECT_EQ(3, TestTiling(3, 3, 100, false).tileSizeX(0)); 338 EXPECT_EQ(0, TestTiling(3, 3, 100, false).tilePositionX(0)); 339 EXPECT_EQ(1, TestTiling(3, 1, 1, true).tileSizeX(0)); 340 EXPECT_EQ(0, TestTiling(3, 1, 1, true).tilePositionX(0)); 341 EXPECT_EQ(1, TestTiling(3, 1, 100, true).tileSizeX(0)); 342 EXPECT_EQ(0, TestTiling(3, 1, 100, true).tilePositionX(0)); 343 EXPECT_EQ(3, TestTiling(3, 3, 1, true).tileSizeX(0)); 344 EXPECT_EQ(0, TestTiling(3, 3, 1, true).tilePositionX(0)); 345 EXPECT_EQ(3, TestTiling(3, 3, 100, true).tileSizeX(0)); 346 EXPECT_EQ(0, TestTiling(3, 3, 100, true).tilePositionX(0)); 326 347 327 348 // Multiple tiles: 328 349 // no border 329 350 // positions 0, 3 330 EXPECT_EQ(2, T ilingData(3, 6, 1, false).numTiles());331 EXPECT_EQ(3, T ilingData(3, 6, 1, false).tileSizeX(0));332 EXPECT_EQ(3, T ilingData(3, 6, 1, false).tileSizeX(1));333 EXPECT_EQ(0, T ilingData(3, 6, 1, false).tilePositionX(0));334 EXPECT_EQ(3, T ilingData(3, 6, 1, false).tilePositionX(1));335 EXPECT_EQ(3, T ilingData(3, 6, 100, false).tileSizeX(0));336 EXPECT_EQ(3, T ilingData(3, 6, 100, false).tileSizeX(1));337 EXPECT_EQ(0, T ilingData(3, 6, 100, false).tilePositionX(0));338 EXPECT_EQ(3, T ilingData(3, 6, 100, false).tilePositionX(1));351 EXPECT_EQ(2, TestTiling(3, 6, 1, false).numTiles()); 352 EXPECT_EQ(3, TestTiling(3, 6, 1, false).tileSizeX(0)); 353 EXPECT_EQ(3, TestTiling(3, 6, 1, false).tileSizeX(1)); 354 EXPECT_EQ(0, TestTiling(3, 6, 1, false).tilePositionX(0)); 355 EXPECT_EQ(3, TestTiling(3, 6, 1, false).tilePositionX(1)); 356 EXPECT_EQ(3, TestTiling(3, 6, 100, false).tileSizeX(0)); 357 EXPECT_EQ(3, TestTiling(3, 6, 100, false).tileSizeX(1)); 358 EXPECT_EQ(0, TestTiling(3, 6, 100, false).tilePositionX(0)); 359 EXPECT_EQ(3, TestTiling(3, 6, 100, false).tilePositionX(1)); 339 360 340 361 // Multiple tiles: 341 362 // with border 342 363 // positions 0, 2, 3, 4 343 EXPECT_EQ(4, T ilingData(3, 6, 1, true).numTiles());344 EXPECT_EQ(2, T ilingData(3, 6, 1, true).tileSizeX(0));345 EXPECT_EQ(1, T ilingData(3, 6, 1, true).tileSizeX(1));346 EXPECT_EQ(1, T ilingData(3, 6, 1, true).tileSizeX(2));347 EXPECT_EQ(2, T ilingData(3, 6, 1, true).tileSizeX(3));348 EXPECT_EQ(0, T ilingData(3, 6, 1, true).tilePositionX(0));349 EXPECT_EQ(2, T ilingData(3, 6, 1, true).tilePositionX(1));350 EXPECT_EQ(3, T ilingData(3, 6, 1, true).tilePositionX(2));351 EXPECT_EQ(4, T ilingData(3, 6, 1, true).tilePositionX(3));352 EXPECT_EQ(2, T ilingData(3, 6, 100, true).tileSizeX(0));353 EXPECT_EQ(1, T ilingData(3, 6, 100, true).tileSizeX(1));354 EXPECT_EQ(1, T ilingData(3, 6, 100, true).tileSizeX(2));355 EXPECT_EQ(2, T ilingData(3, 6, 100, true).tileSizeX(3));356 EXPECT_EQ(0, T ilingData(3, 6, 100, true).tilePositionX(0));357 EXPECT_EQ(2, T ilingData(3, 6, 100, true).tilePositionX(1));358 EXPECT_EQ(3, T ilingData(3, 6, 100, true).tilePositionX(2));359 EXPECT_EQ(4, T ilingData(3, 6, 100, true).tilePositionX(3));364 EXPECT_EQ(4, TestTiling(3, 6, 1, true).numTiles()); 365 EXPECT_EQ(2, TestTiling(3, 6, 1, true).tileSizeX(0)); 366 EXPECT_EQ(1, TestTiling(3, 6, 1, true).tileSizeX(1)); 367 EXPECT_EQ(1, TestTiling(3, 6, 1, true).tileSizeX(2)); 368 EXPECT_EQ(2, TestTiling(3, 6, 1, true).tileSizeX(3)); 369 EXPECT_EQ(0, TestTiling(3, 6, 1, true).tilePositionX(0)); 370 EXPECT_EQ(2, TestTiling(3, 6, 1, true).tilePositionX(1)); 371 EXPECT_EQ(3, TestTiling(3, 6, 1, true).tilePositionX(2)); 372 EXPECT_EQ(4, TestTiling(3, 6, 1, true).tilePositionX(3)); 373 EXPECT_EQ(2, TestTiling(3, 6, 100, true).tileSizeX(0)); 374 EXPECT_EQ(1, TestTiling(3, 6, 100, true).tileSizeX(1)); 375 EXPECT_EQ(1, TestTiling(3, 6, 100, true).tileSizeX(2)); 376 EXPECT_EQ(2, TestTiling(3, 6, 100, true).tileSizeX(3)); 377 EXPECT_EQ(0, TestTiling(3, 6, 100, true).tilePositionX(0)); 378 EXPECT_EQ(2, TestTiling(3, 6, 100, true).tilePositionX(1)); 379 EXPECT_EQ(3, TestTiling(3, 6, 100, true).tilePositionX(2)); 380 EXPECT_EQ(4, TestTiling(3, 6, 100, true).tilePositionX(3)); 360 381 } 361 382 … … 363 384 { 364 385 // Single tile cases: 365 EXPECT_EQ(1, T ilingData(3, 1, 1, false).tileSizeY(0));366 EXPECT_EQ(0, T ilingData(3, 1, 1, false).tilePositionY(0));367 EXPECT_EQ(1, T ilingData(3, 100, 1, false).tileSizeY(0));368 EXPECT_EQ(0, T ilingData(3, 100, 1, false).tilePositionY(0));369 EXPECT_EQ(3, T ilingData(3, 1, 3, false).tileSizeY(0));370 EXPECT_EQ(0, T ilingData(3, 1, 3, false).tilePositionY(0));371 EXPECT_EQ(3, T ilingData(3, 100, 3, false).tileSizeY(0));372 EXPECT_EQ(0, T ilingData(3, 100, 3, false).tilePositionY(0));373 EXPECT_EQ(1, T ilingData(3, 1, 1, true).tileSizeY(0));374 EXPECT_EQ(0, T ilingData(3, 1, 1, true).tilePositionY(0));375 EXPECT_EQ(1, T ilingData(3, 100, 1, true).tileSizeY(0));376 EXPECT_EQ(0, T ilingData(3, 100, 1, true).tilePositionY(0));377 EXPECT_EQ(3, T ilingData(3, 1, 3, true).tileSizeY(0));378 EXPECT_EQ(0, T ilingData(3, 1, 3, true).tilePositionY(0));379 EXPECT_EQ(3, T ilingData(3, 100, 3, true).tileSizeY(0));380 EXPECT_EQ(0, T ilingData(3, 100, 3, true).tilePositionY(0));386 EXPECT_EQ(1, TestTiling(3, 1, 1, false).tileSizeY(0)); 387 EXPECT_EQ(0, TestTiling(3, 1, 1, false).tilePositionY(0)); 388 EXPECT_EQ(1, TestTiling(3, 100, 1, false).tileSizeY(0)); 389 EXPECT_EQ(0, TestTiling(3, 100, 1, false).tilePositionY(0)); 390 EXPECT_EQ(3, TestTiling(3, 1, 3, false).tileSizeY(0)); 391 EXPECT_EQ(0, TestTiling(3, 1, 3, false).tilePositionY(0)); 392 EXPECT_EQ(3, TestTiling(3, 100, 3, false).tileSizeY(0)); 393 EXPECT_EQ(0, TestTiling(3, 100, 3, false).tilePositionY(0)); 394 EXPECT_EQ(1, TestTiling(3, 1, 1, true).tileSizeY(0)); 395 EXPECT_EQ(0, TestTiling(3, 1, 1, true).tilePositionY(0)); 396 EXPECT_EQ(1, TestTiling(3, 100, 1, true).tileSizeY(0)); 397 EXPECT_EQ(0, TestTiling(3, 100, 1, true).tilePositionY(0)); 398 EXPECT_EQ(3, TestTiling(3, 1, 3, true).tileSizeY(0)); 399 EXPECT_EQ(0, TestTiling(3, 1, 3, true).tilePositionY(0)); 400 EXPECT_EQ(3, TestTiling(3, 100, 3, true).tileSizeY(0)); 401 EXPECT_EQ(0, TestTiling(3, 100, 3, true).tilePositionY(0)); 381 402 382 403 // Multiple tiles: 383 404 // no border 384 405 // positions 0, 3 385 EXPECT_EQ(2, T ilingData(3, 1, 6, false).numTiles());386 EXPECT_EQ(3, T ilingData(3, 1, 6, false).tileSizeY(0));387 EXPECT_EQ(3, T ilingData(3, 1, 6, false).tileSizeY(1));388 EXPECT_EQ(0, T ilingData(3, 1, 6, false).tilePositionY(0));389 EXPECT_EQ(3, T ilingData(3, 1, 6, false).tilePositionY(1));390 EXPECT_EQ(3, T ilingData(3, 100, 6, false).tileSizeY(0));391 EXPECT_EQ(3, T ilingData(3, 100, 6, false).tileSizeY(1));392 EXPECT_EQ(0, T ilingData(3, 100, 6, false).tilePositionY(0));393 EXPECT_EQ(3, T ilingData(3, 100, 6, false).tilePositionY(1));406 EXPECT_EQ(2, TestTiling(3, 1, 6, false).numTiles()); 407 EXPECT_EQ(3, TestTiling(3, 1, 6, false).tileSizeY(0)); 408 EXPECT_EQ(3, TestTiling(3, 1, 6, false).tileSizeY(1)); 409 EXPECT_EQ(0, TestTiling(3, 1, 6, false).tilePositionY(0)); 410 EXPECT_EQ(3, TestTiling(3, 1, 6, false).tilePositionY(1)); 411 EXPECT_EQ(3, TestTiling(3, 100, 6, false).tileSizeY(0)); 412 EXPECT_EQ(3, TestTiling(3, 100, 6, false).tileSizeY(1)); 413 EXPECT_EQ(0, TestTiling(3, 100, 6, false).tilePositionY(0)); 414 EXPECT_EQ(3, TestTiling(3, 100, 6, false).tilePositionY(1)); 394 415 395 416 // Multiple tiles: 396 417 // with border 397 418 // positions 0, 2, 3, 4 398 EXPECT_EQ(4, T ilingData(3, 1, 6, true).numTiles());399 EXPECT_EQ(2, T ilingData(3, 1, 6, true).tileSizeY(0));400 EXPECT_EQ(1, T ilingData(3, 1, 6, true).tileSizeY(1));401 EXPECT_EQ(1, T ilingData(3, 1, 6, true).tileSizeY(2));402 EXPECT_EQ(2, T ilingData(3, 1, 6, true).tileSizeY(3));403 EXPECT_EQ(0, T ilingData(3, 1, 6, true).tilePositionY(0));404 EXPECT_EQ(2, T ilingData(3, 1, 6, true).tilePositionY(1));405 EXPECT_EQ(3, T ilingData(3, 1, 6, true).tilePositionY(2));406 EXPECT_EQ(4, T ilingData(3, 1, 6, true).tilePositionY(3));407 EXPECT_EQ(2, T ilingData(3, 100, 6, true).tileSizeY(0));408 EXPECT_EQ(1, T ilingData(3, 100, 6, true).tileSizeY(1));409 EXPECT_EQ(1, T ilingData(3, 100, 6, true).tileSizeY(2));410 EXPECT_EQ(2, T ilingData(3, 100, 6, true).tileSizeY(3));411 EXPECT_EQ(0, T ilingData(3, 100, 6, true).tilePositionY(0));412 EXPECT_EQ(2, T ilingData(3, 100, 6, true).tilePositionY(1));413 EXPECT_EQ(3, T ilingData(3, 100, 6, true).tilePositionY(2));414 EXPECT_EQ(4, T ilingData(3, 100, 6, true).tilePositionY(3));419 EXPECT_EQ(4, TestTiling(3, 1, 6, true).numTiles()); 420 EXPECT_EQ(2, TestTiling(3, 1, 6, true).tileSizeY(0)); 421 EXPECT_EQ(1, TestTiling(3, 1, 6, true).tileSizeY(1)); 422 EXPECT_EQ(1, TestTiling(3, 1, 6, true).tileSizeY(2)); 423 EXPECT_EQ(2, TestTiling(3, 1, 6, true).tileSizeY(3)); 424 EXPECT_EQ(0, TestTiling(3, 1, 6, true).tilePositionY(0)); 425 EXPECT_EQ(2, TestTiling(3, 1, 6, true).tilePositionY(1)); 426 EXPECT_EQ(3, TestTiling(3, 1, 6, true).tilePositionY(2)); 427 EXPECT_EQ(4, TestTiling(3, 1, 6, true).tilePositionY(3)); 428 EXPECT_EQ(2, TestTiling(3, 100, 6, true).tileSizeY(0)); 429 EXPECT_EQ(1, TestTiling(3, 100, 6, true).tileSizeY(1)); 430 EXPECT_EQ(1, TestTiling(3, 100, 6, true).tileSizeY(2)); 431 EXPECT_EQ(2, TestTiling(3, 100, 6, true).tileSizeY(3)); 432 EXPECT_EQ(0, TestTiling(3, 100, 6, true).tilePositionY(0)); 433 EXPECT_EQ(2, TestTiling(3, 100, 6, true).tilePositionY(1)); 434 EXPECT_EQ(3, TestTiling(3, 100, 6, true).tilePositionY(2)); 435 EXPECT_EQ(4, TestTiling(3, 100, 6, true).tilePositionY(3)); 415 436 } 416 437 417 438 TEST(TilingDataTest, setTotalSize) 418 439 { 419 T ilingDatadata(5, 5, 5, false);440 TestTiling data(5, 5, 5, false); 420 441 EXPECT_EQ(5, data.totalSizeX()); 421 442 EXPECT_EQ(5, data.totalSizeY()); … … 447 468 TEST(TilingDataTest, setMaxTextureSizeNoBorders) 448 469 { 449 T ilingDatadata(8, 16, 32, false);470 TestTiling data(8, 16, 32, false); 450 471 EXPECT_EQ(2, data.numTilesX()); 451 472 EXPECT_EQ(4, data.numTilesY()); … … 469 490 TEST(TilingDataTest, setMaxTextureSizeBorders) 470 491 { 471 T ilingDatadata(8, 16, 32, true);492 TestTiling data(8, 16, 32, true); 472 493 EXPECT_EQ(3, data.numTilesX()); 473 494 EXPECT_EQ(5, data.numTilesY()); … … 492 513 { 493 514 { 494 T ilingDatasource(8, 16, 32, true);495 T ilingDatadest = source;515 TestTiling source(8, 16, 32, true); 516 TestTiling dest = source; 496 517 EXPECT_EQ(source.borderTexels(), dest.borderTexels()); 497 518 EXPECT_EQ(source.maxTextureSize(), dest.maxTextureSize()); … … 502 523 } 503 524 { 504 T ilingDatasource(3, 6, 100, false);505 T ilingDatadest(source);525 TestTiling source(3, 6, 100, false); 526 TestTiling dest(source); 506 527 EXPECT_EQ(source.borderTexels(), dest.borderTexels()); 507 528 EXPECT_EQ(source.maxTextureSize(), dest.maxTextureSize()); … … 515 536 TEST(TilingDataTest, setBorderTexels) 516 537 { 517 T ilingDatadata(8, 16, 32, false);538 TestTiling data(8, 16, 32, false); 518 539 EXPECT_EQ(2, data.numTilesX()); 519 540 EXPECT_EQ(4, data.numTilesY());
Note: See TracChangeset
for help on using the changeset viewer.