GCC Code Coverage Report
Directory: src/ Exec Total Coverage
File: src/unittests/resources/map/maplayer/draw.cc Lines: 369 369 100.0 %
Date: 2021-03-17 Branches: 1208 3208 37.7 %

Line Branch Exec Source
1
/*
2
 *  The ManaPlus Client
3
 *  Copyright (C) 2016-2019  The ManaPlus Developers
4
 *  Copyright (C) 2019-2021  Andrei Karas
5
 *
6
 *  This file is part of The ManaPlus Client.
7
 *
8
 *  This program is free software; you can redistribute it and/or modify
9
 *  it under the terms of the GNU General Public License as published by
10
 *  the Free Software Foundation; either version 2 of the License, or
11
 *  any later version.
12
 *
13
 *  This program is distributed in the hope that it will be useful,
14
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 *  GNU General Public License for more details.
17
 *
18
 *  You should have received a copy of the GNU General Public License
19
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
 */
21
22
#include "unittests/unittests.h"
23
24
#include "configmanager.h"
25
#include "dirs.h"
26
27
#include "unittests/render/mockgraphics.h"
28
29
#include "resources/image/image.h"
30
31
#include "resources/map/map.h"
32
#include "resources/map/maplayer.h"
33
34
#include "debug.h"
35
36
12
TEST_CASE("MapLayer draw", "")
37
{
38
10
    Dirs::initRootDir();
39
10
    Dirs::initHomeDir();
40
41
10
    ConfigManager::initConfiguration();
42
43
10
    Image *const img1 = new Image(32, 32);
44
10
    Image *const img2 = new Image(32, 32);
45
10
    Image *const img3 = new Image(32, 32);
46
10
    Map *map = nullptr;
47
10
    MapLayer *layer = nullptr;
48
10
    MockGraphics *const mock = new MockGraphics;
49
50



70
    SECTION("simple 1")
51
    {
52
1
        map = new Map("map",
53
            1, 1,
54

3
            32, 32);
55
1
        layer = new MapLayer("test",
56
            0, 0,
57
            1, 1,
58
            false,
59
            0,
60

3
            0);
61
2
        layer->setTile(0, 0, img1);
62
1
        map->addLayer(layer);
63
1
        layer->updateCache(1, 1);
64
65
        layer->draw(mock,
66
            0, 0,
67
            1, 1,
68
1
            0, 0);
69



5
        REQUIRE(mock->mDraws.size() == 1);
70



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
71



4
        REQUIRE(mock->mDraws[0].x == 0);
72



4
        REQUIRE(mock->mDraws[0].y == 0);
73



4
        REQUIRE(mock->mDraws[0].image == img1);
74
75
2
        mock->mDraws.clear();
76
        layer->draw(mock,
77
            0, 0,
78
            1, 1,
79
1
            10, 5);
80



5
        REQUIRE(mock->mDraws.size() == 1);
81



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
82



4
        REQUIRE(mock->mDraws[0].x == -10);
83



4
        REQUIRE(mock->mDraws[0].y == -5);
84



4
        REQUIRE(mock->mDraws[0].image == img1);
85
86
2
        mock->mDraws.clear();
87
        layer->draw(mock,
88
            0, 0,
89
            1, 1,
90
1
            -10, -5);
91



5
        REQUIRE(mock->mDraws.size() == 1);
92



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
93



4
        REQUIRE(mock->mDraws[0].x == 10);
94



4
        REQUIRE(mock->mDraws[0].y == 5);
95



4
        REQUIRE(mock->mDraws[0].image == img1);
96
    }
97
98



70
    SECTION("simple 2")
99
    {
100
1
        map = new Map("map",
101
            2, 1,
102

3
            32, 32);
103
1
        layer = new MapLayer("test",
104
            0, 0,
105
            2, 1,
106
            false,
107
            0,
108

3
            0);
109
2
        layer->setTile(0, 0, img1);
110
1
        map->addLayer(layer);
111
1
        layer->updateCache(2, 1);
112
113
        layer->draw(mock,
114
            0, 0,
115
            2, 1,
116
1
            0, 0);
117
118



5
        REQUIRE(mock->mDraws.size() == 1);
119



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
120



4
        REQUIRE(mock->mDraws[0].x == 0);
121



4
        REQUIRE(mock->mDraws[0].y == 0);
122



4
        REQUIRE(mock->mDraws[0].image == img1);
123
124
2
        mock->mDraws.clear();
125
        layer->draw(mock,
126
            0, 0,
127
            2, 1,
128
1
            10, 5);
129



5
        REQUIRE(mock->mDraws.size() == 1);
130



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
131



4
        REQUIRE(mock->mDraws[0].x == -10);
132



4
        REQUIRE(mock->mDraws[0].y == -5);
133



4
        REQUIRE(mock->mDraws[0].image == img1);
134
135
2
        mock->mDraws.clear();
136
        layer->draw(mock,
137
            0, 0,
138
            2, 1,
139
1
            -10, -5);
140



5
        REQUIRE(mock->mDraws.size() == 1);
141



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
142



4
        REQUIRE(mock->mDraws[0].x == 10);
143



4
        REQUIRE(mock->mDraws[0].y == 5);
144



4
        REQUIRE(mock->mDraws[0].image == img1);
145
    }
146
147



70
    SECTION("simple 3")
148
    {
149
1
        map = new Map("map",
150
            2, 1,
151

3
            32, 32);
152
1
        layer = new MapLayer("test",
153
            0, 0,
154
            2, 1,
155
            false,
156
            0,
157

3
            0);
158
2
        layer->setTile(0, 0, img1);
159
2
        layer->setTile(1, 0, img2);
160
1
        map->addLayer(layer);
161
1
        layer->updateCache(2, 1);
162
163
        layer->draw(mock,
164
            0, 0,
165
            2, 1,
166
1
            0, 0);
167



5
        REQUIRE(mock->mDraws.size() == 2);
168



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
169



4
        REQUIRE(mock->mDraws[0].x == 0);
170



4
        REQUIRE(mock->mDraws[0].y == 0);
171



4
        REQUIRE(mock->mDraws[0].image == img1);
172



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
173



4
        REQUIRE(mock->mDraws[1].x == 32);
174



4
        REQUIRE(mock->mDraws[1].y == 0);
175



4
        REQUIRE(mock->mDraws[1].image == img2);
176
177
2
        mock->mDraws.clear();
178
        layer->draw(mock,
179
            0, 0,
180
            2, 1,
181
1
            -10, -20);
182



5
        REQUIRE(mock->mDraws.size() == 2);
183



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
184



4
        REQUIRE(mock->mDraws[0].x == 10);
185



4
        REQUIRE(mock->mDraws[0].y == 20);
186



4
        REQUIRE(mock->mDraws[0].image == img1);
187



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
188



4
        REQUIRE(mock->mDraws[1].x == 42);
189



4
        REQUIRE(mock->mDraws[1].y == 20);
190



4
        REQUIRE(mock->mDraws[1].image == img2);
191
    }
192
193



70
    SECTION("simple 4")
194
    {
195
1
        map = new Map("map",
196
            2, 1,
197

3
            32, 32);
198
1
        layer = new MapLayer("test",
199
            0, 0,
200
            2, 1,
201
            false,
202
            0,
203

3
            0);
204
2
        layer->setTile(0, 0, img1);
205
2
        layer->setTile(1, 0, img1);
206
1
        map->addLayer(layer);
207
1
        layer->updateCache(2, 1);
208
209
        layer->draw(mock,
210
            0, 0,
211
            2, 1,
212
1
            0, 0);
213



5
        REQUIRE(mock->mDraws.size() == 1);
214



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawPattern);
215



4
        REQUIRE(mock->mDraws[0].x == 0);
216



4
        REQUIRE(mock->mDraws[0].y == 0);
217



4
        REQUIRE(mock->mDraws[0].width == 64);
218



4
        REQUIRE(mock->mDraws[0].height == 32);
219



4
        REQUIRE(mock->mDraws[0].image == img1);
220
221
2
        mock->mDraws.clear();
222
        layer->draw(mock,
223
            0, 0,
224
            2, 1,
225
1
            -10, 20);
226



5
        REQUIRE(mock->mDraws.size() == 1);
227



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawPattern);
228



4
        REQUIRE(mock->mDraws[0].x == 10);
229



4
        REQUIRE(mock->mDraws[0].y == -20);
230



4
        REQUIRE(mock->mDraws[0].width == 64);
231



4
        REQUIRE(mock->mDraws[0].height == 32);
232



4
        REQUIRE(mock->mDraws[0].image == img1);
233
    }
234
235



70
    SECTION("simple 4.2")
236
    {
237
1
        map = new Map("map",
238
            3, 1,
239

3
            32, 32);
240
1
        layer = new MapLayer("test",
241
            0, 0,
242
            3, 1,
243
            false,
244
            0,
245

3
            0);
246
2
        layer->setTile(0, 0, img1);
247
2
        layer->setTile(2, 0, img1);
248
1
        map->addLayer(layer);
249
1
        layer->updateCache(3, 1);
250
251
        layer->draw(mock,
252
            0, 0,
253
            3, 1,
254
1
            0, 0);
255



5
        REQUIRE(mock->mDraws.size() == 2);
256



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
257



4
        REQUIRE(mock->mDraws[0].x == 0);
258



4
        REQUIRE(mock->mDraws[0].y == 0);
259



4
        REQUIRE(mock->mDraws[0].image == img1);
260



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
261



4
        REQUIRE(mock->mDraws[1].x == 64);
262



4
        REQUIRE(mock->mDraws[1].y == 0);
263



4
        REQUIRE(mock->mDraws[1].image == img1);
264
265
2
        mock->mDraws.clear();
266
        layer->draw(mock,
267
            0, 0,
268
            3, 1,
269
1
            10, -20);
270



5
        REQUIRE(mock->mDraws.size() == 2);
271



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
272



4
        REQUIRE(mock->mDraws[0].x == -10);
273



4
        REQUIRE(mock->mDraws[0].y == 20);
274



4
        REQUIRE(mock->mDraws[0].image == img1);
275



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
276



4
        REQUIRE(mock->mDraws[1].x == 54);
277



4
        REQUIRE(mock->mDraws[1].y == 20);
278



4
        REQUIRE(mock->mDraws[1].image == img1);
279
    }
280
281



70
    SECTION("simple 5")
282
    {
283
1
        map = new Map("map",
284
            3, 1,
285

3
            32, 32);
286
1
        layer = new MapLayer("test",
287
            0, 0,
288
            3, 1,
289
            false,
290
            0,
291

3
            0);
292
2
        layer->setTile(0, 0, img1);
293
2
        layer->setTile(1, 0, img1);
294
1
        map->addLayer(layer);
295
1
        layer->updateCache(3, 1);
296
297
        layer->draw(mock,
298
            0, 0,
299
            3, 1,
300
1
            0, 0);
301



5
        REQUIRE(mock->mDraws.size() == 1);
302



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawPattern);
303



4
        REQUIRE(mock->mDraws[0].x == 0);
304



4
        REQUIRE(mock->mDraws[0].y == 0);
305



4
        REQUIRE(mock->mDraws[0].width == 64);
306



4
        REQUIRE(mock->mDraws[0].height == 32);
307



4
        REQUIRE(mock->mDraws[0].image == img1);
308
309
2
        mock->mDraws.clear();
310
        layer->draw(mock,
311
            0, 0,
312
            3, 1,
313
1
            -10, 20);
314



5
        REQUIRE(mock->mDraws.size() == 1);
315



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawPattern);
316



4
        REQUIRE(mock->mDraws[0].x == 10);
317



4
        REQUIRE(mock->mDraws[0].y == -20);
318



4
        REQUIRE(mock->mDraws[0].width == 64);
319



4
        REQUIRE(mock->mDraws[0].height == 32);
320



4
        REQUIRE(mock->mDraws[0].image == img1);
321
    }
322
323



70
    SECTION("simple 6")
324
    {
325
1
        map = new Map("map",
326
            3, 1,
327

3
            32, 32);
328
1
        layer = new MapLayer("test",
329
            0, 0,
330
            3, 1,
331
            false,
332
            0,
333

3
            0);
334
2
        layer->setTile(0, 0, img1);
335
2
        layer->setTile(1, 0, img1);
336
2
        layer->setTile(2, 0, img2);
337
1
        map->addLayer(layer);
338
1
        layer->updateCache(3, 1);
339
340
        layer->draw(mock,
341
            0, 0,
342
            3, 1,
343
1
            0, 0);
344



5
        REQUIRE(mock->mDraws.size() == 2);
345



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawPattern);
346



4
        REQUIRE(mock->mDraws[0].x == 0);
347



4
        REQUIRE(mock->mDraws[0].y == 0);
348



4
        REQUIRE(mock->mDraws[0].width == 64);
349



4
        REQUIRE(mock->mDraws[0].height == 32);
350



4
        REQUIRE(mock->mDraws[0].image == img1);
351



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
352



4
        REQUIRE(mock->mDraws[1].x == 64);
353



4
        REQUIRE(mock->mDraws[1].y == 0);
354



4
        REQUIRE(mock->mDraws[1].image == img2);
355
356
2
        mock->mDraws.clear();
357
        layer->draw(mock,
358
            0, 0,
359
            3, 1,
360
1
            -10, 20);
361



5
        REQUIRE(mock->mDraws.size() == 2);
362



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawPattern);
363



4
        REQUIRE(mock->mDraws[0].x == 10);
364



4
        REQUIRE(mock->mDraws[0].y == -20);
365



4
        REQUIRE(mock->mDraws[0].width == 64);
366



4
        REQUIRE(mock->mDraws[0].height == 32);
367



4
        REQUIRE(mock->mDraws[0].image == img1);
368



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
369



4
        REQUIRE(mock->mDraws[1].x == 74);
370



4
        REQUIRE(mock->mDraws[1].y == -20);
371



4
        REQUIRE(mock->mDraws[1].image == img2);
372
    }
373
374



70
    SECTION("simple 7")
375
    {
376
1
        map = new Map("map",
377
            3, 1,
378

3
            32, 32);
379
1
        layer = new MapLayer("test",
380
            0, 0,
381
            3, 1,
382
            false,
383
            0,
384

3
            0);
385
2
        layer->setTile(0, 0, img1);
386
2
        layer->setTile(1, 0, img1);
387
2
        layer->setTile(2, 0, img2);
388
1
        map->addLayer(layer);
389
1
        TileInfo *const tiles = layer->getTiles();
390
1
        tiles[0].isEnabled = false;
391
1
        layer->updateCache(3, 1);
392
393
        layer->draw(mock,
394
            0, 0,
395
            3, 1,
396
1
            0, 0);
397



5
        REQUIRE(mock->mDraws.size() == 2);
398



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
399



4
        REQUIRE(mock->mDraws[0].x == 32);
400



4
        REQUIRE(mock->mDraws[0].y == 0);
401



4
        REQUIRE(mock->mDraws[0].image == img1);
402



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
403



4
        REQUIRE(mock->mDraws[1].x == 64);
404



4
        REQUIRE(mock->mDraws[1].y == 0);
405



4
        REQUIRE(mock->mDraws[1].image == img2);
406
407
2
        mock->mDraws.clear();
408
        layer->draw(mock,
409
            0, 0,
410
            3, 1,
411
1
            -10, 20);
412



5
        REQUIRE(mock->mDraws.size() == 2);
413



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
414



4
        REQUIRE(mock->mDraws[0].x == 42);
415



4
        REQUIRE(mock->mDraws[0].y == -20);
416



4
        REQUIRE(mock->mDraws[0].image == img1);
417



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
418



4
        REQUIRE(mock->mDraws[1].x == 74);
419



4
        REQUIRE(mock->mDraws[1].y == -20);
420



4
        REQUIRE(mock->mDraws[1].image == img2);
421
    }
422
423



70
    SECTION("normal 1")
424
    {
425
1
        const int maxX = 100;
426
1
        const int maxY = 100;
427
1
        map = new Map("map",
428
            maxX, maxY,
429

3
            32, 32);
430
1
        layer = new MapLayer("test",
431
            0, 0,
432
            maxX, maxY,
433
            false,
434
            0,
435

3
            0);
436
2
        layer->setTile(1, 10, img1);
437
2
        layer->setTile(2, 10, img1);
438
2
        layer->setTile(3, 10, img1);
439
2
        layer->setTile(4, 10, img2);
440
2
        layer->setTile(5, 10, nullptr);
441
2
        layer->setTile(6, 10, img2);
442
2
        layer->setTile(7, 10, nullptr);
443
2
        layer->setTile(8, 10, nullptr);
444
2
        layer->setTile(9, 10, img2);
445
2
        layer->setTile(10, 10, img2);
446
2
        layer->setTile(11, 10, img3);
447
2
        layer->setTile(12, 10, nullptr);
448
2
        layer->setTile(13, 10, nullptr);
449
2
        layer->setTile(14, 10, nullptr);
450
2
        layer->setTile(15, 10, img1);
451
2
        layer->setTile(16, 10, img1);
452
2
        layer->setTile(17, 10, img1);
453
1
        map->addLayer(layer);
454
1
        layer->updateCache(maxX, maxY);
455
456
        layer->draw(mock,
457
            0, 0,
458
            maxX, maxY,
459
1
            0, 0);
460



5
        REQUIRE(mock->mDraws.size() == 6);
461



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawPattern);
462



4
        REQUIRE(mock->mDraws[0].x == 32 * 1);
463



4
        REQUIRE(mock->mDraws[0].y == 32 * 10);
464



4
        REQUIRE(mock->mDraws[0].width == 96);
465



4
        REQUIRE(mock->mDraws[0].height == 32);
466



4
        REQUIRE(mock->mDraws[0].image == img1);
467



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
468



4
        REQUIRE(mock->mDraws[1].x == 32 * 4);
469



4
        REQUIRE(mock->mDraws[1].y == 32 * 10);
470



4
        REQUIRE(mock->mDraws[1].image == img2);
471



4
        REQUIRE(mock->mDraws[2].drawType == MockDrawType::DrawImage);
472



4
        REQUIRE(mock->mDraws[2].x == 32 * 6);
473



4
        REQUIRE(mock->mDraws[2].y == 32 * 10);
474



4
        REQUIRE(mock->mDraws[2].image == img2);
475



4
        REQUIRE(mock->mDraws[3].drawType == MockDrawType::DrawPattern);
476



4
        REQUIRE(mock->mDraws[3].x == 32 * 9);
477



4
        REQUIRE(mock->mDraws[3].y == 32 * 10);
478



4
        REQUIRE(mock->mDraws[3].width == 64);
479



4
        REQUIRE(mock->mDraws[3].height == 32);
480



4
        REQUIRE(mock->mDraws[3].image == img2);
481



4
        REQUIRE(mock->mDraws[4].drawType == MockDrawType::DrawImage);
482



4
        REQUIRE(mock->mDraws[4].x == 32 * 11);
483



4
        REQUIRE(mock->mDraws[4].y == 32 * 10);
484



4
        REQUIRE(mock->mDraws[4].image == img3);
485



4
        REQUIRE(mock->mDraws[5].drawType == MockDrawType::DrawPattern);
486



4
        REQUIRE(mock->mDraws[5].x == 32 * 15);
487



4
        REQUIRE(mock->mDraws[5].y == 32 * 10);
488



4
        REQUIRE(mock->mDraws[5].width == 96);
489



4
        REQUIRE(mock->mDraws[5].height == 32);
490



4
        REQUIRE(mock->mDraws[5].image == img1);
491
492
2
        mock->mDraws.clear();
493
        layer->draw(mock,
494
            0, 0,
495
            maxX, maxY,
496
1
            -10, 20);
497



5
        REQUIRE(mock->mDraws.size() == 6);
498



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawPattern);
499



4
        REQUIRE(mock->mDraws[0].x == 32 * 1 + 10);
500



4
        REQUIRE(mock->mDraws[0].y == 32 * 10 - 20);
501



4
        REQUIRE(mock->mDraws[0].width == 96);
502



4
        REQUIRE(mock->mDraws[0].height == 32);
503



4
        REQUIRE(mock->mDraws[0].image == img1);
504



4
        REQUIRE(mock->mDraws[1].drawType == MockDrawType::DrawImage);
505



4
        REQUIRE(mock->mDraws[1].x == 32 * 4 + 10);
506



4
        REQUIRE(mock->mDraws[1].y == 32 * 10 - 20);
507



4
        REQUIRE(mock->mDraws[1].image == img2);
508



4
        REQUIRE(mock->mDraws[2].drawType == MockDrawType::DrawImage);
509



4
        REQUIRE(mock->mDraws[2].x == 32 * 6 + 10);
510



4
        REQUIRE(mock->mDraws[2].y == 32 * 10 - 20);
511



4
        REQUIRE(mock->mDraws[2].image == img2);
512



4
        REQUIRE(mock->mDraws[3].drawType == MockDrawType::DrawPattern);
513



4
        REQUIRE(mock->mDraws[3].x == 32 * 9 + 10);
514



4
        REQUIRE(mock->mDraws[3].y == 32 * 10 - 20);
515



4
        REQUIRE(mock->mDraws[3].width == 64);
516



4
        REQUIRE(mock->mDraws[3].height == 32);
517



4
        REQUIRE(mock->mDraws[3].image == img2);
518



4
        REQUIRE(mock->mDraws[4].drawType == MockDrawType::DrawImage);
519



4
        REQUIRE(mock->mDraws[4].x == 32 * 11 + 10);
520



4
        REQUIRE(mock->mDraws[4].y == 32 * 10 - 20);
521



4
        REQUIRE(mock->mDraws[4].image == img3);
522



4
        REQUIRE(mock->mDraws[5].drawType == MockDrawType::DrawPattern);
523



4
        REQUIRE(mock->mDraws[5].x == 32 * 15 + 10);
524



4
        REQUIRE(mock->mDraws[5].y == 32 * 10 - 20);
525



4
        REQUIRE(mock->mDraws[5].width == 96);
526



4
        REQUIRE(mock->mDraws[5].height == 32);
527



4
        REQUIRE(mock->mDraws[5].image == img1);
528
    }
529
530



70
    SECTION("normal2")
531
    {
532
1
        const int maxX = 100;
533
1
        const int maxY = 100;
534
1
        map = new Map("map",
535
            maxX, maxY,
536

3
            32, 32);
537
1
        layer = new MapLayer("test",
538
            0, 0,
539
            maxX, maxY,
540
            false,
541
            0,
542

3
            0);
543
1
        TileInfo *const tiles = layer->getTiles();
544
1
        map->addLayer(layer);
545
201
        for (int x = 0; x < maxX; x ++)
546
        {
547
20100
            for (int y = 0; y < maxY; y ++)
548
            {
549
20000
                layer->setTile(x, y, img1);
550
10000
                tiles[y * maxX + x].isEnabled = false;
551
            }
552
        }
553
1
        tiles[10 * maxX + 41].isEnabled = true;
554
1
        layer->updateCache(maxX, maxY);
555
556
        layer->draw(mock,
557
            0, 0,
558
            maxX, maxY,
559
1
            0, 0);
560



5
        REQUIRE(mock->mDraws.size() == 1);
561



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
562



4
        REQUIRE(mock->mDraws[0].x == 32 * 41);
563



4
        REQUIRE(mock->mDraws[0].y == 32 * 10);
564
565
2
        mock->mDraws.clear();
566
        layer->draw(mock,
567
            0, 0,
568
            maxX, maxY,
569
1
            -10, 20);
570



5
        REQUIRE(mock->mDraws.size() == 1);
571



4
        REQUIRE(mock->mDraws[0].drawType == MockDrawType::DrawImage);
572



4
        REQUIRE(mock->mDraws[0].x == 32 * 41 + 10);
573



4
        REQUIRE(mock->mDraws[0].y == 32 * 10 - 20);
574
    }
575
576
10
    delete map;
577
10
    delete img1;
578
10
    delete img2;
579
10
    delete img3;
580
10
    delete mock;
581

13
}