summaryrefslogtreecommitdiffstats
path: root/gfx/tests/gtest/TestTiledLayerBuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/tests/gtest/TestTiledLayerBuffer.cpp')
-rw-r--r--gfx/tests/gtest/TestTiledLayerBuffer.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/gfx/tests/gtest/TestTiledLayerBuffer.cpp b/gfx/tests/gtest/TestTiledLayerBuffer.cpp
new file mode 100644
index 000000000..c5e9b0f41
--- /dev/null
+++ b/gfx/tests/gtest/TestTiledLayerBuffer.cpp
@@ -0,0 +1,64 @@
+/* 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) {
+ ASSERT_EQ(RoundDownToTileEdge(10, 256), 0);
+ ASSERT_EQ(RoundDownToTileEdge(-10, 256), -256);
+}
+
+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);
+ }
+ }
+
+ // 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
+ //
+ // Verify that indices map to positions that are within the rect that
+ // defines the TilesPlacement.
+ // 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);
+ // }
+
+ }
+ }
+ }
+ }
+}
+
+}
+}