/** * Created by Brett on 08/02/14. */ var game, tilemap, mockedMap; module("Tilemap", { setup: function() { mockedMap = JSON.parse('{"url":"assets/maps/desert.json","data":{"height":40,"layers":[{"data":[30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,14,15,16,30,30,30,30,30,30,30,30,30,30,30,30,30,30,46,30,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,46,14,15,16,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,14,15,16,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,31,22,23,24,30,30,30,30,30,30,30,30,32,30,30,32,30,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,1,3,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,25,26,26,26,26,26,26,26,26,26,26,26,27,30,9,11,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,33,34,34,34,34,34,34,34,34,34,34,34,35,30,9,11,30,30,30,30,6,7,7,7,8,30,46,30,30,30,30,30,30,30,30,40,30,30,30,30,33,34,36,42,37,34,34,34,34,34,34,34,35,30,9,11,30,30,30,30,14,15,15,15,16,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,33,34,35,30,33,34,34,34,34,34,34,34,35,30,9,11,30,30,30,30,14,15,15,15,12,8,30,30,30,30,30,30,30,30,30,30,30,38,30,30,33,34,35,31,33,34,34,34,34,34,34,34,35,30,9,11,30,30,30,30,22,23,5,15,15,16,30,30,30,30,30,30,30,30,48,38,30,30,30,30,33,34,44,26,45,34,34,34,34,34,34,34,35,30,9,11,30,30,30,30,30,30,14,15,15,16,30,30,30,30,30,30,40,30,30,30,40,30,30,30,33,34,34,34,34,34,34,34,36,42,37,34,35,30,9,11,30,30,30,30,30,31,22,23,23,24,30,30,30,40,30,30,30,30,40,38,30,30,38,30,41,42,42,42,42,37,34,34,44,26,45,34,35,30,9,11,30,30,30,30,30,30,30,30,30,30,30,30,30,30,39,30,30,30,38,30,40,30,30,30,30,30,30,30,30,41,42,42,42,42,42,42,43,30,9,11,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,9,11,30,30,30,31,30,30,30,30,30,30,30,30,30,7,7,8,1,2,2,2,2,2,3,30,30,30,1,2,2,2,2,2,2,2,2,2,2,2,29,11,30,30,30,30,31,30,31,30,30,30,30,30,30,15,15,16,9,10,10,10,10,10,11,30,30,30,9,10,10,10,10,10,10,10,10,10,10,10,10,11,30,30,30,31,30,30,30,30,30,30,30,30,30,23,23,24,17,18,18,18,18,18,19,30,30,30,17,18,18,18,18,18,18,18,18,18,18,18,18,19,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,32,31,30,30,30,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,25,26,26,26,26,26,26,26,26,26,26,26,27,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,46,30,33,34,34,34,34,34,34,34,34,36,42,37,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,30,30,30,30,33,34,34,34,34,34,34,34,34,35,48,33,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,47,33,34,34,34,34,34,34,34,34,35,48,33,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,39,30,30,30,33,34,34,34,34,34,34,34,34,35,48,33,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,33,34,34,34,34,34,34,34,34,44,26,45,35,30,30,30,30,30,30,39,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,47,30,33,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,33,34,34,34,34,34,34,34,34,34,34,34,35,48,30,30,30,30,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,33,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,42,42,42,42,42,42,42,42,42,42,42,43,30,30,30,38,30,38,30,30,30,30,32,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,38,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,38,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,6,7,7,7,7,8,30,30,30,30,30,30,30,40,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,26,26,26,26,26,26,26,45,34,34,34,34,44,27,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,34,34,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,34,34,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,34,34,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,32,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,30,30,30,30,30,34,34,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],"height":40,"name":"Ground","opacity":1,"type":"tilelayer","visible":true,"width":40,"x":0,"y":0}],"orientation":"orthogonal","properties":{},"tileheight":32,"tilesets":[{"firstgid":1,"image":"C:/Program Files (x86)/Tiled/examples/tmw_desert_spacing.png","imageheight":199,"imagewidth":265,"margin":1,"name":"Desert","properties":{},"spacing":1,"tileheight":32,"tilewidth":32}],"tilewidth":32,"version":1,"width":40},"format":1,"layers":[{"name":"Ground","width":40,"height":40,"alpha":1,"visible":true,"indexes":[30,14,15,16,46,31,32,22,23,24,1,3,25,26,27,9,11,33,34,35,6,7,8,40,36,42,37,12,38,5,48,44,45,41,39,43,2,29,10,17,18,19,47],"tileMargin":1,"tileSpacing":1,"data":[[30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,14,15,16,30,30,30,30,30,30,30,30,30,30,30,30,30],[30,46,30,30,30,30,30,30,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,46,14,15,16,30,31,30,30,30,30,30,30,30,30,30,30,30],[30,30,30,30,30,30,30,30,30,30,30,30,30,30,31,31,31,31,31,31,30,30,30,30,14,15,16,30,30,30,30,30,30,30,30,30,32,30,30,30],[30,30,31,30,30,30,30,30,30,30,30,30,30,30,31,31,31,31,31,31,30,30,30,31,22,23,24,30,30,30,30,30,30,30,30,32,30,30,32,30],[30,30,30,30,30,31,30,30,30,30,30,30,30,30,31,31,31,31,31,31,30,30,30,30,30,1,3,30,30,31,30,30,30,30,30,30,30,30,30,30],[30,30,30,30,30,30,30,30,30,30,30,25,26,26,31,31,31,31,31,31,26,26,26,27,30,9,11,30,30,30,30,30,30,30,30,30,30,30,30,30],[30,30,30,30,30,30,30,30,30,30,30,33,34,34,31,31,31,31,31,31,34,34,34,35,30,9,11,30,30,30,30,6,7,7,7,8,30,46,30,30],[30,30,30,30,30,30,40,30,30,30,30,33,34,36,31,31,31,31,31,31,34,34,34,35,30,9,11,30,30,30,30,14,15,15,15,16,30,30,30,30],[30,30,30,30,30,30,30,30,30,30,30,33,34,35,30,33,34,34,34,34,34,34,34,35,30,9,11,30,30,30,30,14,15,15,15,12,8,30,30,30],[30,30,30,30,30,30,30,30,38,30,30,33,34,35,31,33,34,34,34,34,34,34,34,35,30,9,11,30,30,30,30,22,23,5,15,15,16,30,30,30],[30,30,30,30,30,48,38,30,30,30,30,33,34,44,26,45,34,34,34,34,34,34,34,35,30,9,11,30,30,30,30,30,30,14,15,15,16,30,30,30],[30,30,30,40,30,30,30,40,30,30,30,33,34,34,34,34,34,34,34,36,42,37,34,35,30,9,11,30,30,30,30,30,31,22,23,23,24,30,30,30],[40,30,30,30,30,40,38,30,30,38,30,41,42,42,42,42,37,34,34,44,26,45,34,35,30,9,11,30,30,30,30,30,30,30,30,30,30,30,30,30],[30,39,30,30,30,38,30,40,30,30,30,30,30,30,30,30,41,42,42,42,42,42,42,43,30,9,11,30,30,30,30,30,30,30,30,30,30,30,30,30],[30,30,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,9,11,30,30,30,31,30,30,30,30,30,30,30,30,30],[7,7,8,1,2,2,2,2,2,3,30,30,30,1,2,2,2,2,2,2,2,2,2,2,2,29,11,30,30,30,30,31,30,31,30,30,30,30,30,30],[15,15,16,9,10,10,10,10,10,11,30,30,30,9,10,10,10,10,10,10,10,10,10,10,10,10,11,30,30,30,31,30,30,30,30,30,30,30,30,30],[23,23,24,17,18,18,18,18,18,19,30,30,30,17,18,18,18,18,18,18,18,18,18,18,18,18,19,30,30,30,30,30,30,32,30,30,30,30,30,30],[30,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,32,31],[30,30,30,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32],[39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,25,26,26,26,26,26,26,26,26,26,26,26,27,30],[30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,46,30,33,34,34,34,34,34,34,34,34,36,42,37,35,30],[30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,30,30,30,30,33,34,34,34,34,34,34,34,34,35,48,33,35,30],[30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,47,33,34,34,34,34,34,34,34,34,35,48,33,35,30],[30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,39,30,30,30,33,34,34,34,34,34,34,34,34,35,48,33,35,30],[30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,33,34,34,34,34,34,34,34,34,44,26,45,35,30],[30,30,30,30,30,39,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,47,30,33,34,34,34,34,34,34,34,34,34,34,34,35,30],[30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,33,34,34,34,34,34,34,34,34,34,34,34,35,48],[30,30,30,30,30,39,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,33,34,34,34,34,34,34,34,34,34,34,34,35,30],[30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,42,42,42,42,42,42,42,42,42,42,42,43,30],[30,30,38,30,38,30,30,30,30,32,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[30,38,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30],[30,30,30,38,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30,30,31,30,30,30,30],[30,30,30,30,30,30,30,6,7,7,7,7,8,30,30,30,30,30,30,30,40,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,30,32,30,30],[26,26,26,26,26,26,26,45,34,34,34,34,44,27,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[34,34,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[34,34,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[34,34,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,32,30,30,30,30,30,30,30,30,32,30,30,30,30,30,30,30,30,30,30,30,30,30],[34,34,34,34,34,34,34,34,34,34,34,34,34,35,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]]}]}'); game = { cache: { getTilemapData: function (key) { return mockedMap; } } }; tilemap = new Phaser.Tilemap(game); }, teardown: function() { mockedMap = null; game = null; tilemap = null; } }); test( "Tilemap#copy", function() { var result = tilemap.copy(0, 0, 2, 2); equal( result.length, 5 ); equal( result[0].x, 0 ); equal( result[0].y, 0 ); equal( result[0].width, 2 ); equal( result[0].height, 2 ); }); test("Tilemap#paste", function() { var result = tilemap.copy(0, 0, 2, 2); var currentTilemapLayer = tilemap.layers[tilemap.currentLayer]; notEqual(currentTilemapLayer.dirty, true); equal(currentTilemapLayer.data[0][0].index, 30); result[1].index = 99; // this changes both the index in the result and in the tilemap even before paste // ... probably not desired behaviour tilemap.paste(0, 0, result); equal(currentTilemapLayer.dirty, true); equal(currentTilemapLayer.data[0][0].index, 99); currentTilemapLayer.dirty = false; tilemap.paste(10, 0, result); equal(currentTilemapLayer.dirty, true); equal(currentTilemapLayer.data[0][10].index, 99); });