12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/base/tiling_data.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include <algorithm> 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector> 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/test/geometry_test_utils.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint NumTiles(const gfx::Size& max_texture_size, 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels) { 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int num_tiles = tiling.num_tiles_x() * tiling.num_tiles_y(); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Assert no overflow. 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_GE(num_tiles, 0); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (num_tiles > 0) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(num_tiles / tiling.num_tiles_x(), tiling.num_tiles_y()); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return num_tiles; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint XIndex(const gfx::Size& max_texture_size, 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int x_coord) { 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.TileXIndexFromSrcCoord(x_coord); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint YIndex(const gfx::Size& max_texture_size, 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int y_coord) { 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.TileYIndexFromSrcCoord(y_coord); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint MinBorderXIndex(const gfx::Size& max_texture_size, 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int x_coord) { 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.FirstBorderTileXIndexFromSrcCoord(x_coord); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint MinBorderYIndex(const gfx::Size& max_texture_size, 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int y_coord) { 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.FirstBorderTileYIndexFromSrcCoord(y_coord); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint MaxBorderXIndex(const gfx::Size& max_texture_size, 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int x_coord) { 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.LastBorderTileXIndexFromSrcCoord(x_coord); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint MaxBorderYIndex(const gfx::Size& max_texture_size, 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int y_coord) { 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.LastBorderTileYIndexFromSrcCoord(y_coord); 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint PosX(const gfx::Size& max_texture_size, 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int x_index) { 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.TilePositionX(x_index); 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 860529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint PosY(const gfx::Size& max_texture_size, 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 880529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 890529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int y_index) { 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.TilePositionY(y_index); 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 940529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint SizeX(const gfx::Size& max_texture_size, 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 960529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 970529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int x_index) { 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.TileSizeX(x_index); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint SizeY(const gfx::Size& max_texture_size, 103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Size& tiling_size, 1040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool has_border_texels, 1050529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int y_index) { 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling(max_texture_size, tiling_size, has_border_texels); 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tiling.TileSizeY(y_index); 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass TilingDataTest : public ::testing::TestWithParam<gfx::Point> {}; 1110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 112116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, NumTiles_NoTiling) { 113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(16, 16), false)); 114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(15, 15), true)); 115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(16, 16), true)); 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(1, 16), false)); 117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(15, 15), gfx::Size(15, 15), true)); 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(32, 16), gfx::Size(32, 16), false)); 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(32, 16), gfx::Size(32, 16), true)); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, NumTiles_TilingNoBorders) { 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(0, 0), false)); 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(4, 0), false)); 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(0, 4), false)); 126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(4, 4), gfx::Size(4, 0), false)); 127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(4, 4), gfx::Size(0, 4), false)); 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(1, 1), false)); 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(1, 1), gfx::Size(1, 1), false)); 131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(1, 1), gfx::Size(1, 2), false)); 132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(1, 1), gfx::Size(2, 1), false)); 133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(1, 1), false)); 134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(1, 2), false)); 135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(2, 1), false)); 136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(2, 2), false)); 137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(3, 3), gfx::Size(3, 3), false)); 138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(1, 4), false)); 140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(2, 4), false)); 141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(3, 4), false)); 142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(4, 4), false)); 143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(5, 4), false)); 144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(6, 4), false)); 145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(7, 4), false)); 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(8, 4), false)); 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(9, 4), false)); 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(10, 4), false)); 149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(11, 4), false)); 150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(1, 5), false)); 152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(2, 5), false)); 153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(3, 5), false)); 154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(4, 5), false)); 155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(5, 5), false)); 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(6, 5), false)); 157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(7, 5), false)); 158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(8, 5), false)); 159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(9, 5), false)); 160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(10, 5), false)); 161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(5, 5), gfx::Size(11, 5), false)); 162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(16, 16), false)); 164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(17, 17), gfx::Size(16, 16), false)); 165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, NumTiles(gfx::Size(15, 15), gfx::Size(16, 16), false)); 166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, NumTiles(gfx::Size(8, 8), gfx::Size(16, 16), false)); 167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(6, NumTiles(gfx::Size(8, 8), gfx::Size(17, 16), false)); 168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(8, NumTiles(gfx::Size(5, 8), gfx::Size(17, 16), false)); 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, NumTiles_TilingWithBorders) { 173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(0, 0), true)); 174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(4, 0), true)); 175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(0, 4), true)); 176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(4, 4), gfx::Size(4, 0), true)); 177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(4, 4), gfx::Size(0, 4), true)); 178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(1, 1), true)); 179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(1, 1), gfx::Size(1, 1), true)); 181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(1, 1), gfx::Size(1, 2), true)); 182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, NumTiles(gfx::Size(1, 1), gfx::Size(2, 1), true)); 183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(1, 1), true)); 184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(1, 2), true)); 185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(2, 1), true)); 186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(2, 2), true)); 187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(3, 3), gfx::Size(1, 3), true)); 189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(3, 3), gfx::Size(2, 3), true)); 190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(3, 3), gfx::Size(3, 3), true)); 191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(3, 3), gfx::Size(4, 3), true)); 192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(3, 3), gfx::Size(5, 3), true)); 193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, NumTiles(gfx::Size(3, 3), gfx::Size(6, 3), true)); 194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, NumTiles(gfx::Size(3, 3), gfx::Size(7, 3), true)); 195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(1, 4), true)); 197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(2, 4), true)); 198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(3, 4), true)); 199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(4, 4), true)); 200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(5, 4), true)); 201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(6, 4), true)); 202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(7, 4), true)); 203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(8, 4), true)); 204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, NumTiles(gfx::Size(4, 4), gfx::Size(9, 4), true)); 205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, NumTiles(gfx::Size(4, 4), gfx::Size(10, 4), true)); 206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, NumTiles(gfx::Size(4, 4), gfx::Size(11, 4), true)); 207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(1, 5), true)); 209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(2, 5), true)); 210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(3, 5), true)); 211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(4, 5), true)); 212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(5, 5), true)); 213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(6, 5), true)); 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(7, 5), true)); 215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(8, 5), true)); 216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(5, 5), gfx::Size(9, 5), true)); 217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(5, 5), gfx::Size(10, 5), true)); 218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, NumTiles(gfx::Size(5, 5), gfx::Size(11, 5), true)); 219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(30, NumTiles(gfx::Size(8, 5), gfx::Size(16, 32), true)); 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 223116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, TileXIndexFromSrcCoord) { 224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0)); 225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1)); 226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2)); 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3)); 228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4)); 229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5)); 230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6)); 231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7)); 232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8)); 233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9)); 234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10)); 235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11)); 236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0)); 238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1)); 239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2)); 240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3)); 241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4)); 242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5)); 243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6)); 244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(6, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7)); 245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8)); 246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9)); 247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10)); 248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11)); 249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0)); 251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0)); 252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1)); 253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0)); 254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1)); 255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2)); 256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 0)); 258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 1)); 259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 2)); 260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 3)); 261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0)); 263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0)); 264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1)); 265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0)); 266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1)); 267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2)); 268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 0)); 270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 1)); 271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 2)); 272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 3)); 2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 275116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, FirstBorderTileXIndexFromSrcCoord) { 276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0)); 277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1)); 278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2)); 279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3)); 280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4)); 281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5)); 282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6)); 283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7)); 284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8)); 285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9)); 286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10)); 287116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11)); 288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0)); 290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1)); 291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2)); 292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3)); 293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4)); 294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5)); 295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6)); 296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7)); 297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(6, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8)); 298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9)); 299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10)); 300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11)); 301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0)); 303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0)); 304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1)); 305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0)); 306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1)); 307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2)); 308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 0)); 310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 1)); 311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 2)); 312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 3)); 313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0)); 315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0)); 316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1)); 317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0)); 318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1)); 319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2)); 320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 0)); 322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 1)); 323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 2)); 324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 3)); 3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 327116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, LastBorderTileXIndexFromSrcCoord) { 328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0)); 329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1)); 330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2)); 331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3)); 332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4)); 333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5)); 334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6)); 335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7)); 336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8)); 337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9)); 338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10)); 339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11)); 340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0)); 342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1)); 343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2)); 344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3)); 345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4)); 346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5)); 347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(6, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6)); 348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7)); 349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8)); 350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9)); 351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10)); 352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11)); 353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0)); 355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0)); 356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1)); 357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0)); 358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1)); 359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2)); 360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 0)); 362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 1)); 363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 2)); 364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 3)); 365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0)); 367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0)); 368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1)); 369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0)); 370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1)); 371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2)); 372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 0)); 374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 1)); 375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 2)); 376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 3)); 3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 379116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, TileYIndexFromSrcCoord) { 380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0)); 381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1)); 382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2)); 383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3)); 384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4)); 385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5)); 386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6)); 387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7)); 388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8)); 389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9)); 390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10)); 391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11)); 392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0)); 394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1)); 395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2)); 396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3)); 397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4)); 398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5)); 399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6)); 400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(6, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7)); 401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8)); 402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9)); 403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10)); 404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11)); 405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0)); 407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0)); 408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1)); 409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0)); 410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1)); 411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2)); 412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 0)); 414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 1)); 415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 2)); 416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 3)); 417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0)); 419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0)); 420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1)); 421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0)); 422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1)); 423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2)); 424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 0)); 426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 1)); 427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 2)); 428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 3)); 4292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 431116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, FirstBorderTileYIndexFromSrcCoord) { 432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0)); 433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1)); 434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2)); 435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3)); 436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4)); 437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5)); 438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6)); 439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7)); 440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8)); 441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9)); 442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10)); 443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11)); 444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0)); 446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1)); 447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2)); 448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3)); 449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4)); 450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5)); 451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6)); 452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7)); 453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(6, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8)); 454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9)); 455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10)); 456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11)); 457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0)); 459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0)); 460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1)); 461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0)); 462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1)); 463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2)); 464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 0)); 466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 1)); 467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 2)); 468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 3)); 469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0)); 471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0)); 472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1)); 473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0)); 474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1)); 475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2)); 476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 0)); 478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 1)); 479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 2)); 480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 3)); 4812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 483116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, LastBorderTileYIndexFromSrcCoord) { 484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0)); 485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1)); 486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2)); 487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3)); 488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4)); 489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5)); 490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6)); 491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7)); 492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8)); 493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9)); 494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10)); 495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11)); 496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0)); 498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1)); 499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2)); 500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3)); 501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4)); 502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5)); 503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(6, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6)); 504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7)); 505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8)); 506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9)); 507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10)); 508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11)); 509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0)); 511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0)); 512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1)); 513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0)); 514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1)); 515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2)); 516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 0)); 518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 1)); 519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 2)); 520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 3)); 521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0)); 523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0)); 524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1)); 525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0)); 526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1)); 527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2)); 528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 0)); 530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 1)); 531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 2)); 532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 3)); 5332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 5342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 535116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, TileSizeX) { 536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(5, 5), false, 0)); 537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(5, 5), true, 0)); 538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), false, 0)); 540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), false, 1)); 541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), true, 0)); 542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), true, 1)); 543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(8, 8), false, 0)); 545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(5, 5), gfx::Size(8, 8), false, 1)); 546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(8, 8), true, 0)); 547116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(8, 8), true, 1)); 548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), false, 0)); 550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), false, 1)); 551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), true, 0)); 552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), true, 1)); 553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), true, 2)); 554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(11, 11), true, 2)); 556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(5, 5), gfx::Size(12, 12), true, 2)); 5572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(5, 9), gfx::Size(12, 17), true, 2)); 5592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 5602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 561116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, TileSizeY) { 562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(5, 5), false, 0)); 563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(5, 5), true, 0)); 564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 565116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(6, 6), false, 0)); 566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeY(gfx::Size(5, 5), gfx::Size(6, 6), false, 1)); 567116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(6, 6), true, 0)); 568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeY(gfx::Size(5, 5), gfx::Size(6, 6), true, 1)); 569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(8, 8), false, 0)); 571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(5, 5), gfx::Size(8, 8), false, 1)); 572116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(8, 8), true, 0)); 573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(8, 8), true, 1)); 574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), false, 0)); 576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), false, 1)); 577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), true, 0)); 578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), true, 1)); 579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), true, 2)); 580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(11, 11), true, 2)); 582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(5, 5), gfx::Size(12, 12), true, 2)); 5830529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(9, 5), gfx::Size(17, 12), true, 2)); 585116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 587116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, TileSizeX_and_TilePositionX) { 5882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Single tile cases: 589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(1, 1), false, 0)); 590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(1, 1), false, 0)); 591116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(1, 100), false, 0)); 592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(1, 100), false, 0)); 593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(3, 1), false, 0)); 594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(3, 1), false, 0)); 595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(3, 100), false, 0)); 596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(3, 100), false, 0)); 597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(1, 1), true, 0)); 598116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(1, 1), true, 0)); 599116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(1, 100), true, 0)); 600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(1, 100), true, 0)); 601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(3, 1), true, 0)); 602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(3, 1), true, 0)); 603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(3, 100), true, 0)); 604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(3, 100), true, 0)); 6052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Multiple tiles: 6072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // no border 6082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // positions 0, 3 609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(3, 3), gfx::Size(6, 1), false)); 610116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), false, 0)); 611116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), false, 1)); 612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(6, 1), false, 0)); 613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, PosX(gfx::Size(3, 3), gfx::Size(6, 1), false, 1)); 614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(6, 100), false, 0)); 615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(6, 100), false, 1)); 616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(6, 100), false, 0)); 617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, PosX(gfx::Size(3, 3), gfx::Size(6, 100), false, 1)); 6182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Multiple tiles: 6202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // with border 6212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // positions 0, 2, 3, 4 622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, NumTiles(gfx::Size(3, 3), gfx::Size(6, 1), true)); 623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), true, 0)); 624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), true, 1)); 625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), true, 2)); 626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), true, 3)); 627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(6, 1), true, 0)); 628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, PosX(gfx::Size(3, 3), gfx::Size(6, 1), true, 1)); 629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, PosX(gfx::Size(3, 3), gfx::Size(6, 1), true, 2)); 630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, PosX(gfx::Size(3, 3), gfx::Size(6, 1), true, 3)); 631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeX(gfx::Size(3, 7), gfx::Size(6, 100), true, 0)); 632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeX(gfx::Size(3, 7), gfx::Size(6, 100), true, 1)); 633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeX(gfx::Size(3, 7), gfx::Size(6, 100), true, 2)); 634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeX(gfx::Size(3, 7), gfx::Size(6, 100), true, 3)); 635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosX(gfx::Size(3, 7), gfx::Size(6, 100), true, 0)); 636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, PosX(gfx::Size(3, 7), gfx::Size(6, 100), true, 1)); 637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, PosX(gfx::Size(3, 7), gfx::Size(6, 100), true, 2)); 638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, PosX(gfx::Size(3, 7), gfx::Size(6, 100), true, 3)); 6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 6402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 641116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, TileSizeY_and_TilePositionY) { 6422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Single tile cases: 643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(1, 1), false, 0)); 644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 1), false, 0)); 645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(100, 1), false, 0)); 646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 1), false, 0)); 647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(1, 3), false, 0)); 648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 3), false, 0)); 649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(100, 3), false, 0)); 650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 3), false, 0)); 651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(1, 1), true, 0)); 652116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 1), true, 0)); 653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(100, 1), true, 0)); 654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 1), true, 0)); 655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(1, 3), true, 0)); 656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 3), true, 0)); 657116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(100, 3), true, 0)); 658116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 3), true, 0)); 6592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Multiple tiles: 6612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // no border 6622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // positions 0, 3 663116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, NumTiles(gfx::Size(3, 3), gfx::Size(1, 6), false)); 664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), false, 0)); 665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), false, 1)); 666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 6), false, 0)); 667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, PosY(gfx::Size(3, 3), gfx::Size(1, 6), false, 1)); 668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(100, 6), false, 0)); 669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(100, 6), false, 1)); 670116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 6), false, 0)); 671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, PosY(gfx::Size(3, 3), gfx::Size(100, 6), false, 1)); 6722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Multiple tiles: 6742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // with border 6752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // positions 0, 2, 3, 4 676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, NumTiles(gfx::Size(3, 3), gfx::Size(1, 6), true)); 677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), true, 0)); 678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), true, 1)); 679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), true, 2)); 680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), true, 3)); 681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 6), true, 0)); 682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, PosY(gfx::Size(3, 3), gfx::Size(1, 6), true, 1)); 683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, PosY(gfx::Size(3, 3), gfx::Size(1, 6), true, 2)); 684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, PosY(gfx::Size(3, 3), gfx::Size(1, 6), true, 3)); 685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeY(gfx::Size(7, 3), gfx::Size(100, 6), true, 0)); 686116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeY(gfx::Size(7, 3), gfx::Size(100, 6), true, 1)); 687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, SizeY(gfx::Size(7, 3), gfx::Size(100, 6), true, 2)); 688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, SizeY(gfx::Size(7, 3), gfx::Size(100, 6), true, 3)); 689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, PosY(gfx::Size(7, 3), gfx::Size(100, 6), true, 0)); 690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, PosY(gfx::Size(7, 3), gfx::Size(100, 6), true, 1)); 691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, PosY(gfx::Size(7, 3), gfx::Size(100, 6), true, 2)); 692116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, PosY(gfx::Size(7, 3), gfx::Size(100, 6), true, 3)); 6932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 6942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 695116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, SetTotalSize) { 696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(5, 5), gfx::Size(5, 5), false); 697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, data.tiling_size().width()); 698116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, data.tiling_size().height()); 6992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, data.num_tiles_x()); 7002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.TileSizeX(0)); 7012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, data.num_tiles_y()); 7022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.TileSizeY(0)); 7032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch data.SetTilingSize(gfx::Size(6, 5)); 705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(6, data.tiling_size().width()); 706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, data.tiling_size().height()); 7072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, data.num_tiles_x()); 7082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.TileSizeX(0)); 7092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, data.TileSizeX(1)); 7102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, data.num_tiles_y()); 7112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.TileSizeY(0)); 7122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch data.SetTilingSize(gfx::Size(5, 12)); 714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(5, data.tiling_size().width()); 715116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(12, data.tiling_size().height()); 7162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, data.num_tiles_x()); 7172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.TileSizeX(0)); 7182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(3, data.num_tiles_y()); 7192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.TileSizeY(0)); 7202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.TileSizeY(1)); 7212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, data.TileSizeY(2)); 7222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 7232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 724116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, SetMaxTextureSizeNoBorders) { 725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(8, 8), gfx::Size(16, 32), false); 7262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, data.num_tiles_x()); 7272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(4, data.num_tiles_y()); 7282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetMaxTextureSize(gfx::Size(32, 32)); 7302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(gfx::Size(32, 32), data.max_texture_size()); 7312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, data.num_tiles_x()); 7322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, data.num_tiles_y()); 7332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetMaxTextureSize(gfx::Size(2, 2)); 7352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(gfx::Size(2, 2), data.max_texture_size()); 7362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(8, data.num_tiles_x()); 7372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(16, data.num_tiles_y()); 7382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetMaxTextureSize(gfx::Size(5, 5)); 7402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(gfx::Size(5, 5), data.max_texture_size()); 7412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(4, data.num_tiles_x()); 7422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(7, data.num_tiles_y()); 7432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetMaxTextureSize(gfx::Size(8, 5)); 7452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(gfx::Size(8, 5), data.max_texture_size()); 7462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, data.num_tiles_x()); 7472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(7, data.num_tiles_y()); 7482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 7492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 750116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, SetMaxTextureSizeBorders) { 751116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(8, 8), gfx::Size(16, 32), true); 7522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(3, data.num_tiles_x()); 7532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.num_tiles_y()); 7542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetMaxTextureSize(gfx::Size(32, 32)); 7562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(gfx::Size(32, 32), data.max_texture_size()); 7572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, data.num_tiles_x()); 7582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, data.num_tiles_y()); 7592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetMaxTextureSize(gfx::Size(2, 2)); 7612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(gfx::Size(2, 2), data.max_texture_size()); 7622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(0, data.num_tiles_x()); 7632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(0, data.num_tiles_y()); 7642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetMaxTextureSize(gfx::Size(5, 5)); 7662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(gfx::Size(5, 5), data.max_texture_size()); 7672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.num_tiles_x()); 7682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(10, data.num_tiles_y()); 7692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetMaxTextureSize(gfx::Size(8, 5)); 7712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(gfx::Size(8, 5), data.max_texture_size()); 7722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(3, data.num_tiles_x()); 7732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(10, data.num_tiles_y()); 7742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 7752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST(TilingDataTest, ExpandRectIgnoringBordersToTileBoundsEmpty) { 777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData empty_total_size(gfx::Size(0, 0), gfx::Size(8, 8), true); 778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ( 779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect(), 7801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci empty_total_size.ExpandRectIgnoringBordersToTileBounds(gfx::Rect())); 7811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ(gfx::Rect(), 7821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci empty_total_size.ExpandRectIgnoringBordersToTileBounds( 7831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect(100, 100, 100, 100))); 7841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ(gfx::Rect(), 7851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci empty_total_size.ExpandRectIgnoringBordersToTileBounds( 7861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect(100, 100))); 787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData empty_max_texture_size(gfx::Size(8, 8), gfx::Size(0, 0), true); 7891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ(gfx::Rect(), 7901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci empty_max_texture_size.ExpandRectIgnoringBordersToTileBounds( 7911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect())); 7921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ(gfx::Rect(), 7931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci empty_max_texture_size.ExpandRectIgnoringBordersToTileBounds( 7941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect(100, 100, 100, 100))); 7951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ(gfx::Rect(), 7961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci empty_max_texture_size.ExpandRectIgnoringBordersToTileBounds( 7971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect(100, 100))); 7980529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 7990529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 8001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST(TilingDataTest, ExpandRectIgnoringBordersToTileBounds) { 801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(4, 4), gfx::Size(16, 32), true); 8020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 8030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Small rect at origin rounds up to tile 0, 0. 804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect at_origin_src(1, 1); 8051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect at_origin_result(data.TileBounds(0, 0)); 8060529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_NE(at_origin_src, at_origin_result); 8071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ(at_origin_result, 8081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data.ExpandRectIgnoringBordersToTileBounds(at_origin_src)); 8090529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 8100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Arbitrary internal rect. 811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect rect_src(6, 6, 1, 3); 8120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Tile 2, 2 => gfx::Rect(4, 4, 4, 4) 813116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Tile 2, 3 => gfx::Rect(4, 6, 4, 4) 8141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect rect_result( 8151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::UnionRects(data.TileBounds(2, 2), data.TileBounds(2, 3))); 8160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_NE(rect_src, rect_result); 8171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ(rect_result, 8181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data.ExpandRectIgnoringBordersToTileBounds(rect_src)); 8190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // On tile bounds does not round up to next tile (ignores the border). 8210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gfx::Rect border_rect_src( 8220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); 8231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect border_rect_result( 8241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); 8251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ(border_rect_result, 8261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data.ExpandRectIgnoringBordersToTileBounds(border_rect_src)); 8270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 8280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Equal to tiling rect. 829116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(data.tiling_size()), 8301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data.ExpandRectIgnoringBordersToTileBounds( 831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect(data.tiling_size()))); 8320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 8330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Containing, but larger than tiling rect. 8341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ( 8351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect(data.tiling_size()), 8361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data.ExpandRectIgnoringBordersToTileBounds(gfx::Rect(100, 100))); 8370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 8380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Non-intersecting with tiling rect. 839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect non_intersect(200, 200, 100, 100); 840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(non_intersect.Intersects(gfx::Rect(data.tiling_size()))); 8411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_RECT_EQ(gfx::Rect(), 8421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data.ExpandRectIgnoringBordersToTileBounds(non_intersect)); 843f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data2(gfx::Size(8, 8), gfx::Size(32, 64), true); 845f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 846f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Inside other tile border texels doesn't include other tiles. 847f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::Rect inner_rect_src(data2.TileBounds(1, 1)); 848f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) inner_rect_src.Inset(data2.border_texels(), data.border_texels()); 8491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect inner_rect_result(data2.TileBounds(1, 1)); 850116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect expanded = 8511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data2.ExpandRectIgnoringBordersToTileBounds(inner_rect_src); 852f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(inner_rect_result.ToString(), expanded.ToString()); 853f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 854f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 855116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, ExpandRectToTileBounds) { 856116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(4, 4), gfx::Size(16, 32), true); 857f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 858f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Small rect at origin rounds up to tile 0, 0. 859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect at_origin_src(1, 1); 860f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::Rect at_origin_result(data.TileBounds(0, 0)); 861f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_NE(at_origin_src, at_origin_result); 862f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_RECT_EQ(at_origin_result, data.ExpandRectToTileBounds(at_origin_src)); 863f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 864f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Arbitrary internal rect. 865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect rect_src(6, 6, 1, 3); 866f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Tile 2, 2 => gfx::Rect(4, 4, 4, 4) 867f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Tile 3, 4 => gfx::Rect(6, 8, 4, 4) 868f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::Rect rect_result( 869f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::UnionRects(data.TileBounds(2, 2), data.TileBounds(3, 4))); 870f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_NE(rect_src, rect_result); 871f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_RECT_EQ(rect_result, data.ExpandRectToTileBounds(rect_src)); 872f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 873f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // On tile bounds rounds up to next tile (since border overlaps). 874f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::Rect border_rect_src( 875f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4))); 876f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::Rect border_rect_result( 877f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::UnionRects(data.TileBounds(0, 1), data.TileBounds(4, 5))); 878f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_RECT_EQ(border_rect_result, 879f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) data.ExpandRectToTileBounds(border_rect_src)); 880f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 881f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Equal to tiling rect. 882116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(data.tiling_size()), 883116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch data.ExpandRectToTileBounds(gfx::Rect(data.tiling_size()))); 884f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 885f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Containing, but larger than tiling rect. 886116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(data.tiling_size()), 887116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch data.ExpandRectToTileBounds(gfx::Rect(100, 100))); 888f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 889f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Non-intersecting with tiling rect. 890116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect non_intersect(200, 200, 100, 100); 891116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(non_intersect.Intersects(gfx::Rect(data.tiling_size()))); 892f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_RECT_EQ(gfx::Rect(), data.ExpandRectToTileBounds(non_intersect)); 893f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 894116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data2(gfx::Size(8, 8), gfx::Size(32, 64), true); 895f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 896f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Inside other tile border texels doesn't include other tiles. 897f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::Rect inner_rect_src(data2.TileBounds(1, 1)); 898f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) inner_rect_src.Inset(data2.border_texels(), data.border_texels()); 899f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::Rect inner_rect_result(data2.TileBounds(1, 1)); 900f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gfx::Rect expanded = data2.ExpandRectToTileBounds(inner_rect_src); 901f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(inner_rect_result.ToString(), expanded.ToString()); 9020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 9030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 904116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, Assignment) { 9052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 906116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData source(gfx::Size(8, 8), gfx::Size(16, 32), true); 9072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TilingData dest = source; 9082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(source.border_texels(), dest.border_texels()); 9092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(source.max_texture_size(), dest.max_texture_size()); 9102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(source.num_tiles_x(), dest.num_tiles_x()); 9112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(source.num_tiles_y(), dest.num_tiles_y()); 912116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(source.tiling_size(), dest.tiling_size()); 9132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 9142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData source(gfx::Size(7, 3), gfx::Size(6, 100), false); 9162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TilingData dest(source); 9172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(source.border_texels(), dest.border_texels()); 9182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(source.max_texture_size(), dest.max_texture_size()); 9192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(source.num_tiles_x(), dest.num_tiles_x()); 9202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(source.num_tiles_y(), dest.num_tiles_y()); 921116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(source.tiling_size(), dest.tiling_size()); 9222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 9232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 9242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 925116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, SetBorderTexels) { 926116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(8, 8), gfx::Size(16, 32), false); 9272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, data.num_tiles_x()); 9282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(4, data.num_tiles_y()); 9292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetHasBorderTexels(true); 9312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(3, data.num_tiles_x()); 9322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.num_tiles_y()); 9332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) data.SetHasBorderTexels(false); 9352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, data.num_tiles_x()); 9362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(4, data.num_tiles_y()); 9372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 9382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 939116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, LargeBorders) { 940116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(100, 80), gfx::Size(200, 145), 30); 9412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(30, data.border_texels()); 9422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(70, data.TileSizeX(0)); 9442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(40, data.TileSizeX(1)); 9452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(40, data.TileSizeX(2)); 9462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(50, data.TileSizeX(3)); 9472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(4, data.num_tiles_x()); 9482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(50, data.TileSizeY(0)); 9502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(20, data.TileSizeY(1)); 9512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(20, data.TileSizeY(2)); 9522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(20, data.TileSizeY(3)); 9532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(35, data.TileSizeY(4)); 9542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(5, data.num_tiles_y()); 9552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 956116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(70, 50), data.TileBounds(0, 0)); 957116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(70, 50, 40, 20), data.TileBounds(1, 1)); 958116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(110, 110, 40, 35), data.TileBounds(2, 4)); 959116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(150, 70, 50, 20), data.TileBounds(3, 2)); 960116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(150, 110, 50, 35), data.TileBounds(3, 4)); 961116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 962116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(100, 80), data.TileBoundsWithBorder(0, 0)); 963116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(40, 20, 100, 80), data.TileBoundsWithBorder(1, 1)); 964116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(80, 80, 100, 65), data.TileBoundsWithBorder(2, 4)); 965116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(120, 40, 80, 80), data.TileBoundsWithBorder(3, 2)); 966116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_RECT_EQ(gfx::Rect(120, 80, 80, 65), data.TileBoundsWithBorder(3, 4)); 967116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 968116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.TileXIndexFromSrcCoord(0)); 969116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.TileXIndexFromSrcCoord(69)); 970116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.TileXIndexFromSrcCoord(70)); 971116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.TileXIndexFromSrcCoord(109)); 972116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.TileXIndexFromSrcCoord(110)); 973116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.TileXIndexFromSrcCoord(149)); 974116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.TileXIndexFromSrcCoord(150)); 975116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.TileXIndexFromSrcCoord(199)); 976116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 977116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.TileYIndexFromSrcCoord(0)); 978116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.TileYIndexFromSrcCoord(49)); 979116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.TileYIndexFromSrcCoord(50)); 980116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.TileYIndexFromSrcCoord(69)); 981116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.TileYIndexFromSrcCoord(70)); 982116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.TileYIndexFromSrcCoord(89)); 983116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.TileYIndexFromSrcCoord(90)); 984116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.TileYIndexFromSrcCoord(109)); 985116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, data.TileYIndexFromSrcCoord(110)); 986116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, data.TileYIndexFromSrcCoord(144)); 987116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 988116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.FirstBorderTileXIndexFromSrcCoord(0)); 989116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.FirstBorderTileXIndexFromSrcCoord(99)); 990116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.FirstBorderTileXIndexFromSrcCoord(100)); 991116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.FirstBorderTileXIndexFromSrcCoord(139)); 992116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.FirstBorderTileXIndexFromSrcCoord(140)); 993116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.FirstBorderTileXIndexFromSrcCoord(179)); 994116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.FirstBorderTileXIndexFromSrcCoord(180)); 995116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.FirstBorderTileXIndexFromSrcCoord(199)); 996116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 997116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.FirstBorderTileYIndexFromSrcCoord(0)); 998116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.FirstBorderTileYIndexFromSrcCoord(79)); 999116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.FirstBorderTileYIndexFromSrcCoord(80)); 1000116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.FirstBorderTileYIndexFromSrcCoord(99)); 1001116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.FirstBorderTileYIndexFromSrcCoord(100)); 1002116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.FirstBorderTileYIndexFromSrcCoord(119)); 1003116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.FirstBorderTileYIndexFromSrcCoord(120)); 1004116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.FirstBorderTileYIndexFromSrcCoord(139)); 1005116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, data.FirstBorderTileYIndexFromSrcCoord(140)); 1006116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, data.FirstBorderTileYIndexFromSrcCoord(144)); 1007116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1008116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.LastBorderTileXIndexFromSrcCoord(0)); 1009116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.LastBorderTileXIndexFromSrcCoord(39)); 1010116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.LastBorderTileXIndexFromSrcCoord(40)); 1011116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.LastBorderTileXIndexFromSrcCoord(79)); 1012116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.LastBorderTileXIndexFromSrcCoord(80)); 1013116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.LastBorderTileXIndexFromSrcCoord(119)); 1014116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.LastBorderTileXIndexFromSrcCoord(120)); 1015116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.LastBorderTileXIndexFromSrcCoord(199)); 1016116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1017116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.LastBorderTileYIndexFromSrcCoord(0)); 1018116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(0, data.LastBorderTileYIndexFromSrcCoord(19)); 1019116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.LastBorderTileYIndexFromSrcCoord(20)); 1020116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1, data.LastBorderTileYIndexFromSrcCoord(39)); 1021116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.LastBorderTileYIndexFromSrcCoord(40)); 1022116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2, data.LastBorderTileYIndexFromSrcCoord(59)); 1023116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.LastBorderTileYIndexFromSrcCoord(60)); 1024116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(3, data.LastBorderTileYIndexFromSrcCoord(79)); 1025116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, data.LastBorderTileYIndexFromSrcCoord(80)); 1026116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(4, data.LastBorderTileYIndexFromSrcCoord(144)); 10272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 10282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void TestIterate(const TilingData& data, 103023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) gfx::Rect rect, 103123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_left, 103223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_top, 103323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_right, 103423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_bottom, 103523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bool include_borders) { 10362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_GE(expect_left, 0); 10372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_GE(expect_top, 0); 10382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_LT(expect_right, data.num_tiles_x()); 10392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_LT(expect_bottom, data.num_tiles_y()); 10402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<std::pair<int, int> > original_expected; 10422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int x = 0; x < data.num_tiles_x(); ++x) { 10432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int y = 0; y < data.num_tiles_y(); ++y) { 104423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) gfx::Rect bounds; 104523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) if (include_borders) 104623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bounds = data.TileBoundsWithBorder(x, y); 104723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) else 104823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bounds = data.TileBounds(x, y); 10492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (x >= expect_left && x <= expect_right && 10502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) y >= expect_top && y <= expect_bottom) { 10512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(bounds.Intersects(rect)); 10522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) original_expected.push_back(std::make_pair(x, y)); 10532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 10542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(bounds.Intersects(rect)); 10552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 10562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 10572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 10582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Verify with vanilla iterator. 10602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 10612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<std::pair<int, int> > expected = original_expected; 106223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) for (TilingData::Iterator iter(&data, rect, include_borders); iter; 106323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ++iter) { 10642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool found = false; 10652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < expected.size(); ++i) { 10662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (expected[i] == iter.index()) { 10672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected[i] = expected.back(); 10682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.pop_back(); 10692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) found = true; 10702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 10712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 10722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 10732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(found); 10742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1075c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(0u, expected.size()); 10762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 10772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Make sure this also works with a difference iterator and an empty ignore. 10791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The difference iterator never includes borders, so ignore it otherwise. 10801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!include_borders) { 10812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<std::pair<int, int> > expected = original_expected; 10821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (TilingData::DifferenceIterator iter(&data, rect, gfx::Rect()); iter; 10831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ++iter) { 10842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool found = false; 10852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < expected.size(); ++i) { 10862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (expected[i] == iter.index()) { 10872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected[i] = expected.back(); 10882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.pop_back(); 10892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) found = true; 10902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 10912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 10922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 10932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(found); 10942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1095c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(0u, expected.size()); 10962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 10972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 10982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 109923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void TestIterateBorders(const TilingData& data, 110023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) gfx::Rect rect, 110123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_left, 110223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_top, 110323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_right, 110423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_bottom) { 110523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bool include_borders = true; 110623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) TestIterate(data, 110723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) rect, 110823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) expect_left, 110923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) expect_top, 111023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) expect_right, 111123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) expect_bottom, 111223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) include_borders); 111323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 111423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 111523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void TestIterateNoBorders(const TilingData& data, 111623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) gfx::Rect rect, 111723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_left, 111823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_top, 111923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_right, 112023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_bottom) { 112123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bool include_borders = false; 112223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) TestIterate(data, 112323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) rect, 112423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) expect_left, 112523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) expect_top, 112623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) expect_right, 112723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) expect_bottom, 112823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) include_borders); 112923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 113023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 113123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void TestIterateAll(const TilingData& data, 113223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) gfx::Rect rect, 113323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_left, 113423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_top, 113523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_right, 113623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int expect_bottom) { 113723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) TestIterateBorders( 113823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) data, rect, expect_left, expect_top, expect_right, expect_bottom); 113923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) TestIterateNoBorders( 114023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) data, rect, expect_left, expect_top, expect_right, expect_bottom); 114123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 114223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1143116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, IteratorNoBorderTexels) { 1144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(10, 10), gfx::Size(40, 25), false); 11452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // X border index by src coord: [0-10), [10-20), [20, 30), [30, 40) 11462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Y border index by src coord: [0-10), [10-20), [20, 25) 1147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(data, gfx::Rect(40, 25), 0, 0, 3, 2); 1148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(data, gfx::Rect(15, 15, 8, 8), 1, 1, 2, 2); 11492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 11502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Oversized. 1151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 3, 2); 1152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(data, gfx::Rect(-100, 20, 1000, 1), 0, 2, 3, 2); 1153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(data, gfx::Rect(29, -100, 31, 1000), 2, 0, 3, 2); 11542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Nonintersecting. 1155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(data, gfx::Rect(60, 80, 100, 100), 0, 0, -1, -1); 11562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 11572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1158116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, BordersIteratorOneBorderTexel) { 1159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(10, 20), gfx::Size(25, 45), true); 11602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // X border index by src coord: [0-10), [8-18), [16-25) 11612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Y border index by src coord: [0-20), [18-38), [36-45) 1162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(25, 45), 0, 0, 2, 2); 1163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(18, 19, 3, 17), 2, 0, 2, 1); 1164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(10, 20, 6, 16), 1, 1, 1, 1); 1165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(9, 19, 8, 18), 0, 0, 2, 2); 116623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Oversized. 1167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 2, 2); 1168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(-100, 20, 1000, 1), 0, 1, 2, 1); 1169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(18, -100, 6, 1000), 2, 0, 2, 2); 117023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Nonintersecting. 1171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(60, 80, 100, 100), 0, 0, -1, -1); 117223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 11732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1174116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, NoBordersIteratorOneBorderTexel) { 1175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(10, 20), gfx::Size(25, 45), true); 117623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // X index by src coord: [0-9), [9-17), [17-25) 117723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Y index by src coord: [0-19), [19-37), [37-45) 1178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(25, 45), 0, 0, 2, 2); 1179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(17, 19, 3, 18), 2, 1, 2, 1); 1180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(17, 19, 3, 19), 2, 1, 2, 2); 1181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(8, 18, 9, 19), 0, 0, 1, 1); 1182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(9, 19, 9, 19), 1, 1, 2, 2); 11832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Oversized. 1184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 2, 2); 1185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(-100, 20, 1000, 1), 0, 1, 2, 1); 1186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(18, -100, 6, 1000), 2, 0, 2, 2); 11872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Nonintersecting. 1188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(60, 80, 100, 100), 0, 0, -1, -1); 11892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 11902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1191116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, BordersIteratorManyBorderTexels) { 1192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(50, 60), gfx::Size(65, 110), 20); 11932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // X border index by src coord: [0-50), [10-60), [20-65) 11942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Y border index by src coord: [0-60), [20-80), [40-100), [60-110) 1195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(65, 110), 0, 0, 2, 3); 1196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(50, 60, 15, 65), 1, 1, 2, 3); 1197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(60, 30, 2, 10), 2, 0, 2, 1); 119823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Oversized. 1199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 2, 3); 1200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(-100, 10, 1000, 10), 0, 0, 2, 0); 1201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(10, -100, 10, 1000), 0, 0, 1, 3); 120223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Nonintersecting. 1203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateBorders(data, gfx::Rect(65, 110, 100, 100), 0, 0, -1, -1); 120423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 12052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1206116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, NoBordersIteratorManyBorderTexels) { 1207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(50, 60), gfx::Size(65, 110), 20); 120823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // X index by src coord: [0-30), [30-40), [40, 65) 120923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Y index by src coord: [0-40), [40-60), [60, 80), [80-110) 1210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(65, 110), 0, 0, 2, 3); 1211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(30, 40, 15, 65), 1, 1, 2, 3); 1212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(60, 20, 2, 21), 2, 0, 2, 1); 12132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Oversized. 1214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 2, 3); 1215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(-100, 10, 1000, 10), 0, 0, 2, 0); 1216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(10, -100, 10, 1000), 0, 0, 0, 3); 12172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Nonintersecting. 1218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateNoBorders(data, gfx::Rect(65, 110, 100, 100), 0, 0, -1, -1); 12192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 12202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1221116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, IteratorOneTile) { 1222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData no_border(gfx::Size(1000, 1000), gfx::Size(30, 40), false); 1223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(no_border, gfx::Rect(30, 40), 0, 0, 0, 0); 1224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(no_border, gfx::Rect(10, 10, 20, 20), 0, 0, 0, 0); 1225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(no_border, gfx::Rect(30, 40, 100, 100), 0, 0, -1, -1); 1226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData one_border(gfx::Size(1000, 1000), gfx::Size(30, 40), true); 1228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(one_border, gfx::Rect(30, 40), 0, 0, 0, 0); 1229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(one_border, gfx::Rect(10, 10, 20, 20), 0, 0, 0, 0); 1230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(one_border, gfx::Rect(30, 40, 100, 100), 0, 0, -1, -1); 1231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData big_border(gfx::Size(1000, 1000), gfx::Size(30, 40), 50); 1233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(big_border, gfx::Rect(30, 40), 0, 0, 0, 0); 1234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(big_border, gfx::Rect(10, 10, 20, 20), 0, 0, 0, 0); 1235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(big_border, gfx::Rect(30, 40, 100, 100), 0, 0, -1, -1); 12362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 12372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(TilingDataTest, IteratorNoTiles) { 1239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(100, 100), gfx::Size(), false); 1240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestIterateAll(data, gfx::Rect(100, 100), 0, 0, -1, -1); 12412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 12422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid TestDiff(const TilingData& data, 12441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect consider, 12451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect ignore, 12461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci size_t num_tiles) { 12472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<std::pair<int, int> > expected; 12482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int y = 0; y < data.num_tiles_y(); ++y) { 12492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int x = 0; x < data.num_tiles_x(); ++x) { 12501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect bounds = data.TileBounds(x, y); 12512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (bounds.Intersects(consider) && !bounds.Intersects(ignore)) 12522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.push_back(std::make_pair(x, y)); 12532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 12542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 12552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Sanity check the test. 12572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(num_tiles, expected.size()); 12582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (TilingData::DifferenceIterator iter(&data, consider, ignore); iter; 12601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ++iter) { 12612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool found = false; 12622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < expected.size(); ++i) { 12632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (expected[i] == iter.index()) { 12642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected[i] = expected.back(); 12652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.pop_back(); 12662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) found = true; 12672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 12682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 12692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 12702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(found); 12712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(0u, expected.size()); 12732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 12742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1275116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, DifferenceIteratorIgnoreGeometry) { 12762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This test is checking that the iterator can handle different geometries of 12772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ignore rects relative to the consider rect. The consider rect indices 12782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // themselves are mostly tested by the non-difference iterator tests, so the 12792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // full rect is mostly used here for simplicity. 12802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // X border index by src coord: [0-10), [10-20), [20, 30), [30, 40) 12822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Y border index by src coord: [0-10), [10-20), [20, 25) 1283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(10, 10), gfx::Size(40, 25), false); 12842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Fully ignored 1286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(40, 25), 0); 1287116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(-100, -100, 200, 200), 0); 1288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(9, 9, 30, 15), 0); 1289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(15, 15, 8, 8), gfx::Rect(15, 15, 8, 8), 0); 12902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Fully un-ignored 1292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(-30, -20, 8, 8), 12); 1293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(), 12); 12942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Top left, remove 2x2 tiles 1296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(20, 19), 8); 12972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Bottom right, remove 2x2 tiles 1298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(20, 15, 20, 6), 8); 12992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Bottom left, remove 2x2 tiles 1300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(0, 15, 20, 6), 8); 13012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Top right, remove 2x2 tiles 1302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(20, 0, 20, 19), 8); 13032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Center, remove only one tile 1304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(10, 10, 5, 5), 11); 13052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Left column, flush left, removing two columns 1307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(11, 25), 6); 13082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Middle column, removing two columns 1309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(11, 0, 11, 25), 6); 13102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Right column, flush right, removing one column 1311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(30, 0, 2, 25), 9); 13122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Top row, flush top, removing one row 1314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(0, 5, 40, 5), 8); 13152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Middle row, removing one row 1316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(0, 13, 40, 5), 8); 13172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Bottom row, flush bottom, removing two rows 1318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(40, 25), gfx::Rect(0, 13, 40, 12), 4); 13192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Non-intersecting, but still touching two of the same tiles. 1321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(8, 0, 32, 25), gfx::Rect(0, 12, 5, 12), 10); 13222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Intersecting, but neither contains the other. 2x3 with one overlap. 1324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(5, 2, 20, 10), gfx::Rect(25, 15, 5, 10), 5); 13252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 13262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1327116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, DifferenceIteratorManyBorderTexels) { 13282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // X border index by src coord: [0-50), [10-60), [20-65) 13292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Y border index by src coord: [0-60), [20-80), [40-100), [60-110) 13301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // X tile bounds by src coord: [0-30), [30-40), [40-65) 13311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Y tile bounds by src coord: [0-40), [40-60), [60-80), [80-110) 1332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(50, 60), gfx::Size(65, 110), 20); 13332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Knock out two rows, but not the left column. 13351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestDiff(data, gfx::Rect(10, 30, 55, 80), gfx::Rect(30, 59, 20, 2), 8); 13362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Knock out one row. 13381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestDiff(data, gfx::Rect(10, 30, 55, 80), gfx::Rect(29, 59, 20, 1), 9); 13392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Overlap all tiles with ignore rect. 13411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestDiff(data, gfx::Rect(65, 110), gfx::Rect(29, 39, 12, 42), 0); 13421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 13431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Rect tile = data.TileBounds(1, 1); 13441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 13451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Ignore one tile. 13461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestDiff(data, gfx::Rect(20, 30, 45, 80), tile, 11); 13471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 13481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Include one tile. 13491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestDiff(data, tile, gfx::Rect(), 1); 13502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 13512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1352116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, DifferenceIteratorOneTile) { 1353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData no_border(gfx::Size(1000, 1000), gfx::Size(30, 40), false); 1354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(no_border, gfx::Rect(30, 40), gfx::Rect(), 1); 1355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(no_border, gfx::Rect(5, 5, 100, 100), gfx::Rect(5, 5, 1, 1), 0); 1356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData one_border(gfx::Size(1000, 1000), gfx::Size(30, 40), true); 1358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(one_border, gfx::Rect(30, 40), gfx::Rect(), 1); 1359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(one_border, gfx::Rect(5, 5, 100, 100), gfx::Rect(5, 5, 1, 1), 0); 1360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData big_border(gfx::Size(1000, 1000), gfx::Size(30, 40), 50); 1362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(big_border, gfx::Rect(30, 40), gfx::Rect(), 1); 1363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(big_border, gfx::Rect(5, 5, 100, 100), gfx::Rect(5, 5, 1, 1), 0); 13642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 13652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(TilingDataTest, DifferenceIteratorNoTiles) { 1367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData data(gfx::Size(100, 100), gfx::Size(), false); 1368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestDiff(data, gfx::Rect(100, 100), gfx::Rect(5, 5), 0); 13692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 13702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1371a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void TestSpiralIterate(int source_line_number, 1372a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const TilingData& tiling_data, 1373a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const gfx::Rect& consider, 1374a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const gfx::Rect& ignore, 1375a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const gfx::Rect& center, 1376a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const std::vector<std::pair<int, int> >& expected) { 1377a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<std::pair<int, int> > actual; 1378a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) for (TilingData::SpiralDifferenceIterator it( 1379a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) &tiling_data, consider, ignore, center); 1380a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) it; 1381a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ++it) { 1382a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) actual.push_back(it.index()); 1383a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 1384a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1385a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(expected.size(), actual.size()) << "error from line " 1386a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) << source_line_number; 1387a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) for (size_t i = 0; i < std::min(expected.size(), actual.size()); ++i) { 1388a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(expected[i].first, actual[i].first) 1389a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) << "i: " << i << " error from line: " << source_line_number; 1390a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(expected[i].second, actual[i].second) 1391a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) << "i: " << i << " error from line: " << source_line_number; 1392a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 1393a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 1394a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1395116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, SpiralDifferenceIteratorNoIgnoreFullConsider) { 1396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling_data(gfx::Size(10, 10), gfx::Size(30, 30), false); 1397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect consider(30, 30); 1398a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::Rect ignore; 1399a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<std::pair<int, int> > expected; 1400a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1401a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Center is in the center of the tiling. 1402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect center(15, 15, 1, 1); 1403a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1404a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1405a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1406a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1407a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 4 3 2 1408a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| 5 * 1 1409a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 6 7 8 1410a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1411a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1412a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1413a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1414a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1415a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1416a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 2)); 1417a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1418a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1419a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1420a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1421a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Center is off to the right side of the tiling (and far away). 1422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(100, 15, 1, 1); 1423a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1424a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1425a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1426a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1427a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 7 4 1 1428a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| 8 5 2 * 1429a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 9 6 3 1430a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1431a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1432a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1433a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1434a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1435a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 1)); 1436a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 2)); 1437a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1438a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1439a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1440a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1441a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1442a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1443a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Center is the bottom right corner of the tiling. 1444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(25, 25, 1, 1); 1445a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1446a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1447a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1448a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1449a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 6 5 4 1450a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| 7 2 1 1451a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 8 3 * 1452a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1453a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1454a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 1)); 1455a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 2)); 1456a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1457a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1458a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1459a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1460a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1461a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1462a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1463a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1464a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Center is off the top left side of the tiling. 1465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(-60, -50, 1, 1); 1466a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1467a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1468a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // * x 0 1 2 1469a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1470a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 1 2 6 1471a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| 3 4 5 1472a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 7 8 9 1473a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1474a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1475a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1476a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1477a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 1)); 1478a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1479a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1480a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1481a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 2)); 1482a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1483a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1484a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1485a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1486a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Two tile center. 1487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(15, 15, 1, 10); 1488a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1489a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1490a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1491a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1492a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 5 4 3 1493a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| 6 * 2 1494a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 7 * 1 1495a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1496a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1497a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1498a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1499a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1500a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1501a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1502a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1503a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1504a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1505a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 1506a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1507116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, SpiralDifferenceIteratorSmallConsider) { 1508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling_data(gfx::Size(10, 10), gfx::Size(50, 50), false); 1509a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::Rect ignore; 1510a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<std::pair<int, int> > expected; 1511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect center(15, 15, 1, 1); 1512a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1513a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Consider is one cell. 1514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect consider(1, 1); 1515a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1516a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1517a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 3 4 1518a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.---------- 1519a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 1 1520a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| * 1521a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 1522a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 3| 1523a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 4| 1524a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1525a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1526a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1527a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1528a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Consider is bottom right corner. 1529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch consider = gfx::Rect(25, 25, 10, 10); 1530a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1531a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1532a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 3 4 1533a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.---------- 1534a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 1535a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| * 1536a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 1 2 1537a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 3| 3 4 1538a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 4| 1539a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1540a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1541a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 2)); 1542a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 3)); 1543a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 3)); 1544a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1545a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1546a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1547a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Consider is one column. 1548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch consider = gfx::Rect(11, 0, 1, 100); 1549a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1550a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1551a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 3 4 1552a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.---------- 1553a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 2 1554a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| * 1555a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 3 1556a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 3| 4 1557a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 4| 5 1558a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1559a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1560a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 2)); 1561a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 3)); 1562a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 4)); 1563a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1564a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1565a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 1566a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1567116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, SpiralDifferenceIteratorHasIgnore) { 1568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling_data(gfx::Size(10, 10), gfx::Size(50, 50), false); 1569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect consider(50, 50); 1570a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<std::pair<int, int> > expected; 1571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect center(15, 15, 1, 1); 1572a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1573a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Full ignore. 1574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect ignore(50, 50); 1575a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1576a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1577a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 3 4 1578a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.---------- 1579a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| . . . . . 1580a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| . * . . . 1581a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| . . . . . 1582a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 3| . . . . . 1583a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 4| . . . . . 1584a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1585a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1586a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1587a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1588a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 3 column ignore. 1589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ignore = gfx::Rect(15, 0, 20, 100); 1590a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1591a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1592a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 3 4 1593a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.---------- 1594a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 1 . . . 8 1595a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| 2 * . . 7 1596a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 3 . . . 6 1597a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 3| 4 . . . 5 1598a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 4| 9 . . . 10 1599a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1600a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1601a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1602a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1603a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1604a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 3)); 1605a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 3)); 1606a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 2)); 1607a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 1)); 1608a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 0)); 1609a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 4)); 1610a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 4)); 1611a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1612a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1613a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1614a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Ignore covers the top half. 1615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ignore = gfx::Rect(50, 25); 1616a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1617a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1618a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 3 4 1619a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.---------- 1620a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| . . . . . 1621a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| . * . . . 1622a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| . . . . . 1623a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 3| 1 2 3 4 5 1624a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 4| 6 7 8 9 10 1625a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1626a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1627a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 3)); 1628a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 3)); 1629a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 3)); 1630a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 3)); 1631a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 3)); 1632a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 4)); 1633a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 4)); 1634a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 4)); 1635a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 4)); 1636a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 4)); 1637a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1638a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1639a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 1640a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1641116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, SpiralDifferenceIteratorRectangleCenter) { 1642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling_data(gfx::Size(10, 10), gfx::Size(50, 50), false); 1643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect consider(50, 50); 1644a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<std::pair<int, int> > expected; 1645a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::Rect ignore; 1646a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1647a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Two cell center 1648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect center(25, 25, 1, 10); 1649a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1650a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1651a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 3 4 1652a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.---------- 1653a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| J I H G F 1654a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| K 5 4 3 E 1655a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| L 6 * 2 D 1656a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 3| M 7 * 1 C 1657a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 4| N 8 9 A B 1658a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1659a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1660a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 3)); 1661a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 2)); 1662a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 1)); 1663a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1664a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 1)); 1665a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 2)); 1666a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 3)); 1667a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 4)); 1668a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 4)); 1669a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 4)); 1670a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 4)); 1671a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 3)); 1672a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 2)); 1673a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 1)); 1674a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 0)); 1675a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 0)); 1676a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1677a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1678a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1679a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1680a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1681a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 3)); 1682a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 4)); 1683a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1684a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1685a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1686a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Three by two center. 1687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(15, 25, 20, 10); 1688a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1689a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1690a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 3 4 1691a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.---------- 1692a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| J I H G F 1693a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| 7 6 5 4 3 1694a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 8 * * * 2 1695a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 3| 9 * * * 1 1696a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 4| A B C D E 1697a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1698a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1699a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 3)); 1700a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 2)); 1701a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 1)); 1702a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 1)); 1703a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1704a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 1)); 1705a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1706a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1707a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 3)); 1708a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 4)); 1709a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 4)); 1710a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 4)); 1711a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 4)); 1712a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 4)); 1713a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 0)); 1714a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 0)); 1715a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1716a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1717a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1718a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1719a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1720a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1721a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Column center off the left side. 1722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(-50, 0, 30, 50); 1723a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1724a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1725a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 3 4 1726a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.---------- 1727a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // * 0| 5 A F K P 1728a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // * 1| 4 9 E J O 1729a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // * 2| 3 8 D I N 1730a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // * 3| 2 7 C H M 1731a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // * 4| 1 6 B G L 1732a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1733a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1734a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 4)); 1735a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 3)); 1736a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1737a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1738a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1739a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 4)); 1740a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 3)); 1741a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 2)); 1742a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 1)); 1743a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1744a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 4)); 1745a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 3)); 1746a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1747a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1748a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1749a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 4)); 1750a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 3)); 1751a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 2)); 1752a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 1)); 1753a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(3, 0)); 1754a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 4)); 1755a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 3)); 1756a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 2)); 1757a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 1)); 1758a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(4, 0)); 1759a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1760a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1761a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 1762a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1763116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(TilingDataTest, SpiralDifferenceIteratorEdgeCases) { 1764116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData tiling_data(gfx::Size(10, 10), gfx::Size(30, 30), false); 1765a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<std::pair<int, int> > expected; 1766a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::Rect center; 1767a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::Rect consider; 1768a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::Rect ignore; 1769a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1770a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Ignore contains, but is not equal to, consider and center. 1771116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ignore = gfx::Rect(15, 0, 20, 30); 1772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch consider = gfx::Rect(20, 10, 10, 20); 1773116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(25, 0, 5, 5); 1774a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1775a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1776a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1777a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1778a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| . * 1779a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| . . 1780a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| . . 1781a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1782a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1783a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1784a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1785a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Center intersects with consider. 1786a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ignore = gfx::Rect(); 1787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(0, 15, 30, 15); 1788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch consider = gfx::Rect(15, 30); 1789a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1790a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1791a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1792a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1793a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 2 1 1794a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| * * * 1795a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| * * * 1796a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1797a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1798a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1799a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1800a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1801a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1802a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1803a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Consider and ignore are non-intersecting. 1804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ignore = gfx::Rect(5, 30); 1805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch consider = gfx::Rect(25, 0, 5, 30); 1806116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(15, 0, 1, 1); 1807a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1808a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1809a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1810a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1811a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| . * 1 1812a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| . 2 1813a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| . 3 1814a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1815a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1816a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1817a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1818a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1819a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1820a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1821a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1822a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Center intersects with ignore. 1823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch consider = gfx::Rect(30, 30); 1824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(15, 0, 1, 30); 1825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ignore = gfx::Rect(0, 15, 30, 1); 1826a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1827a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1828a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1829a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1830a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 3 * 2 1831a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| . * . 1832a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 4 * 1 1833a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1834a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1835a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1836a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1837a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1838a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1839a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1840a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1841a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1842a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Center and ignore are the same. 1843116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch consider = gfx::Rect(30, 30); 1844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(15, 0, 1, 30); 1845a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ignore = center; 1846a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1847a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1848a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1849a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1850a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 4 * 3 1851a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| 5 * 2 1852a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 6 * 1 1853a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1854a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1855a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1856a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1857a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1858a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1859a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1860a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1861a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1862a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1863a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1864a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Empty tiling data. 1865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TilingData empty_data(gfx::Size(0, 0), gfx::Size(0, 0), false); 1866a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1867a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1868a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, empty_data, consider, ignore, center, expected); 1869a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1870a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Empty consider. 1871a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ignore = gfx::Rect(); 1872a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) center = gfx::Rect(1, 1, 1, 1); 1873a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) consider = gfx::Rect(); 1874a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1875a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1876a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1877a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1878a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Empty center. Note: This arbitrarily puts the center to be off the top-left 1879a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // corner. 1880116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch consider = gfx::Rect(30, 30); 1881a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ignore = gfx::Rect(); 1882a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) center = gfx::Rect(); 1883a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1884a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1885a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // * x 0 1 2 1886a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1887a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 0| 1 2 6 1888a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 1| 3 4 5 1889a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // 2| 7 8 9 1890a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1891a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1892a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1893a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1894a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1895a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 1)); 1896a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1897a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1898a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1899a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 2)); 1900a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1901a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1902a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1903a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1904a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Every rect is empty. 1905a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ignore = gfx::Rect(); 1906a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) center = gfx::Rect(); 1907a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) consider = gfx::Rect(); 1908a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1909a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1910a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1911a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1912a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Center is just to the left of cover, and off of the tiling's left side. 1913116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch consider = gfx::Rect(30, 30); 1914a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ignore = gfx::Rect(); 1915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch center = gfx::Rect(-20, 0, 19, 30); 1916a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1917a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Layout of the tiling data, and expected return order: 1918a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // x 0 1 2 1919a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // y.------ 1920a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // *0| 3 6 9 1921a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // *1| 2 5 8 1922a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // *2| 1 4 7 1923a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.clear(); 1924a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1925a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 2)); 1926a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 1)); 1927a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(0, 0)); 1928a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 2)); 1929a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 1)); 1930a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(1, 0)); 1931a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 2)); 1932a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 1)); 1933a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) expected.push_back(std::make_pair(2, 0)); 1934a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1935a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TestSpiralIterate(__LINE__, tiling_data, consider, ignore, center, expected); 1936a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 19370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 19382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 1939a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 19402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 1941