2013-02-23 01:25:58 +04:00
|
|
|
/* vim:set ts=2 sw=2 sts=2 et: */
|
|
|
|
/* Any copyright is dedicated to the Public Domain.
|
|
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "TiledLayerBuffer.h"
|
|
|
|
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
|
|
|
|
namespace mozilla {
|
|
|
|
namespace layers {
|
|
|
|
|
|
|
|
TEST(TiledLayerBuffer, TileStart) {
|
2015-07-01 14:50:58 +03:00
|
|
|
ASSERT_EQ(RoundDownToTileEdge(10, 256), 0);
|
|
|
|
ASSERT_EQ(RoundDownToTileEdge(-10, 256), -256);
|
2013-02-23 01:25:58 +04:00
|
|
|
}
|
|
|
|
|
2015-07-01 14:50:58 +03:00
|
|
|
TEST(TiledLayerBuffer, TilesPlacement) {
|
|
|
|
for (int firstY = -10; firstY < 10; ++firstY) {
|
|
|
|
for (int firstX = -10; firstX < 10; ++firstX) {
|
|
|
|
for (int height = 1; height < 10; ++height) {
|
|
|
|
for (int width = 1; width < 10; ++width) {
|
|
|
|
|
|
|
|
const TilesPlacement p1 = TilesPlacement(firstX, firstY, width, height);
|
|
|
|
// Check that HasTile returns false with some positions that we know
|
|
|
|
// not to be in the rectangle of the TilesPlacement.
|
|
|
|
ASSERT_FALSE(p1.HasTile(TileIntPoint(firstX - 1, 0)));
|
|
|
|
ASSERT_FALSE(p1.HasTile(TileIntPoint(0, firstY - 1)));
|
|
|
|
ASSERT_FALSE(p1.HasTile(TileIntPoint(firstX + width + 1, 0)));
|
|
|
|
ASSERT_FALSE(p1.HasTile(TileIntPoint(0, firstY + height + 1)));
|
|
|
|
|
|
|
|
// Verify that all positions within the rect that defines the
|
|
|
|
// TilesPlacement map to indices between 0 and width*height.
|
|
|
|
for (int y = firstY; y < (firstY+height); ++y) {
|
|
|
|
for (int x = firstX; x < (firstX+width); ++x) {
|
|
|
|
ASSERT_TRUE(p1.HasTile(TileIntPoint(x,y)));
|
|
|
|
ASSERT_TRUE(p1.TileIndex(TileIntPoint(x, y)) >= 0);
|
|
|
|
ASSERT_TRUE(p1.TileIndex(TileIntPoint(x, y)) < width * height);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-07-01 19:22:17 +03:00
|
|
|
// XXX - This causes some versions of gcc to warn that it optimizes
|
|
|
|
// away the test, which gets caught in -WError in PGO builds.
|
|
|
|
// The lazy thing to do is to just comment this out since this specific
|
|
|
|
// test isn't critically important, but we should remove the warning instead.
|
|
|
|
// cf. bug 1179287
|
|
|
|
//
|
2015-07-01 14:50:58 +03:00
|
|
|
// Verify that indices map to positions that are within the rect that
|
|
|
|
// defines the TilesPlacement.
|
2015-07-01 19:22:17 +03:00
|
|
|
// for (int i = 0; i < width * height; ++i) {
|
|
|
|
// ASSERT_TRUE(p1.TilePosition(i).x >= firstX);
|
|
|
|
// ASSERT_TRUE(p1.TilePosition(i).x < firstX + width);
|
|
|
|
// ASSERT_TRUE(p1.TilePosition(i).y >= firstY);
|
|
|
|
// ASSERT_TRUE(p1.TilePosition(i).y < firstY + height);
|
|
|
|
// }
|
2015-07-01 14:50:58 +03:00
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2013-02-23 01:25:58 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|