initial import
[vuplus_webkit] / Source / WebKit / chromium / tests / TilingDataTest.cpp
1 /*
2  * Copyright (C) 2010 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #include "config.h"
32
33 #include "TilingData.h"
34
35 #include <gtest/gtest.h>
36
37 using namespace WebCore;
38
39 namespace {
40
41 TEST(TilingDataTest, numTiles_NoTiling)
42 {
43     EXPECT_EQ(1, TilingData(16, 16, 16, false).numTiles());
44     EXPECT_EQ(1, TilingData(16, 15, 15, true).numTiles());
45     EXPECT_EQ(1, TilingData(16, 16, 16, true).numTiles());
46     EXPECT_EQ(1, TilingData(16,  1, 16, false).numTiles());
47     EXPECT_EQ(1, TilingData(15, 15, 15, true).numTiles());
48 }
49
50 TEST(TilingDataTest, numTiles_TilingNoBorders)
51 {
52     EXPECT_EQ(0, TilingData(0,  0,  0, false).numTiles());
53     EXPECT_EQ(0, TilingData(0,  4,  0, false).numTiles());
54     EXPECT_EQ(0, TilingData(0,  0,  4, false).numTiles());
55     EXPECT_EQ(0, TilingData(4,  4,  0, false).numTiles());
56     EXPECT_EQ(0, TilingData(4,  0,  4, false).numTiles());
57     EXPECT_EQ(0, TilingData(-8, 1,  1, false).numTiles());
58     EXPECT_EQ(0, TilingData(-1, 1,  1, false).numTiles());
59     EXPECT_EQ(0, TilingData(0,  1,  1, false).numTiles());
60
61     EXPECT_EQ(1, TilingData(1,  1,  1, false).numTiles());
62     EXPECT_EQ(2, TilingData(1,  1,  2, false).numTiles());
63     EXPECT_EQ(2, TilingData(1,  2,  1, false).numTiles());
64     EXPECT_EQ(1, TilingData(2,  1,  1, false).numTiles());
65     EXPECT_EQ(1, TilingData(2,  1,  2, false).numTiles());
66     EXPECT_EQ(1, TilingData(2,  2,  1, false).numTiles());
67     EXPECT_EQ(1, TilingData(2,  2,  2, false).numTiles());
68     EXPECT_EQ(1, TilingData(3,  3,  3, false).numTiles());
69
70     EXPECT_EQ(1, TilingData(4,  1,  4, false).numTiles());
71     EXPECT_EQ(1, TilingData(4,  2,  4, false).numTiles());
72     EXPECT_EQ(1, TilingData(4,  3,  4, false).numTiles());
73     EXPECT_EQ(1, TilingData(4,  4,  4, false).numTiles());
74     EXPECT_EQ(2, TilingData(4,  5,  4, false).numTiles());
75     EXPECT_EQ(2, TilingData(4,  6,  4, false).numTiles());
76     EXPECT_EQ(2, TilingData(4,  7,  4, false).numTiles());
77     EXPECT_EQ(2, TilingData(4,  8,  4, false).numTiles());
78     EXPECT_EQ(3, TilingData(4,  9,  4, false).numTiles());
79     EXPECT_EQ(3, TilingData(4, 10,  4, false).numTiles());
80     EXPECT_EQ(3, TilingData(4, 11,  4, false).numTiles());
81
82     EXPECT_EQ(1, TilingData(5,  1,  5, false).numTiles());
83     EXPECT_EQ(1, TilingData(5,  2,  5, false).numTiles());
84     EXPECT_EQ(1, TilingData(5,  3,  5, false).numTiles());
85     EXPECT_EQ(1, TilingData(5,  4,  5, false).numTiles());
86     EXPECT_EQ(1, TilingData(5,  5,  5, false).numTiles());
87     EXPECT_EQ(2, TilingData(5,  6,  5, false).numTiles());
88     EXPECT_EQ(2, TilingData(5,  7,  5, false).numTiles());
89     EXPECT_EQ(2, TilingData(5,  8,  5, false).numTiles());
90     EXPECT_EQ(2, TilingData(5,  9,  5, false).numTiles());
91     EXPECT_EQ(2, TilingData(5, 10,  5, false).numTiles());
92     EXPECT_EQ(3, TilingData(5, 11,  5, false).numTiles());
93
94     EXPECT_EQ(1, TilingData(16, 16, 16, false).numTiles());
95     EXPECT_EQ(1, TilingData(17, 16, 16, false).numTiles());
96     EXPECT_EQ(4, TilingData(15, 16, 16, false).numTiles());
97     EXPECT_EQ(4, TilingData(8, 16, 16, false).numTiles());
98     EXPECT_EQ(6, TilingData(8, 17, 16, false).numTiles());
99 }
100
101 TEST(TilingDataTest, numTiles_TilingWithBorders)
102 {
103     EXPECT_EQ(0, TilingData(0,  0,  0, true).numTiles());
104     EXPECT_EQ(0, TilingData(0,  4,  0, true).numTiles());
105     EXPECT_EQ(0, TilingData(0,  0,  4, true).numTiles());
106     EXPECT_EQ(0, TilingData(4,  4,  0, true).numTiles());
107     EXPECT_EQ(0, TilingData(4,  0,  4, true).numTiles());
108     EXPECT_EQ(0, TilingData(-8, 1,  1, true).numTiles());
109     EXPECT_EQ(0, TilingData(-1, 1,  1, true).numTiles());
110     EXPECT_EQ(0, TilingData(0,  1,  1, true).numTiles());
111
112     EXPECT_EQ(1, TilingData(1,  1,  1, true).numTiles());
113     EXPECT_EQ(0, TilingData(1,  1,  2, true).numTiles());
114     EXPECT_EQ(0, TilingData(1,  2,  1, true).numTiles());
115     EXPECT_EQ(1, TilingData(2,  1,  1, true).numTiles());
116     EXPECT_EQ(1, TilingData(2,  1,  2, true).numTiles());
117     EXPECT_EQ(1, TilingData(2,  2,  1, true).numTiles());
118     EXPECT_EQ(1, TilingData(2,  2,  2, true).numTiles());
119
120     EXPECT_EQ(1, TilingData(3,  1,  3, true).numTiles());
121     EXPECT_EQ(1, TilingData(3,  2,  3, true).numTiles());
122     EXPECT_EQ(1, TilingData(3,  3,  3, true).numTiles());
123     EXPECT_EQ(2, TilingData(3,  4,  3, true).numTiles());
124     EXPECT_EQ(3, TilingData(3,  5,  3, true).numTiles());
125     EXPECT_EQ(4, TilingData(3,  6,  3, true).numTiles());
126     EXPECT_EQ(5, TilingData(3,  7,  3, true).numTiles());
127
128     EXPECT_EQ(1, TilingData(4,  1,  4, true).numTiles());
129     EXPECT_EQ(1, TilingData(4,  2,  4, true).numTiles());
130     EXPECT_EQ(1, TilingData(4,  3,  4, true).numTiles());
131     EXPECT_EQ(1, TilingData(4,  4,  4, true).numTiles());
132     EXPECT_EQ(2, TilingData(4,  5,  4, true).numTiles());
133     EXPECT_EQ(2, TilingData(4,  6,  4, true).numTiles());
134     EXPECT_EQ(3, TilingData(4,  7,  4, true).numTiles());
135     EXPECT_EQ(3, TilingData(4,  8,  4, true).numTiles());
136     EXPECT_EQ(4, TilingData(4,  9,  4, true).numTiles());
137     EXPECT_EQ(4, TilingData(4, 10,  4, true).numTiles());
138     EXPECT_EQ(5, TilingData(4, 11,  4, true).numTiles());
139
140     EXPECT_EQ(1, TilingData(5,  1,  5, true).numTiles());
141     EXPECT_EQ(1, TilingData(5,  2,  5, true).numTiles());
142     EXPECT_EQ(1, TilingData(5,  3,  5, true).numTiles());
143     EXPECT_EQ(1, TilingData(5,  4,  5, true).numTiles());
144     EXPECT_EQ(1, TilingData(5,  5,  5, true).numTiles());
145     EXPECT_EQ(2, TilingData(5,  6,  5, true).numTiles());
146     EXPECT_EQ(2, TilingData(5,  7,  5, true).numTiles());
147     EXPECT_EQ(2, TilingData(5,  8,  5, true).numTiles());
148     EXPECT_EQ(3, TilingData(5,  9,  5, true).numTiles());
149     EXPECT_EQ(3, TilingData(5, 10,  5, true).numTiles());
150     EXPECT_EQ(3, TilingData(5, 11,  5, true).numTiles());
151 }
152
153 TEST(TilingDataTest, tileXIndexFromSrcCoord)
154 {
155     EXPECT_EQ(0, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(0));
156     EXPECT_EQ(0, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(1));
157     EXPECT_EQ(0, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(2));
158     EXPECT_EQ(1, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(3));
159     EXPECT_EQ(1, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(4));
160     EXPECT_EQ(1, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(5));
161     EXPECT_EQ(2, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(6));
162     EXPECT_EQ(2, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(7));
163     EXPECT_EQ(2, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(8));
164     EXPECT_EQ(3, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(9));
165     EXPECT_EQ(3, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(10));
166     EXPECT_EQ(3, TilingData(3, 10, 10, false).tileXIndexFromSrcCoord(11));
167
168     EXPECT_EQ(0, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(0));
169     EXPECT_EQ(0, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(1));
170     EXPECT_EQ(1, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(2));
171     EXPECT_EQ(2, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(3));
172     EXPECT_EQ(3, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(4));
173     EXPECT_EQ(4, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(5));
174     EXPECT_EQ(5, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(6));
175     EXPECT_EQ(6, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(7));
176     EXPECT_EQ(7, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(8));
177     EXPECT_EQ(7, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(9));
178     EXPECT_EQ(7, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(10));
179     EXPECT_EQ(7, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(11));
180
181     EXPECT_EQ(0, TilingData(1, 1, 1, false).tileXIndexFromSrcCoord(0));
182     EXPECT_EQ(0, TilingData(2, 2, 2, false).tileXIndexFromSrcCoord(0));
183     EXPECT_EQ(0, TilingData(2, 2, 2, false).tileXIndexFromSrcCoord(1));
184     EXPECT_EQ(0, TilingData(3, 3, 3, false).tileXIndexFromSrcCoord(0));
185     EXPECT_EQ(0, TilingData(3, 3, 3, false).tileXIndexFromSrcCoord(1));
186     EXPECT_EQ(0, TilingData(3, 3, 3, false).tileXIndexFromSrcCoord(2));
187
188     EXPECT_EQ(0, TilingData(3, 4, 3, false).tileXIndexFromSrcCoord(0));
189     EXPECT_EQ(0, TilingData(3, 4, 3, false).tileXIndexFromSrcCoord(1));
190     EXPECT_EQ(0, TilingData(3, 4, 3, false).tileXIndexFromSrcCoord(2));
191     EXPECT_EQ(1, TilingData(3, 4, 3, false).tileXIndexFromSrcCoord(3));
192
193     EXPECT_EQ(0, TilingData(1, 1, 1, true).tileXIndexFromSrcCoord(0));
194     EXPECT_EQ(0, TilingData(2, 2, 2, true).tileXIndexFromSrcCoord(0));
195     EXPECT_EQ(0, TilingData(2, 2, 2, true).tileXIndexFromSrcCoord(1));
196     EXPECT_EQ(0, TilingData(3, 3, 3, true).tileXIndexFromSrcCoord(0));
197     EXPECT_EQ(0, TilingData(3, 3, 3, true).tileXIndexFromSrcCoord(1));
198     EXPECT_EQ(0, TilingData(3, 3, 3, true).tileXIndexFromSrcCoord(2));
199
200     EXPECT_EQ(0, TilingData(3, 4, 3, true).tileXIndexFromSrcCoord(0));
201     EXPECT_EQ(0, TilingData(3, 4, 3, true).tileXIndexFromSrcCoord(1));
202     EXPECT_EQ(1, TilingData(3, 4, 3, true).tileXIndexFromSrcCoord(2));
203     EXPECT_EQ(1, TilingData(3, 4, 3, true).tileXIndexFromSrcCoord(3));
204 }
205 TEST(TilingDataTest, tileYIndexFromSrcCoord)
206 {
207     EXPECT_EQ(0, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(0));
208     EXPECT_EQ(0, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(1));
209     EXPECT_EQ(0, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(2));
210     EXPECT_EQ(1, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(3));
211     EXPECT_EQ(1, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(4));
212     EXPECT_EQ(1, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(5));
213     EXPECT_EQ(2, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(6));
214     EXPECT_EQ(2, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(7));
215     EXPECT_EQ(2, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(8));
216     EXPECT_EQ(3, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(9));
217     EXPECT_EQ(3, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(10));
218     EXPECT_EQ(3, TilingData(3, 10, 10, false).tileYIndexFromSrcCoord(11));
219
220     EXPECT_EQ(0, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(0));
221     EXPECT_EQ(0, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(1));
222     EXPECT_EQ(1, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(2));
223     EXPECT_EQ(2, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(3));
224     EXPECT_EQ(3, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(4));
225     EXPECT_EQ(4, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(5));
226     EXPECT_EQ(5, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(6));
227     EXPECT_EQ(6, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(7));
228     EXPECT_EQ(7, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(8));
229     EXPECT_EQ(7, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(9));
230     EXPECT_EQ(7, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(10));
231     EXPECT_EQ(7, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(11));
232
233     EXPECT_EQ(0, TilingData(1, 1, 1, false).tileYIndexFromSrcCoord(0));
234     EXPECT_EQ(0, TilingData(2, 2, 2, false).tileYIndexFromSrcCoord(0));
235     EXPECT_EQ(0, TilingData(2, 2, 2, false).tileYIndexFromSrcCoord(1));
236     EXPECT_EQ(0, TilingData(3, 3, 3, false).tileYIndexFromSrcCoord(0));
237     EXPECT_EQ(0, TilingData(3, 3, 3, false).tileYIndexFromSrcCoord(1));
238     EXPECT_EQ(0, TilingData(3, 3, 3, false).tileYIndexFromSrcCoord(2));
239
240     EXPECT_EQ(0, TilingData(3, 3, 4, false).tileYIndexFromSrcCoord(0));
241     EXPECT_EQ(0, TilingData(3, 3, 4, false).tileYIndexFromSrcCoord(1));
242     EXPECT_EQ(0, TilingData(3, 3, 4, false).tileYIndexFromSrcCoord(2));
243     EXPECT_EQ(1, TilingData(3, 3, 4, false).tileYIndexFromSrcCoord(3));
244
245     EXPECT_EQ(0, TilingData(1, 1, 1, true).tileYIndexFromSrcCoord(0));
246     EXPECT_EQ(0, TilingData(2, 2, 2, true).tileYIndexFromSrcCoord(0));
247     EXPECT_EQ(0, TilingData(2, 2, 2, true).tileYIndexFromSrcCoord(1));
248     EXPECT_EQ(0, TilingData(3, 3, 3, true).tileYIndexFromSrcCoord(0));
249     EXPECT_EQ(0, TilingData(3, 3, 3, true).tileYIndexFromSrcCoord(1));
250     EXPECT_EQ(0, TilingData(3, 3, 3, true).tileYIndexFromSrcCoord(2));
251
252     EXPECT_EQ(0, TilingData(3, 3, 4, true).tileYIndexFromSrcCoord(0));
253     EXPECT_EQ(0, TilingData(3, 3, 4, true).tileYIndexFromSrcCoord(1));
254     EXPECT_EQ(1, TilingData(3, 3, 4, true).tileYIndexFromSrcCoord(2));
255     EXPECT_EQ(1, TilingData(3, 3, 4, true).tileYIndexFromSrcCoord(3));
256 }
257
258 TEST(TilingDataTest, tileSizeX)
259 {
260     EXPECT_EQ(5, TilingData(5,  5,  5, false).tileSizeX(0));
261     EXPECT_EQ(5, TilingData(5,  5,  5, true).tileSizeX(0));
262
263     EXPECT_EQ(5, TilingData(5,  6,  6, false).tileSizeX(0));
264     EXPECT_EQ(1, TilingData(5,  6,  6, false).tileSizeX(1));
265     EXPECT_EQ(4, TilingData(5,  6,  6, true).tileSizeX(0));
266     EXPECT_EQ(2, TilingData(5,  6,  6, true).tileSizeX(1));
267
268     EXPECT_EQ(5, TilingData(5,  8,  8, false).tileSizeX(0));
269     EXPECT_EQ(3, TilingData(5,  8,  8, false).tileSizeX(1));
270     EXPECT_EQ(4, TilingData(5,  8,  8, true).tileSizeX(0));
271     EXPECT_EQ(4, TilingData(5,  8,  8, true).tileSizeX(1));
272
273     EXPECT_EQ(5, TilingData(5, 10, 10, false).tileSizeX(0));
274     EXPECT_EQ(5, TilingData(5, 10, 10, false).tileSizeX(1));
275     EXPECT_EQ(4, TilingData(5, 10, 10, true).tileSizeX(0));
276     EXPECT_EQ(3, TilingData(5, 10, 10, true).tileSizeX(1));
277     EXPECT_EQ(3, TilingData(5, 10, 10, true).tileSizeX(2));
278
279     EXPECT_EQ(4, TilingData(5, 11, 11, true).tileSizeX(2));
280     EXPECT_EQ(3, TilingData(5, 12, 12, true).tileSizeX(2));
281 }
282 TEST(TilingDataTest, tileSizeY)
283 {
284     EXPECT_EQ(5, TilingData(5,  5,  5, false).tileSizeY(0));
285     EXPECT_EQ(5, TilingData(5,  5,  5, true).tileSizeY(0));
286
287     EXPECT_EQ(5, TilingData(5,  6,  6, false).tileSizeY(0));
288     EXPECT_EQ(1, TilingData(5,  6,  6, false).tileSizeY(1));
289     EXPECT_EQ(4, TilingData(5,  6,  6, true).tileSizeY(0));
290     EXPECT_EQ(2, TilingData(5,  6,  6, true).tileSizeY(1));
291
292     EXPECT_EQ(5, TilingData(5,  8,  8, false).tileSizeY(0));
293     EXPECT_EQ(3, TilingData(5,  8,  8, false).tileSizeY(1));
294     EXPECT_EQ(4, TilingData(5,  8,  8, true).tileSizeY(0));
295     EXPECT_EQ(4, TilingData(5,  8,  8, true).tileSizeY(1));
296
297     EXPECT_EQ(5, TilingData(5, 10, 10, false).tileSizeY(0));
298     EXPECT_EQ(5, TilingData(5, 10, 10, false).tileSizeY(1));
299     EXPECT_EQ(4, TilingData(5, 10, 10, true).tileSizeY(0));
300     EXPECT_EQ(3, TilingData(5, 10, 10, true).tileSizeY(1));
301     EXPECT_EQ(3, TilingData(5, 10, 10, true).tileSizeY(2));
302
303     EXPECT_EQ(4, TilingData(5, 11, 11, true).tileSizeY(2));
304     EXPECT_EQ(3, TilingData(5, 12, 12, true).tileSizeY(2));
305 }
306
307 TEST(TilingDataTest, tileSizeX_and_tilePositionX)
308 {
309     // Single tile cases:
310     EXPECT_EQ(1, TilingData(3, 1,   1, false).tileSizeX(0));
311     EXPECT_EQ(0, TilingData(3, 1,   1, false).tilePositionX(0));
312     EXPECT_EQ(1, TilingData(3, 1, 100, false).tileSizeX(0));
313     EXPECT_EQ(0, TilingData(3, 1, 100, false).tilePositionX(0));
314     EXPECT_EQ(3, TilingData(3, 3,   1, false).tileSizeX(0));
315     EXPECT_EQ(0, TilingData(3, 3,   1, false).tilePositionX(0));
316     EXPECT_EQ(3, TilingData(3, 3, 100, false).tileSizeX(0));
317     EXPECT_EQ(0, TilingData(3, 3, 100, false).tilePositionX(0));
318     EXPECT_EQ(1, TilingData(3, 1,   1, true).tileSizeX(0));
319     EXPECT_EQ(0, TilingData(3, 1,   1, true).tilePositionX(0));
320     EXPECT_EQ(1, TilingData(3, 1, 100, true).tileSizeX(0));
321     EXPECT_EQ(0, TilingData(3, 1, 100, true).tilePositionX(0));
322     EXPECT_EQ(3, TilingData(3, 3,   1, true).tileSizeX(0));
323     EXPECT_EQ(0, TilingData(3, 3,   1, true).tilePositionX(0));
324     EXPECT_EQ(3, TilingData(3, 3, 100, true).tileSizeX(0));
325     EXPECT_EQ(0, TilingData(3, 3, 100, true).tilePositionX(0));
326
327     // Multiple tiles:
328     // no border
329     // positions 0, 3
330     EXPECT_EQ(2, TilingData(3, 6,   1, false).numTiles());
331     EXPECT_EQ(3, TilingData(3, 6,   1, false).tileSizeX(0));
332     EXPECT_EQ(3, TilingData(3, 6,   1, false).tileSizeX(1));
333     EXPECT_EQ(0, TilingData(3, 6,   1, false).tilePositionX(0));
334     EXPECT_EQ(3, TilingData(3, 6,   1, false).tilePositionX(1));
335     EXPECT_EQ(3, TilingData(3, 6, 100, false).tileSizeX(0));
336     EXPECT_EQ(3, TilingData(3, 6, 100, false).tileSizeX(1));
337     EXPECT_EQ(0, TilingData(3, 6, 100, false).tilePositionX(0));
338     EXPECT_EQ(3, TilingData(3, 6, 100, false).tilePositionX(1));
339
340     // Multiple tiles:
341     // with border
342     // positions 0, 2, 3, 4
343     EXPECT_EQ(4, TilingData(3, 6,   1, true).numTiles());
344     EXPECT_EQ(2, TilingData(3, 6,   1, true).tileSizeX(0));
345     EXPECT_EQ(1, TilingData(3, 6,   1, true).tileSizeX(1));
346     EXPECT_EQ(1, TilingData(3, 6,   1, true).tileSizeX(2));
347     EXPECT_EQ(2, TilingData(3, 6,   1, true).tileSizeX(3));
348     EXPECT_EQ(0, TilingData(3, 6,   1, true).tilePositionX(0));
349     EXPECT_EQ(2, TilingData(3, 6,   1, true).tilePositionX(1));
350     EXPECT_EQ(3, TilingData(3, 6,   1, true).tilePositionX(2));
351     EXPECT_EQ(4, TilingData(3, 6,   1, true).tilePositionX(3));
352     EXPECT_EQ(2, TilingData(3, 6, 100, true).tileSizeX(0));
353     EXPECT_EQ(1, TilingData(3, 6, 100, true).tileSizeX(1));
354     EXPECT_EQ(1, TilingData(3, 6, 100, true).tileSizeX(2));
355     EXPECT_EQ(2, TilingData(3, 6, 100, true).tileSizeX(3));
356     EXPECT_EQ(0, TilingData(3, 6, 100, true).tilePositionX(0));
357     EXPECT_EQ(2, TilingData(3, 6, 100, true).tilePositionX(1));
358     EXPECT_EQ(3, TilingData(3, 6, 100, true).tilePositionX(2));
359     EXPECT_EQ(4, TilingData(3, 6, 100, true).tilePositionX(3));
360 }
361
362 TEST(TilingDataTest, tileSizeY_and_tilePositionY)
363 {
364     // Single tile cases:
365     EXPECT_EQ(1, TilingData(3,   1, 1, false).tileSizeY(0));
366     EXPECT_EQ(0, TilingData(3,   1, 1, false).tilePositionY(0));
367     EXPECT_EQ(1, TilingData(3, 100, 1, false).tileSizeY(0));
368     EXPECT_EQ(0, TilingData(3, 100, 1, false).tilePositionY(0));
369     EXPECT_EQ(3, TilingData(3,   1, 3, false).tileSizeY(0));
370     EXPECT_EQ(0, TilingData(3,   1, 3, false).tilePositionY(0));
371     EXPECT_EQ(3, TilingData(3, 100, 3, false).tileSizeY(0));
372     EXPECT_EQ(0, TilingData(3, 100, 3, false).tilePositionY(0));
373     EXPECT_EQ(1, TilingData(3,   1, 1, true).tileSizeY(0));
374     EXPECT_EQ(0, TilingData(3,   1, 1, true).tilePositionY(0));
375     EXPECT_EQ(1, TilingData(3, 100, 1, true).tileSizeY(0));
376     EXPECT_EQ(0, TilingData(3, 100, 1, true).tilePositionY(0));
377     EXPECT_EQ(3, TilingData(3,   1, 3, true).tileSizeY(0));
378     EXPECT_EQ(0, TilingData(3,   1, 3, true).tilePositionY(0));
379     EXPECT_EQ(3, TilingData(3, 100, 3, true).tileSizeY(0));
380     EXPECT_EQ(0, TilingData(3, 100, 3, true).tilePositionY(0));
381
382     // Multiple tiles:
383     // no border
384     // positions 0, 3
385     EXPECT_EQ(2, TilingData(3,   1, 6, false).numTiles());
386     EXPECT_EQ(3, TilingData(3,   1, 6, false).tileSizeY(0));
387     EXPECT_EQ(3, TilingData(3,   1, 6, false).tileSizeY(1));
388     EXPECT_EQ(0, TilingData(3,   1, 6, false).tilePositionY(0));
389     EXPECT_EQ(3, TilingData(3,   1, 6, false).tilePositionY(1));
390     EXPECT_EQ(3, TilingData(3, 100, 6, false).tileSizeY(0));
391     EXPECT_EQ(3, TilingData(3, 100, 6, false).tileSizeY(1));
392     EXPECT_EQ(0, TilingData(3, 100, 6, false).tilePositionY(0));
393     EXPECT_EQ(3, TilingData(3, 100, 6, false).tilePositionY(1));
394
395     // Multiple tiles:
396     // with border
397     // positions 0, 2, 3, 4
398     EXPECT_EQ(4, TilingData(3,   1, 6, true).numTiles());
399     EXPECT_EQ(2, TilingData(3,   1, 6, true).tileSizeY(0));
400     EXPECT_EQ(1, TilingData(3,   1, 6, true).tileSizeY(1));
401     EXPECT_EQ(1, TilingData(3,   1, 6, true).tileSizeY(2));
402     EXPECT_EQ(2, TilingData(3,   1, 6, true).tileSizeY(3));
403     EXPECT_EQ(0, TilingData(3,   1, 6, true).tilePositionY(0));
404     EXPECT_EQ(2, TilingData(3,   1, 6, true).tilePositionY(1));
405     EXPECT_EQ(3, TilingData(3,   1, 6, true).tilePositionY(2));
406     EXPECT_EQ(4, TilingData(3,   1, 6, true).tilePositionY(3));
407     EXPECT_EQ(2, TilingData(3, 100, 6, true).tileSizeY(0));
408     EXPECT_EQ(1, TilingData(3, 100, 6, true).tileSizeY(1));
409     EXPECT_EQ(1, TilingData(3, 100, 6, true).tileSizeY(2));
410     EXPECT_EQ(2, TilingData(3, 100, 6, true).tileSizeY(3));
411     EXPECT_EQ(0, TilingData(3, 100, 6, true).tilePositionY(0));
412     EXPECT_EQ(2, TilingData(3, 100, 6, true).tilePositionY(1));
413     EXPECT_EQ(3, TilingData(3, 100, 6, true).tilePositionY(2));
414     EXPECT_EQ(4, TilingData(3, 100, 6, true).tilePositionY(3));
415 }
416
417 TEST(TilingDataTest, setTotalSize)
418 {
419     TilingData data(5, 5, 5, false);
420     EXPECT_EQ(5, data.totalSizeX());
421     EXPECT_EQ(5, data.totalSizeY());
422     EXPECT_EQ(1, data.numTilesX());
423     EXPECT_EQ(5, data.tileSizeX(0));
424     EXPECT_EQ(1, data.numTilesY());
425     EXPECT_EQ(5, data.tileSizeY(0));
426
427     data.setTotalSize(6, 5);
428     EXPECT_EQ(6, data.totalSizeX());
429     EXPECT_EQ(5, data.totalSizeY());
430     EXPECT_EQ(2, data.numTilesX());
431     EXPECT_EQ(5, data.tileSizeX(0));
432     EXPECT_EQ(1, data.tileSizeX(1));
433     EXPECT_EQ(1, data.numTilesY());
434     EXPECT_EQ(5, data.tileSizeY(0));
435
436     data.setTotalSize(5, 12);
437     EXPECT_EQ(5, data.totalSizeX());
438     EXPECT_EQ(12, data.totalSizeY());
439     EXPECT_EQ(1, data.numTilesX());
440     EXPECT_EQ(5, data.tileSizeX(0));
441     EXPECT_EQ(3, data.numTilesY());
442     EXPECT_EQ(5, data.tileSizeY(0));
443     EXPECT_EQ(5, data.tileSizeY(1));
444     EXPECT_EQ(2, data.tileSizeY(2));
445 }
446
447 TEST(TilingDataTest, setMaxTextureSizeNoBorders)
448 {
449     TilingData data(8, 16, 32, false);
450     EXPECT_EQ(2, data.numTilesX());
451     EXPECT_EQ(4, data.numTilesY());
452
453     data.setMaxTextureSize(32);
454     EXPECT_EQ(32, data.maxTextureSize());
455     EXPECT_EQ(1, data.numTilesX());
456     EXPECT_EQ(1, data.numTilesY());
457
458     data.setMaxTextureSize(2);
459     EXPECT_EQ(2, data.maxTextureSize());
460     EXPECT_EQ(8, data.numTilesX());
461     EXPECT_EQ(16, data.numTilesY());
462
463     data.setMaxTextureSize(5);
464     EXPECT_EQ(5, data.maxTextureSize());
465     EXPECT_EQ(4, data.numTilesX());
466     EXPECT_EQ(7, data.numTilesY());
467 }
468
469 TEST(TilingDataTest, setMaxTextureSizeBorders)
470 {
471     TilingData data(8, 16, 32, true);
472     EXPECT_EQ(3, data.numTilesX());
473     EXPECT_EQ(5, data.numTilesY());
474
475     data.setMaxTextureSize(32);
476     EXPECT_EQ(32, data.maxTextureSize());
477     EXPECT_EQ(1, data.numTilesX());
478     EXPECT_EQ(1, data.numTilesY());
479
480     data.setMaxTextureSize(2);
481     EXPECT_EQ(2, data.maxTextureSize());
482     EXPECT_EQ(0, data.numTilesX());
483     EXPECT_EQ(0, data.numTilesY());
484
485     data.setMaxTextureSize(5);
486     EXPECT_EQ(5, data.maxTextureSize());
487     EXPECT_EQ(5, data.numTilesX());
488     EXPECT_EQ(10, data.numTilesY());
489 }
490
491 TEST(TilingDataTest, assignment)
492 {
493     {
494         TilingData source(8, 16, 32, true);
495         TilingData dest = source;
496         EXPECT_EQ(source.borderTexels(), dest.borderTexels());
497         EXPECT_EQ(source.maxTextureSize(), dest.maxTextureSize());
498         EXPECT_EQ(source.numTilesX(), dest.numTilesX());
499         EXPECT_EQ(source.numTilesY(), dest.numTilesY());
500         EXPECT_EQ(source.totalSizeX(), dest.totalSizeX());
501         EXPECT_EQ(source.totalSizeY(), dest.totalSizeY());
502     }
503     {
504         TilingData source(3, 6, 100, false);
505         TilingData dest(source);
506         EXPECT_EQ(source.borderTexels(), dest.borderTexels());
507         EXPECT_EQ(source.maxTextureSize(), dest.maxTextureSize());
508         EXPECT_EQ(source.numTilesX(), dest.numTilesX());
509         EXPECT_EQ(source.numTilesY(), dest.numTilesY());
510         EXPECT_EQ(source.totalSizeX(), dest.totalSizeX());
511         EXPECT_EQ(source.totalSizeY(), dest.totalSizeY());
512     }
513 }
514
515 } // namespace