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

Side by Side Diff: cc/tiling_data_unittest.cc

Issue 12472028: Part 1 of cc/ directory shuffles: base (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "cc/tiling_data.h"
6
7 #include "cc/test/geometry_test_utils.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace cc {
11 namespace {
12
13 int NumTiles(
14 gfx::Size max_texture_size,
15 gfx::Size total_size,
16 bool has_border_texels) {
17 TilingData tiling(max_texture_size, total_size, has_border_texels);
18 int num_tiles = tiling.num_tiles_x() * tiling.num_tiles_y();
19
20 // Assert no overflow.
21 EXPECT_GE(num_tiles, 0);
22 if (num_tiles > 0)
23 EXPECT_EQ(num_tiles / tiling.num_tiles_x(), tiling.num_tiles_y());
24
25 return num_tiles;
26 }
27
28 int XIndex(
29 gfx::Size max_texture_size,
30 gfx::Size total_size,
31 bool has_border_texels,
32 int x_coord) {
33 TilingData tiling(max_texture_size, total_size, has_border_texels);
34 return tiling.TileXIndexFromSrcCoord(x_coord);
35 }
36
37 int YIndex(
38 gfx::Size max_texture_size,
39 gfx::Size total_size,
40 bool has_border_texels,
41 int y_coord) {
42 TilingData tiling(max_texture_size, total_size, has_border_texels);
43 return tiling.TileYIndexFromSrcCoord(y_coord);
44 }
45
46 int MinBorderXIndex(
47 gfx::Size max_texture_size,
48 gfx::Size total_size,
49 bool has_border_texels,
50 int x_coord) {
51 TilingData tiling(max_texture_size, total_size, has_border_texels);
52 return tiling.FirstBorderTileXIndexFromSrcCoord(x_coord);
53 }
54
55 int MinBorderYIndex(
56 gfx::Size max_texture_size,
57 gfx::Size total_size,
58 bool has_border_texels,
59 int y_coord) {
60 TilingData tiling(max_texture_size, total_size, has_border_texels);
61 return tiling.FirstBorderTileYIndexFromSrcCoord(y_coord);
62 }
63
64 int MaxBorderXIndex(
65 gfx::Size max_texture_size,
66 gfx::Size total_size,
67 bool has_border_texels,
68 int x_coord) {
69 TilingData tiling(max_texture_size, total_size, has_border_texels);
70 return tiling.LastBorderTileXIndexFromSrcCoord(x_coord);
71 }
72
73 int MaxBorderYIndex(
74 gfx::Size max_texture_size,
75 gfx::Size total_size,
76 bool has_border_texels,
77 int y_coord) {
78 TilingData tiling(max_texture_size, total_size, has_border_texels);
79 return tiling.LastBorderTileYIndexFromSrcCoord(y_coord);
80 }
81
82 int PosX(
83 gfx::Size max_texture_size,
84 gfx::Size total_size,
85 bool has_border_texels,
86 int x_index) {
87 TilingData tiling(max_texture_size, total_size, has_border_texels);
88 return tiling.TilePositionX(x_index);
89 }
90
91 int PosY(
92 gfx::Size max_texture_size,
93 gfx::Size total_size,
94 bool has_border_texels,
95 int y_index) {
96 TilingData tiling(max_texture_size, total_size, has_border_texels);
97 return tiling.TilePositionY(y_index);
98 }
99
100 int SizeX(
101 gfx::Size max_texture_size,
102 gfx::Size total_size,
103 bool has_border_texels,
104 int x_index) {
105 TilingData tiling(max_texture_size, total_size, has_border_texels);
106 return tiling.TileSizeX(x_index);
107 }
108
109 int SizeY(
110 gfx::Size max_texture_size,
111 gfx::Size total_size,
112 bool has_border_texels,
113 int y_index) {
114 TilingData tiling(max_texture_size, total_size, has_border_texels);
115 return tiling.TileSizeY(y_index);
116 }
117
118 TEST(TilingDataTest, numTiles_NoTiling)
119 {
120 EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(16, 16), false));
121 EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(15, 15), true));
122 EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(16, 16), true));
123 EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(1, 16), false));
124 EXPECT_EQ(1, NumTiles(gfx::Size(15, 15), gfx::Size(15, 15), true));
125 EXPECT_EQ(1, NumTiles(gfx::Size(32, 16), gfx::Size(32, 16), false));
126 EXPECT_EQ(1, NumTiles(gfx::Size(32, 16), gfx::Size(32, 16), true));
127 }
128
129 TEST(TilingDataTest, numTiles_TilingNoBorders)
130 {
131 EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(0, 0), false));
132 EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(4, 0), false));
133 EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(0, 4), false));
134 EXPECT_EQ(0, NumTiles(gfx::Size(4, 4), gfx::Size(4, 0), false));
135 EXPECT_EQ(0, NumTiles(gfx::Size(4, 4), gfx::Size(0, 4), false));
136 EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(1, 1), false));
137
138 EXPECT_EQ(1, NumTiles(gfx::Size(1, 1), gfx::Size(1, 1), false));
139 EXPECT_EQ(2, NumTiles(gfx::Size(1, 1), gfx::Size(1, 2), false));
140 EXPECT_EQ(2, NumTiles(gfx::Size(1, 1), gfx::Size(2, 1), false));
141 EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(1, 1), false));
142 EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(1, 2), false));
143 EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(2, 1), false));
144 EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(2, 2), false));
145 EXPECT_EQ(1, NumTiles(gfx::Size(3, 3), gfx::Size(3, 3), false));
146
147 EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(1, 4), false));
148 EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(2, 4), false));
149 EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(3, 4), false));
150 EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(4, 4), false));
151 EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(5, 4), false));
152 EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(6, 4), false));
153 EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(7, 4), false));
154 EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(8, 4), false));
155 EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(9, 4), false));
156 EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(10, 4), false));
157 EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(11, 4), false));
158
159 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(1, 5), false));
160 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(2, 5), false));
161 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(3, 5), false));
162 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(4, 5), false));
163 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(5, 5), false));
164 EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(6, 5), false));
165 EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(7, 5), false));
166 EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(8, 5), false));
167 EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(9, 5), false));
168 EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(10, 5), false));
169 EXPECT_EQ(3, NumTiles(gfx::Size(5, 5), gfx::Size(11, 5), false));
170
171 EXPECT_EQ(1, NumTiles(gfx::Size(16, 16), gfx::Size(16, 16), false));
172 EXPECT_EQ(1, NumTiles(gfx::Size(17, 17), gfx::Size(16, 16), false));
173 EXPECT_EQ(4, NumTiles(gfx::Size(15, 15), gfx::Size(16, 16), false));
174 EXPECT_EQ(4, NumTiles(gfx::Size(8, 8), gfx::Size(16, 16), false));
175 EXPECT_EQ(6, NumTiles(gfx::Size(8, 8), gfx::Size(17, 16), false));
176
177 EXPECT_EQ(8, NumTiles(gfx::Size(5, 8), gfx::Size(17, 16), false));
178 }
179
180 TEST(TilingDataTest, numTiles_TilingWithBorders)
181 {
182 EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(0, 0), true));
183 EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(4, 0), true));
184 EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(0, 4), true));
185 EXPECT_EQ(0, NumTiles(gfx::Size(4, 4), gfx::Size(4, 0), true));
186 EXPECT_EQ(0, NumTiles(gfx::Size(4, 4), gfx::Size(0, 4), true));
187 EXPECT_EQ(0, NumTiles(gfx::Size(0, 0), gfx::Size(1, 1), true));
188
189 EXPECT_EQ(1, NumTiles(gfx::Size(1, 1), gfx::Size(1, 1), true));
190 EXPECT_EQ(0, NumTiles(gfx::Size(1, 1), gfx::Size(1, 2), true));
191 EXPECT_EQ(0, NumTiles(gfx::Size(1, 1), gfx::Size(2, 1), true));
192 EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(1, 1), true));
193 EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(1, 2), true));
194 EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(2, 1), true));
195 EXPECT_EQ(1, NumTiles(gfx::Size(2, 2), gfx::Size(2, 2), true));
196
197 EXPECT_EQ(1, NumTiles(gfx::Size(3, 3), gfx::Size(1, 3), true));
198 EXPECT_EQ(1, NumTiles(gfx::Size(3, 3), gfx::Size(2, 3), true));
199 EXPECT_EQ(1, NumTiles(gfx::Size(3, 3), gfx::Size(3, 3), true));
200 EXPECT_EQ(2, NumTiles(gfx::Size(3, 3), gfx::Size(4, 3), true));
201 EXPECT_EQ(3, NumTiles(gfx::Size(3, 3), gfx::Size(5, 3), true));
202 EXPECT_EQ(4, NumTiles(gfx::Size(3, 3), gfx::Size(6, 3), true));
203 EXPECT_EQ(5, NumTiles(gfx::Size(3, 3), gfx::Size(7, 3), true));
204
205 EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(1, 4), true));
206 EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(2, 4), true));
207 EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(3, 4), true));
208 EXPECT_EQ(1, NumTiles(gfx::Size(4, 4), gfx::Size(4, 4), true));
209 EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(5, 4), true));
210 EXPECT_EQ(2, NumTiles(gfx::Size(4, 4), gfx::Size(6, 4), true));
211 EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(7, 4), true));
212 EXPECT_EQ(3, NumTiles(gfx::Size(4, 4), gfx::Size(8, 4), true));
213 EXPECT_EQ(4, NumTiles(gfx::Size(4, 4), gfx::Size(9, 4), true));
214 EXPECT_EQ(4, NumTiles(gfx::Size(4, 4), gfx::Size(10, 4), true));
215 EXPECT_EQ(5, NumTiles(gfx::Size(4, 4), gfx::Size(11, 4), true));
216
217 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(1, 5), true));
218 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(2, 5), true));
219 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(3, 5), true));
220 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(4, 5), true));
221 EXPECT_EQ(1, NumTiles(gfx::Size(5, 5), gfx::Size(5, 5), true));
222 EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(6, 5), true));
223 EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(7, 5), true));
224 EXPECT_EQ(2, NumTiles(gfx::Size(5, 5), gfx::Size(8, 5), true));
225 EXPECT_EQ(3, NumTiles(gfx::Size(5, 5), gfx::Size(9, 5), true));
226 EXPECT_EQ(3, NumTiles(gfx::Size(5, 5), gfx::Size(10, 5), true));
227 EXPECT_EQ(3, NumTiles(gfx::Size(5, 5), gfx::Size(11, 5), true));
228
229 EXPECT_EQ(30, NumTiles(gfx::Size(8, 5), gfx::Size(16, 32), true));
230 }
231
232 TEST(TilingDataTest, tileXIndexFromSrcCoord)
233 {
234 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0));
235 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1));
236 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2));
237 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3));
238 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4));
239 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5));
240 EXPECT_EQ(2, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6));
241 EXPECT_EQ(2, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7));
242 EXPECT_EQ(2, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8));
243 EXPECT_EQ(3, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9));
244 EXPECT_EQ(3, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10));
245 EXPECT_EQ(3, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11));
246
247 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0));
248 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1));
249 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2));
250 EXPECT_EQ(2, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3));
251 EXPECT_EQ(3, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4));
252 EXPECT_EQ(4, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5));
253 EXPECT_EQ(5, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6));
254 EXPECT_EQ(6, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7));
255 EXPECT_EQ(7, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8));
256 EXPECT_EQ(7, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9));
257 EXPECT_EQ(7, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10));
258 EXPECT_EQ(7, XIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11));
259
260 EXPECT_EQ(0, XIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0));
261 EXPECT_EQ(0, XIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0));
262 EXPECT_EQ(0, XIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1));
263 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0));
264 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1));
265 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2));
266
267 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 0));
268 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 1));
269 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 2));
270 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 3));
271
272 EXPECT_EQ(0, XIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0));
273 EXPECT_EQ(0, XIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0));
274 EXPECT_EQ(0, XIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1));
275 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
276 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
277 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
278
279 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 0));
280 EXPECT_EQ(0, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 1));
281 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 2));
282 EXPECT_EQ(1, XIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 3));
283 }
284
285 TEST(TilingDataTest, firstBorderTileXIndexFromSrcCoord)
286 {
287 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0));
288 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1));
289 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2));
290 EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3));
291 EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4));
292 EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5));
293 EXPECT_EQ(2, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6));
294 EXPECT_EQ(2, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7));
295 EXPECT_EQ(2, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8));
296 EXPECT_EQ(3, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9));
297 EXPECT_EQ(3, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10));
298 EXPECT_EQ(3, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11));
299
300 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0));
301 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1));
302 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2));
303 EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3));
304 EXPECT_EQ(2, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4));
305 EXPECT_EQ(3, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5));
306 EXPECT_EQ(4, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6));
307 EXPECT_EQ(5, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7));
308 EXPECT_EQ(6, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8));
309 EXPECT_EQ(7, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9));
310 EXPECT_EQ(7, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10));
311 EXPECT_EQ(7, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11));
312
313 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0));
314 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0));
315 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1));
316 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0));
317 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1));
318 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2));
319
320 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 0));
321 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 1));
322 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 2));
323 EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 3));
324
325 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0));
326 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0));
327 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1));
328 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
329 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
330 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
331
332 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 0));
333 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 1));
334 EXPECT_EQ(0, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 2));
335 EXPECT_EQ(1, MinBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 3));
336 }
337
338 TEST(TilingDataTest, lastBorderTileXIndexFromSrcCoord)
339 {
340 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0));
341 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1));
342 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2));
343 EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3));
344 EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4));
345 EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5));
346 EXPECT_EQ(2, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6));
347 EXPECT_EQ(2, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7));
348 EXPECT_EQ(2, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8));
349 EXPECT_EQ(3, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9));
350 EXPECT_EQ(3, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10));
351 EXPECT_EQ(3, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11));
352
353 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0));
354 EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1));
355 EXPECT_EQ(2, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2));
356 EXPECT_EQ(3, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3));
357 EXPECT_EQ(4, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4));
358 EXPECT_EQ(5, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5));
359 EXPECT_EQ(6, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6));
360 EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7));
361 EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8));
362 EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9));
363 EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10));
364 EXPECT_EQ(7, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11));
365
366 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0));
367 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0));
368 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1));
369 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0));
370 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1));
371 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2));
372
373 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 0));
374 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 1));
375 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 2));
376 EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), false, 3));
377
378 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0));
379 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0));
380 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1));
381 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
382 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
383 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
384
385 EXPECT_EQ(0, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 0));
386 EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 1));
387 EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 2));
388 EXPECT_EQ(1, MaxBorderXIndex(gfx::Size(3, 3), gfx::Size(4, 3), true, 3));
389 }
390
391 TEST(TilingDataTest, tileYIndexFromSrcCoord)
392 {
393 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0));
394 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1));
395 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2));
396 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3));
397 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4));
398 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5));
399 EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6));
400 EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7));
401 EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8));
402 EXPECT_EQ(3, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9));
403 EXPECT_EQ(3, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10));
404 EXPECT_EQ(3, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11));
405
406 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0));
407 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1));
408 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2));
409 EXPECT_EQ(2, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3));
410 EXPECT_EQ(3, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4));
411 EXPECT_EQ(4, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5));
412 EXPECT_EQ(5, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6));
413 EXPECT_EQ(6, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7));
414 EXPECT_EQ(7, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8));
415 EXPECT_EQ(7, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9));
416 EXPECT_EQ(7, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10));
417 EXPECT_EQ(7, YIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11));
418
419 EXPECT_EQ(0, YIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0));
420 EXPECT_EQ(0, YIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0));
421 EXPECT_EQ(0, YIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1));
422 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0));
423 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1));
424 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2));
425
426 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 0));
427 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 1));
428 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 2));
429 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 3));
430
431 EXPECT_EQ(0, YIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0));
432 EXPECT_EQ(0, YIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0));
433 EXPECT_EQ(0, YIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1));
434 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
435 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
436 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
437
438 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 0));
439 EXPECT_EQ(0, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 1));
440 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 2));
441 EXPECT_EQ(1, YIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 3));
442 }
443
444 TEST(TilingDataTest, firstBorderTileYIndexFromSrcCoord)
445 {
446 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0));
447 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1));
448 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2));
449 EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3));
450 EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4));
451 EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5));
452 EXPECT_EQ(2, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6));
453 EXPECT_EQ(2, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7));
454 EXPECT_EQ(2, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8));
455 EXPECT_EQ(3, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9));
456 EXPECT_EQ(3, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10));
457 EXPECT_EQ(3, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11));
458
459 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0));
460 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1));
461 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2));
462 EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3));
463 EXPECT_EQ(2, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4));
464 EXPECT_EQ(3, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5));
465 EXPECT_EQ(4, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6));
466 EXPECT_EQ(5, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7));
467 EXPECT_EQ(6, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8));
468 EXPECT_EQ(7, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9));
469 EXPECT_EQ(7, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10));
470 EXPECT_EQ(7, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11));
471
472 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0));
473 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0));
474 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1));
475 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0));
476 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1));
477 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2));
478
479 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 0));
480 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 1));
481 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 2));
482 EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 3));
483
484 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0));
485 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0));
486 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1));
487 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
488 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
489 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
490
491 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 0));
492 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 1));
493 EXPECT_EQ(0, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 2));
494 EXPECT_EQ(1, MinBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 3));
495 }
496
497 TEST(TilingDataTest, lastBorderTileYIndexFromSrcCoord)
498 {
499 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 0));
500 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 1));
501 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 2));
502 EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 3));
503 EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 4));
504 EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 5));
505 EXPECT_EQ(2, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 6));
506 EXPECT_EQ(2, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 7));
507 EXPECT_EQ(2, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 8));
508 EXPECT_EQ(3, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 9));
509 EXPECT_EQ(3, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 10));
510 EXPECT_EQ(3, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), false, 11));
511
512 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 0));
513 EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 1));
514 EXPECT_EQ(2, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 2));
515 EXPECT_EQ(3, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 3));
516 EXPECT_EQ(4, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 4));
517 EXPECT_EQ(5, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 5));
518 EXPECT_EQ(6, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 6));
519 EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 7));
520 EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 8));
521 EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 9));
522 EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 10));
523 EXPECT_EQ(7, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(10, 10), true, 11));
524
525 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), false, 0));
526 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 0));
527 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), false, 1));
528 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 0));
529 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 1));
530 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), false, 2));
531
532 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 0));
533 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 1));
534 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 2));
535 EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), false, 3));
536
537 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(1, 1), gfx::Size(1, 1), true, 0));
538 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 0));
539 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(2, 2), gfx::Size(2, 2), true, 1));
540 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 0));
541 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 1));
542 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 3), true, 2));
543
544 EXPECT_EQ(0, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 0));
545 EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 1));
546 EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 2));
547 EXPECT_EQ(1, MaxBorderYIndex(gfx::Size(3, 3), gfx::Size(3, 4), true, 3));
548 }
549
550 TEST(TilingDataTest, tileSizeX)
551 {
552 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(5, 5), false, 0));
553 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(5, 5), true, 0));
554
555 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), false, 0));
556 EXPECT_EQ(1, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), false, 1));
557 EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), true, 0));
558 EXPECT_EQ(2, SizeX(gfx::Size(5, 5), gfx::Size(6, 6), true, 1));
559
560 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(8, 8), false, 0));
561 EXPECT_EQ(3, SizeX(gfx::Size(5, 5), gfx::Size(8, 8), false, 1));
562 EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(8, 8), true, 0));
563 EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(8, 8), true, 1));
564
565 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), false, 0));
566 EXPECT_EQ(5, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), false, 1));
567 EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), true, 0));
568 EXPECT_EQ(3, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), true, 1));
569 EXPECT_EQ(3, SizeX(gfx::Size(5, 5), gfx::Size(10, 10), true, 2));
570
571 EXPECT_EQ(4, SizeX(gfx::Size(5, 5), gfx::Size(11, 11), true, 2));
572 EXPECT_EQ(3, SizeX(gfx::Size(5, 5), gfx::Size(12, 12), true, 2));
573
574 EXPECT_EQ(3, SizeX(gfx::Size(5, 9), gfx::Size(12, 17), true, 2));
575 }
576
577 TEST(TilingDataTest, TileSizeY)
578 {
579 EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(5, 5), false, 0));
580 EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(5, 5), true, 0));
581
582 EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(6, 6), false, 0));
583 EXPECT_EQ(1, SizeY(gfx::Size(5, 5), gfx::Size(6, 6), false, 1));
584 EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(6, 6), true, 0));
585 EXPECT_EQ(2, SizeY(gfx::Size(5, 5), gfx::Size(6, 6), true, 1));
586
587 EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(8, 8), false, 0));
588 EXPECT_EQ(3, SizeY(gfx::Size(5, 5), gfx::Size(8, 8), false, 1));
589 EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(8, 8), true, 0));
590 EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(8, 8), true, 1));
591
592 EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), false, 0));
593 EXPECT_EQ(5, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), false, 1));
594 EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), true, 0));
595 EXPECT_EQ(3, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), true, 1));
596 EXPECT_EQ(3, SizeY(gfx::Size(5, 5), gfx::Size(10, 10), true, 2));
597
598 EXPECT_EQ(4, SizeY(gfx::Size(5, 5), gfx::Size(11, 11), true, 2));
599 EXPECT_EQ(3, SizeY(gfx::Size(5, 5), gfx::Size(12, 12), true, 2));
600
601 EXPECT_EQ(3, SizeY(gfx::Size(9, 5), gfx::Size(17, 12), true, 2));
602 }
603
604 TEST(TilingDataTest, TileSizeX_and_TilePositionX)
605 {
606 // Single tile cases:
607 EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(1, 1), false, 0));
608 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(1, 1), false, 0));
609 EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(1, 100), false, 0));
610 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(1, 100), false, 0));
611 EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(3, 1), false, 0));
612 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(3, 1), false, 0));
613 EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(3, 100), false, 0));
614 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(3, 100), false, 0));
615 EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(1, 1), true, 0));
616 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(1, 1), true, 0));
617 EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(1, 100), true, 0));
618 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(1, 100), true, 0));
619 EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(3, 1), true, 0));
620 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(3, 1), true, 0));
621 EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(3, 100), true, 0));
622 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(3, 100), true, 0));
623
624 // Multiple tiles:
625 // no border
626 // positions 0, 3
627 EXPECT_EQ(2, NumTiles(gfx::Size(3, 3), gfx::Size(6, 1), false));
628 EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), false, 0));
629 EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), false, 1));
630 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(6, 1), false, 0));
631 EXPECT_EQ(3, PosX(gfx::Size(3, 3), gfx::Size(6, 1), false, 1));
632 EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(6, 100), false, 0));
633 EXPECT_EQ(3, SizeX(gfx::Size(3, 3), gfx::Size(6, 100), false, 1));
634 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(6, 100), false, 0));
635 EXPECT_EQ(3, PosX(gfx::Size(3, 3), gfx::Size(6, 100), false, 1));
636
637 // Multiple tiles:
638 // with border
639 // positions 0, 2, 3, 4
640 EXPECT_EQ(4, NumTiles(gfx::Size(3, 3), gfx::Size(6, 1), true));
641 EXPECT_EQ(2, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), true, 0));
642 EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), true, 1));
643 EXPECT_EQ(1, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), true, 2));
644 EXPECT_EQ(2, SizeX(gfx::Size(3, 3), gfx::Size(6, 1), true, 3));
645 EXPECT_EQ(0, PosX(gfx::Size(3, 3), gfx::Size(6, 1), true, 0));
646 EXPECT_EQ(2, PosX(gfx::Size(3, 3), gfx::Size(6, 1), true, 1));
647 EXPECT_EQ(3, PosX(gfx::Size(3, 3), gfx::Size(6, 1), true, 2));
648 EXPECT_EQ(4, PosX(gfx::Size(3, 3), gfx::Size(6, 1), true, 3));
649 EXPECT_EQ(2, SizeX(gfx::Size(3, 7), gfx::Size(6, 100), true, 0));
650 EXPECT_EQ(1, SizeX(gfx::Size(3, 7), gfx::Size(6, 100), true, 1));
651 EXPECT_EQ(1, SizeX(gfx::Size(3, 7), gfx::Size(6, 100), true, 2));
652 EXPECT_EQ(2, SizeX(gfx::Size(3, 7), gfx::Size(6, 100), true, 3));
653 EXPECT_EQ(0, PosX(gfx::Size(3, 7), gfx::Size(6, 100), true, 0));
654 EXPECT_EQ(2, PosX(gfx::Size(3, 7), gfx::Size(6, 100), true, 1));
655 EXPECT_EQ(3, PosX(gfx::Size(3, 7), gfx::Size(6, 100), true, 2));
656 EXPECT_EQ(4, PosX(gfx::Size(3, 7), gfx::Size(6, 100), true, 3));
657 }
658
659 TEST(TilingDataTest, TileSizeY_and_TilePositionY)
660 {
661 // Single tile cases:
662 EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(1, 1), false, 0));
663 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 1), false, 0));
664 EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(100, 1), false, 0));
665 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 1), false, 0));
666 EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(1, 3), false, 0));
667 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 3), false, 0));
668 EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(100, 3), false, 0));
669 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 3), false, 0));
670 EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(1, 1), true, 0));
671 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 1), true, 0));
672 EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(100, 1), true, 0));
673 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 1), true, 0));
674 EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(1, 3), true, 0));
675 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 3), true, 0));
676 EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(100, 3), true, 0));
677 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 3), true, 0));
678
679 // Multiple tiles:
680 // no border
681 // positions 0, 3
682 EXPECT_EQ(2, NumTiles(gfx::Size(3, 3), gfx::Size(1, 6), false));
683 EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), false, 0));
684 EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), false, 1));
685 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 6), false, 0));
686 EXPECT_EQ(3, PosY(gfx::Size(3, 3), gfx::Size(1, 6), false, 1));
687 EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(100, 6), false, 0));
688 EXPECT_EQ(3, SizeY(gfx::Size(3, 3), gfx::Size(100, 6), false, 1));
689 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(100, 6), false, 0));
690 EXPECT_EQ(3, PosY(gfx::Size(3, 3), gfx::Size(100, 6), false, 1));
691
692 // Multiple tiles:
693 // with border
694 // positions 0, 2, 3, 4
695 EXPECT_EQ(4, NumTiles(gfx::Size(3, 3), gfx::Size(1, 6), true));
696 EXPECT_EQ(2, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), true, 0));
697 EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), true, 1));
698 EXPECT_EQ(1, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), true, 2));
699 EXPECT_EQ(2, SizeY(gfx::Size(3, 3), gfx::Size(1, 6), true, 3));
700 EXPECT_EQ(0, PosY(gfx::Size(3, 3), gfx::Size(1, 6), true, 0));
701 EXPECT_EQ(2, PosY(gfx::Size(3, 3), gfx::Size(1, 6), true, 1));
702 EXPECT_EQ(3, PosY(gfx::Size(3, 3), gfx::Size(1, 6), true, 2));
703 EXPECT_EQ(4, PosY(gfx::Size(3, 3), gfx::Size(1, 6), true, 3));
704 EXPECT_EQ(2, SizeY(gfx::Size(7, 3), gfx::Size(100, 6), true, 0));
705 EXPECT_EQ(1, SizeY(gfx::Size(7, 3), gfx::Size(100, 6), true, 1));
706 EXPECT_EQ(1, SizeY(gfx::Size(7, 3), gfx::Size(100, 6), true, 2));
707 EXPECT_EQ(2, SizeY(gfx::Size(7, 3), gfx::Size(100, 6), true, 3));
708 EXPECT_EQ(0, PosY(gfx::Size(7, 3), gfx::Size(100, 6), true, 0));
709 EXPECT_EQ(2, PosY(gfx::Size(7, 3), gfx::Size(100, 6), true, 1));
710 EXPECT_EQ(3, PosY(gfx::Size(7, 3), gfx::Size(100, 6), true, 2));
711 EXPECT_EQ(4, PosY(gfx::Size(7, 3), gfx::Size(100, 6), true, 3));
712 }
713
714 TEST(TilingDataTest, SetTotalSize)
715 {
716 TilingData data(gfx::Size(5, 5), gfx::Size(5, 5), false);
717 EXPECT_EQ(5, data.total_size().width());
718 EXPECT_EQ(5, data.total_size().height());
719 EXPECT_EQ(1, data.num_tiles_x());
720 EXPECT_EQ(5, data.TileSizeX(0));
721 EXPECT_EQ(1, data.num_tiles_y());
722 EXPECT_EQ(5, data.TileSizeY(0));
723
724 data.SetTotalSize(gfx::Size(6, 5));
725 EXPECT_EQ(6, data.total_size().width());
726 EXPECT_EQ(5, data.total_size().height());
727 EXPECT_EQ(2, data.num_tiles_x());
728 EXPECT_EQ(5, data.TileSizeX(0));
729 EXPECT_EQ(1, data.TileSizeX(1));
730 EXPECT_EQ(1, data.num_tiles_y());
731 EXPECT_EQ(5, data.TileSizeY(0));
732
733 data.SetTotalSize(gfx::Size(5, 12));
734 EXPECT_EQ(5, data.total_size().width());
735 EXPECT_EQ(12, data.total_size().height());
736 EXPECT_EQ(1, data.num_tiles_x());
737 EXPECT_EQ(5, data.TileSizeX(0));
738 EXPECT_EQ(3, data.num_tiles_y());
739 EXPECT_EQ(5, data.TileSizeY(0));
740 EXPECT_EQ(5, data.TileSizeY(1));
741 EXPECT_EQ(2, data.TileSizeY(2));
742 }
743
744 TEST(TilingDataTest, SetMaxTextureSizeNoBorders)
745 {
746 TilingData data(gfx::Size(8, 8), gfx::Size(16, 32), false);
747 EXPECT_EQ(2, data.num_tiles_x());
748 EXPECT_EQ(4, data.num_tiles_y());
749
750 data.SetMaxTextureSize(gfx::Size(32, 32));
751 EXPECT_EQ(gfx::Size(32, 32), data.max_texture_size());
752 EXPECT_EQ(1, data.num_tiles_x());
753 EXPECT_EQ(1, data.num_tiles_y());
754
755 data.SetMaxTextureSize(gfx::Size(2, 2));
756 EXPECT_EQ(gfx::Size(2, 2), data.max_texture_size());
757 EXPECT_EQ(8, data.num_tiles_x());
758 EXPECT_EQ(16, data.num_tiles_y());
759
760 data.SetMaxTextureSize(gfx::Size(5, 5));
761 EXPECT_EQ(gfx::Size(5, 5), data.max_texture_size());
762 EXPECT_EQ(4, data.num_tiles_x());
763 EXPECT_EQ(7, data.num_tiles_y());
764
765 data.SetMaxTextureSize(gfx::Size(8, 5));
766 EXPECT_EQ(gfx::Size(8, 5), data.max_texture_size());
767 EXPECT_EQ(2, data.num_tiles_x());
768 EXPECT_EQ(7, data.num_tiles_y());
769 }
770
771 TEST(TilingDataTest, SetMaxTextureSizeBorders)
772 {
773 TilingData data(gfx::Size(8, 8), gfx::Size(16, 32), true);
774 EXPECT_EQ(3, data.num_tiles_x());
775 EXPECT_EQ(5, data.num_tiles_y());
776
777 data.SetMaxTextureSize(gfx::Size(32, 32));
778 EXPECT_EQ(gfx::Size(32, 32), data.max_texture_size());
779 EXPECT_EQ(1, data.num_tiles_x());
780 EXPECT_EQ(1, data.num_tiles_y());
781
782 data.SetMaxTextureSize(gfx::Size(2, 2));
783 EXPECT_EQ(gfx::Size(2, 2), data.max_texture_size());
784 EXPECT_EQ(0, data.num_tiles_x());
785 EXPECT_EQ(0, data.num_tiles_y());
786
787 data.SetMaxTextureSize(gfx::Size(5, 5));
788 EXPECT_EQ(gfx::Size(5, 5), data.max_texture_size());
789 EXPECT_EQ(5, data.num_tiles_x());
790 EXPECT_EQ(10, data.num_tiles_y());
791
792 data.SetMaxTextureSize(gfx::Size(8, 5));
793 EXPECT_EQ(gfx::Size(8, 5), data.max_texture_size());
794 EXPECT_EQ(3, data.num_tiles_x());
795 EXPECT_EQ(10, data.num_tiles_y());
796 }
797
798 TEST(TilingDataTest, assignment)
799 {
800 {
801 TilingData source(gfx::Size(8, 8), gfx::Size(16, 32), true);
802 TilingData dest = source;
803 EXPECT_EQ(source.border_texels(), dest.border_texels());
804 EXPECT_EQ(source.max_texture_size(), dest.max_texture_size());
805 EXPECT_EQ(source.num_tiles_x(), dest.num_tiles_x());
806 EXPECT_EQ(source.num_tiles_y(), dest.num_tiles_y());
807 EXPECT_EQ(source.total_size().width(), dest.total_size().width());
808 EXPECT_EQ(source.total_size().height(), dest.total_size().height());
809 }
810 {
811 TilingData source(gfx::Size(7, 3), gfx::Size(6, 100), false);
812 TilingData dest(source);
813 EXPECT_EQ(source.border_texels(), dest.border_texels());
814 EXPECT_EQ(source.max_texture_size(), dest.max_texture_size());
815 EXPECT_EQ(source.num_tiles_x(), dest.num_tiles_x());
816 EXPECT_EQ(source.num_tiles_y(), dest.num_tiles_y());
817 EXPECT_EQ(source.total_size().width(), dest.total_size().width());
818 EXPECT_EQ(source.total_size().height(), dest.total_size().height());
819 }
820 }
821
822 TEST(TilingDataTest, setBorderTexels)
823 {
824 TilingData data(gfx::Size(8, 8), gfx::Size(16, 32), false);
825 EXPECT_EQ(2, data.num_tiles_x());
826 EXPECT_EQ(4, data.num_tiles_y());
827
828 data.SetHasBorderTexels(true);
829 EXPECT_EQ(3, data.num_tiles_x());
830 EXPECT_EQ(5, data.num_tiles_y());
831
832 data.SetHasBorderTexels(true);
833 EXPECT_EQ(3, data.num_tiles_x());
834 EXPECT_EQ(5, data.num_tiles_y());
835
836 data.SetHasBorderTexels(false);
837 EXPECT_EQ(2, data.num_tiles_x());
838 EXPECT_EQ(4, data.num_tiles_y());
839 }
840
841 TEST(TilingDataTest, largeBorders)
842 {
843 TilingData data(gfx::Size(100, 80), gfx::Size(200, 145), 30);
844 EXPECT_EQ(30, data.border_texels());
845
846 EXPECT_EQ(70, data.TileSizeX(0));
847 EXPECT_EQ(40, data.TileSizeX(1));
848 EXPECT_EQ(40, data.TileSizeX(2));
849 EXPECT_EQ(50, data.TileSizeX(3));
850 EXPECT_EQ(4, data.num_tiles_x());
851
852 EXPECT_EQ(50, data.TileSizeY(0));
853 EXPECT_EQ(20, data.TileSizeY(1));
854 EXPECT_EQ(20, data.TileSizeY(2));
855 EXPECT_EQ(20, data.TileSizeY(3));
856 EXPECT_EQ(35, data.TileSizeY(4));
857 EXPECT_EQ(5, data.num_tiles_y());
858
859 EXPECT_RECT_EQ(gfx::Rect(0, 0, 70, 50), data.TileBounds(0, 0));
860 EXPECT_RECT_EQ(gfx::Rect(70, 50, 40, 20), data.TileBounds(1, 1));
861 EXPECT_RECT_EQ(gfx::Rect(110, 110, 40, 35), data.TileBounds(2, 4));
862 EXPECT_RECT_EQ(gfx::Rect(150, 70, 50, 20), data.TileBounds(3, 2));
863 EXPECT_RECT_EQ(gfx::Rect(150, 110, 50, 35), data.TileBounds(3, 4));
864
865 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 80), data.TileBoundsWithBorder(0, 0));
866 EXPECT_RECT_EQ(gfx::Rect(40, 20, 100, 80), data.TileBoundsWithBorder(1, 1));
867 EXPECT_RECT_EQ(gfx::Rect(80, 80, 100, 65), data.TileBoundsWithBorder(2, 4));
868 EXPECT_RECT_EQ(gfx::Rect(120, 40, 80, 80), data.TileBoundsWithBorder(3, 2));
869 EXPECT_RECT_EQ(gfx::Rect(120, 80, 80, 65), data.TileBoundsWithBorder(3, 4));
870
871 EXPECT_EQ(0, data.TileXIndexFromSrcCoord(0));
872 EXPECT_EQ(0, data.TileXIndexFromSrcCoord(69));
873 EXPECT_EQ(1, data.TileXIndexFromSrcCoord(70));
874 EXPECT_EQ(1, data.TileXIndexFromSrcCoord(109));
875 EXPECT_EQ(2, data.TileXIndexFromSrcCoord(110));
876 EXPECT_EQ(2, data.TileXIndexFromSrcCoord(149));
877 EXPECT_EQ(3, data.TileXIndexFromSrcCoord(150));
878 EXPECT_EQ(3, data.TileXIndexFromSrcCoord(199));
879
880 EXPECT_EQ(0, data.TileYIndexFromSrcCoord(0));
881 EXPECT_EQ(0, data.TileYIndexFromSrcCoord(49));
882 EXPECT_EQ(1, data.TileYIndexFromSrcCoord(50));
883 EXPECT_EQ(1, data.TileYIndexFromSrcCoord(69));
884 EXPECT_EQ(2, data.TileYIndexFromSrcCoord(70));
885 EXPECT_EQ(2, data.TileYIndexFromSrcCoord(89));
886 EXPECT_EQ(3, data.TileYIndexFromSrcCoord(90));
887 EXPECT_EQ(3, data.TileYIndexFromSrcCoord(109));
888 EXPECT_EQ(4, data.TileYIndexFromSrcCoord(110));
889 EXPECT_EQ(4, data.TileYIndexFromSrcCoord(144));
890
891 EXPECT_EQ(0, data.FirstBorderTileXIndexFromSrcCoord(0));
892 EXPECT_EQ(0, data.FirstBorderTileXIndexFromSrcCoord(99));
893 EXPECT_EQ(1, data.FirstBorderTileXIndexFromSrcCoord(100));
894 EXPECT_EQ(1, data.FirstBorderTileXIndexFromSrcCoord(139));
895 EXPECT_EQ(2, data.FirstBorderTileXIndexFromSrcCoord(140));
896 EXPECT_EQ(2, data.FirstBorderTileXIndexFromSrcCoord(179));
897 EXPECT_EQ(3, data.FirstBorderTileXIndexFromSrcCoord(180));
898 EXPECT_EQ(3, data.FirstBorderTileXIndexFromSrcCoord(199));
899
900 EXPECT_EQ(0, data.FirstBorderTileYIndexFromSrcCoord(0));
901 EXPECT_EQ(0, data.FirstBorderTileYIndexFromSrcCoord(79));
902 EXPECT_EQ(1, data.FirstBorderTileYIndexFromSrcCoord(80));
903 EXPECT_EQ(1, data.FirstBorderTileYIndexFromSrcCoord(99));
904 EXPECT_EQ(2, data.FirstBorderTileYIndexFromSrcCoord(100));
905 EXPECT_EQ(2, data.FirstBorderTileYIndexFromSrcCoord(119));
906 EXPECT_EQ(3, data.FirstBorderTileYIndexFromSrcCoord(120));
907 EXPECT_EQ(3, data.FirstBorderTileYIndexFromSrcCoord(139));
908 EXPECT_EQ(4, data.FirstBorderTileYIndexFromSrcCoord(140));
909 EXPECT_EQ(4, data.FirstBorderTileYIndexFromSrcCoord(144));
910
911 EXPECT_EQ(0, data.LastBorderTileXIndexFromSrcCoord(0));
912 EXPECT_EQ(0, data.LastBorderTileXIndexFromSrcCoord(39));
913 EXPECT_EQ(1, data.LastBorderTileXIndexFromSrcCoord(40));
914 EXPECT_EQ(1, data.LastBorderTileXIndexFromSrcCoord(79));
915 EXPECT_EQ(2, data.LastBorderTileXIndexFromSrcCoord(80));
916 EXPECT_EQ(2, data.LastBorderTileXIndexFromSrcCoord(119));
917 EXPECT_EQ(3, data.LastBorderTileXIndexFromSrcCoord(120));
918 EXPECT_EQ(3, data.LastBorderTileXIndexFromSrcCoord(199));
919
920 EXPECT_EQ(0, data.LastBorderTileYIndexFromSrcCoord(0));
921 EXPECT_EQ(0, data.LastBorderTileYIndexFromSrcCoord(19));
922 EXPECT_EQ(1, data.LastBorderTileYIndexFromSrcCoord(20));
923 EXPECT_EQ(1, data.LastBorderTileYIndexFromSrcCoord(39));
924 EXPECT_EQ(2, data.LastBorderTileYIndexFromSrcCoord(40));
925 EXPECT_EQ(2, data.LastBorderTileYIndexFromSrcCoord(59));
926 EXPECT_EQ(3, data.LastBorderTileYIndexFromSrcCoord(60));
927 EXPECT_EQ(3, data.LastBorderTileYIndexFromSrcCoord(79));
928 EXPECT_EQ(4, data.LastBorderTileYIndexFromSrcCoord(80));
929 EXPECT_EQ(4, data.LastBorderTileYIndexFromSrcCoord(144));
930 }
931
932 void TestIterate(
933 const TilingData& data,
934 gfx::Rect rect,
935 int expect_left,
936 int expect_top,
937 int expect_right,
938 int expect_bottom) {
939
940 EXPECT_GE(expect_left, 0);
941 EXPECT_GE(expect_top, 0);
942 EXPECT_LT(expect_right, data.num_tiles_x());
943 EXPECT_LT(expect_bottom, data.num_tiles_y());
944
945 std::vector<std::pair<int, int> > original_expected;
946 for (int x = 0; x < data.num_tiles_x(); ++x) {
947 for (int y = 0; y < data.num_tiles_y(); ++y) {
948 gfx::Rect bounds = data.TileBoundsWithBorder(x, y);
949 if (x >= expect_left && x <= expect_right &&
950 y >= expect_top && y <= expect_bottom) {
951 EXPECT_TRUE(bounds.Intersects(rect));
952 original_expected.push_back(std::make_pair(x, y));
953 } else {
954 EXPECT_FALSE(bounds.Intersects(rect));
955 }
956 }
957 }
958
959 // Verify with vanilla iterator.
960 {
961 std::vector<std::pair<int, int> > expected = original_expected;
962 for (TilingData::Iterator iter(&data, rect); iter; ++iter) {
963 bool found = false;
964 for (size_t i = 0; i < expected.size(); ++i) {
965 if (expected[i] == iter.index()) {
966 expected[i] = expected.back();
967 expected.pop_back();
968 found = true;
969 break;
970 }
971 }
972 EXPECT_TRUE(found);
973 }
974 EXPECT_EQ(0, expected.size());
975 }
976
977 // Make sure this also works with a difference iterator and an empty ignore.
978 {
979 std::vector<std::pair<int, int> > expected = original_expected;
980 for (TilingData::DifferenceIterator iter(&data, rect, gfx::Rect());
981 iter; ++iter) {
982 bool found = false;
983 for (size_t i = 0; i < expected.size(); ++i) {
984 if (expected[i] == iter.index()) {
985 expected[i] = expected.back();
986 expected.pop_back();
987 found = true;
988 break;
989 }
990 }
991 EXPECT_TRUE(found);
992 }
993 EXPECT_EQ(0, expected.size());
994 }
995 }
996
997 TEST(TilingDataTest, iteratorNoBorderTexels)
998 {
999 TilingData data(gfx::Size(10, 10), gfx::Size(40, 25), false);
1000 // X border index by src coord: [0-10), [10-20), [20, 30), [30, 40)
1001 // Y border index by src coord: [0-10), [10-20), [20, 25)
1002 TestIterate(data, gfx::Rect(0, 0, 40, 25), 0, 0, 3, 2);
1003 TestIterate(data, gfx::Rect(15, 15, 8, 8), 1, 1, 2, 2);
1004
1005 // Oversized.
1006 TestIterate(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 3, 2);
1007 TestIterate(data, gfx::Rect(-100, 20, 1000, 1), 0, 2, 3, 2);
1008 TestIterate(data, gfx::Rect(29, -100, 31, 1000), 2, 0, 3, 2);
1009 // Nonintersecting.
1010 TestIterate(data, gfx::Rect(60, 80, 100, 100), 0, 0, -1, -1);
1011 }
1012
1013 TEST(TilingDataTest, iteratorOneBorderTexel)
1014 {
1015 TilingData data(gfx::Size(10, 20), gfx::Size(25, 45), true);
1016 // X border index by src coord: [0-10), [8-18), [16-25)
1017 // Y border index by src coord: [0-20), [18-38), [36-45)
1018 TestIterate(data, gfx::Rect(0, 0, 25, 45), 0, 0, 2, 2);
1019 TestIterate(data, gfx::Rect(18, 19, 3, 17), 2, 0, 2, 1);
1020 TestIterate(data, gfx::Rect(10, 20, 6, 16), 1, 1, 1, 1);
1021 TestIterate(data, gfx::Rect(9, 19, 8, 18), 0, 0, 2, 2);
1022
1023 // Oversized.
1024 TestIterate(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 2, 2);
1025 TestIterate(data, gfx::Rect(-100, 20, 1000, 1), 0, 1, 2, 1);
1026 TestIterate(data, gfx::Rect(18, -100, 6, 1000), 2, 0, 2, 2);
1027 // Nonintersecting.
1028 TestIterate(data, gfx::Rect(60, 80, 100, 100), 0, 0, -1, -1);
1029 }
1030
1031 TEST(TilingDataTest, iteratorManyBorderTexels)
1032 {
1033 TilingData data(gfx::Size(50, 60), gfx::Size(65, 110), 20);
1034 // X border index by src coord: [0-50), [10-60), [20-65)
1035 // Y border index by src coord: [0-60), [20-80), [40-100), [60-110)
1036 TestIterate(data, gfx::Rect(0, 0, 65, 110), 0, 0, 2, 3);
1037 TestIterate(data, gfx::Rect(50, 60, 15, 65), 1, 1, 2, 3);
1038 TestIterate(data, gfx::Rect(60, 30, 2, 10), 2, 0, 2, 1);
1039
1040 // Oversized.
1041 TestIterate(data, gfx::Rect(-100, -100, 1000, 1000), 0, 0, 2, 3);
1042 TestIterate(data, gfx::Rect(-100, 10, 1000, 10), 0, 0, 2, 0);
1043 TestIterate(data, gfx::Rect(10, -100, 10, 1000), 0, 0, 1, 3);
1044 // Nonintersecting.
1045 TestIterate(data, gfx::Rect(65, 110, 100, 100), 0, 0, -1, -1);
1046 }
1047
1048 TEST(TilingDataTest, iteratorOneTile)
1049 {
1050 TilingData no_border(gfx::Size(1000, 1000), gfx::Size(30, 40), false);
1051 TestIterate(no_border, gfx::Rect(0, 0, 30, 40), 0, 0, 0, 0);
1052 TestIterate(no_border, gfx::Rect(10, 10, 20, 20), 0, 0, 0, 0);
1053 TestIterate(no_border, gfx::Rect(30, 40, 100, 100), 0, 0, -1, -1);
1054
1055 TilingData one_border(gfx::Size(1000, 1000), gfx::Size(30, 40), true);
1056 TestIterate(one_border, gfx::Rect(0, 0, 30, 40), 0, 0, 0, 0);
1057 TestIterate(one_border, gfx::Rect(10, 10, 20, 20), 0, 0, 0, 0);
1058 TestIterate(one_border, gfx::Rect(30, 40, 100, 100), 0, 0, -1, -1);
1059
1060 TilingData big_border(gfx::Size(1000, 1000), gfx::Size(30, 40), 50);
1061 TestIterate(big_border, gfx::Rect(0, 0, 30, 40), 0, 0, 0, 0);
1062 TestIterate(big_border, gfx::Rect(10, 10, 20, 20), 0, 0, 0, 0);
1063 TestIterate(big_border, gfx::Rect(30, 40, 100, 100), 0, 0, -1, -1);
1064 }
1065
1066 TEST(TilingDataTest, iteratorNoTiles)
1067 {
1068 TilingData data(gfx::Size(100, 100), gfx::Size(), false);
1069 TestIterate(data, gfx::Rect(0, 0, 100, 100), 0, 0, -1, -1);
1070 }
1071
1072 void TestDiff(
1073 const TilingData& data,
1074 gfx::Rect consider,
1075 gfx::Rect ignore,
1076 size_t num_tiles) {
1077
1078 std::vector<std::pair<int, int> > expected;
1079 for (int y = 0; y < data.num_tiles_y(); ++y) {
1080 for (int x = 0; x < data.num_tiles_x(); ++x) {
1081 gfx::Rect bounds = data.TileBoundsWithBorder(x, y);
1082 if (bounds.Intersects(consider) && !bounds.Intersects(ignore))
1083 expected.push_back(std::make_pair(x, y));
1084 }
1085 }
1086
1087 // Sanity check the test.
1088 EXPECT_EQ(num_tiles, expected.size());
1089
1090 for (TilingData::DifferenceIterator iter(&data, consider, ignore);
1091 iter; ++iter) {
1092 bool found = false;
1093 for (size_t i = 0; i < expected.size(); ++i) {
1094 if (expected[i] == iter.index()) {
1095 expected[i] = expected.back();
1096 expected.pop_back();
1097 found = true;
1098 break;
1099 }
1100 }
1101 EXPECT_TRUE(found);
1102 }
1103 EXPECT_EQ(0, expected.size());
1104 }
1105
1106 TEST(TilingDataTest, differenceIteratorIgnoreGeometry)
1107 {
1108 // This test is checking that the iterator can handle different geometries of
1109 // ignore rects relative to the consider rect. The consider rect indices
1110 // themselves are mostly tested by the non-difference iterator tests, so the
1111 // full rect is mostly used here for simplicity.
1112
1113 // X border index by src coord: [0-10), [10-20), [20, 30), [30, 40)
1114 // Y border index by src coord: [0-10), [10-20), [20, 25)
1115 TilingData data(gfx::Size(10, 10), gfx::Size(40, 25), false);
1116
1117 // Fully ignored
1118 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(0, 0, 40, 25), 0);
1119 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(-100, -100, 200, 200), 0);
1120 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(9, 9, 30, 15), 0);
1121 TestDiff(data, gfx::Rect(15, 15, 8, 8), gfx::Rect(15, 15, 8, 8), 0);
1122
1123 // Fully un-ignored
1124 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(-30, -20, 8, 8), 12);
1125 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(), 12);
1126
1127 // Top left, remove 2x2 tiles
1128 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(0, 0, 20, 19), 8);
1129 // Bottom right, remove 2x2 tiles
1130 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(20, 15, 20, 6), 8);
1131 // Bottom left, remove 2x2 tiles
1132 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(0, 15, 20, 6), 8);
1133 // Top right, remove 2x2 tiles
1134 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(20, 0, 20, 19), 8);
1135 // Center, remove only one tile
1136 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(10, 10, 5, 5), 11);
1137
1138 // Left column, flush left, removing two columns
1139 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(0, 0, 11, 25), 6);
1140 // Middle column, removing two columns
1141 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(11, 0, 11, 25), 6);
1142 // Right column, flush right, removing one column
1143 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(30, 0, 2, 25), 9);
1144
1145 // Top row, flush top, removing one row
1146 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(0, 5, 40, 5), 8);
1147 // Middle row, removing one row
1148 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(0, 13, 40, 5), 8);
1149 // Bottom row, flush bottom, removing two rows
1150 TestDiff(data, gfx::Rect(0, 0, 40, 25), gfx::Rect(0, 13, 40, 12), 4);
1151
1152 // Non-intersecting, but still touching two of the same tiles.
1153 TestDiff(data, gfx::Rect(8, 0, 32, 25), gfx::Rect(0, 12, 5, 12), 10);
1154
1155 // Intersecting, but neither contains the other. 2x3 with one overlap.
1156 TestDiff(data, gfx::Rect(5, 2, 20, 10), gfx::Rect(25, 15, 5, 10), 5);
1157 }
1158
1159 TEST(TilingDataTest, differenceIteratorManyBorderTexels)
1160 {
1161 // X border index by src coord: [0-50), [10-60), [20-65)
1162 // Y border index by src coord: [0-60), [20-80), [40-100), [60-110)
1163 TilingData data(gfx::Size(50, 60), gfx::Size(65, 110), 20);
1164
1165 // Ignore one column, three rows
1166 TestDiff(data, gfx::Rect(0, 30, 55, 80), gfx::Rect(5, 30, 5, 15), 9);
1167
1168 // Knock out three columns, leaving only one.
1169 TestDiff(data, gfx::Rect(10, 30, 55, 80), gfx::Rect(30, 59, 20, 1), 3);
1170
1171 // Overlap all tiles with ignore rect.
1172 TestDiff(data, gfx::Rect(0, 0, 65, 110), gfx::Rect(30, 59, 1, 2), 0);
1173 }
1174
1175 TEST(TilingDataTest, differenceIteratorOneTile)
1176 {
1177 TilingData no_border(gfx::Size(1000, 1000), gfx::Size(30, 40), false);
1178 TestDiff(no_border, gfx::Rect(0, 0, 30, 40), gfx::Rect(), 1);
1179 TestDiff(no_border, gfx::Rect(5, 5, 100, 100), gfx::Rect(5, 5, 1, 1), 0);
1180
1181 TilingData one_border(gfx::Size(1000, 1000), gfx::Size(30, 40), true);
1182 TestDiff(one_border, gfx::Rect(0, 0, 30, 40), gfx::Rect(), 1);
1183 TestDiff(one_border, gfx::Rect(5, 5, 100, 100), gfx::Rect(5, 5, 1, 1), 0);
1184
1185 TilingData big_border(gfx::Size(1000, 1000), gfx::Size(30, 40), 50);
1186 TestDiff(big_border, gfx::Rect(0, 0, 30, 40), gfx::Rect(), 1);
1187 TestDiff(big_border, gfx::Rect(5, 5, 100, 100), gfx::Rect(5, 5, 1, 1), 0);
1188 }
1189
1190 TEST(TilingDataTest, differenceIteratorNoTiles)
1191 {
1192 TilingData data(gfx::Size(100, 100), gfx::Size(), false);
1193 TestDiff(data, gfx::Rect(0, 0, 100, 100), gfx::Rect(0, 0, 5, 5), 0);
1194 }
1195
1196 } // namespace
1197 } // namespace cc
OLDNEW
« cc/cc.gyp ('K') | « cc/tiling_data.cc ('k') | cc/time_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698