// import {Flecks} from '@flecks/core'; // import {expect} from 'chai'; // describe('Tiles', () => { // let flecks; // beforeEach(async () => { // flecks = Flecks.mock({ // '@avocado/resource': require('@avocado/resource'), // '@avocado/topdown': require('../src'), // }); // await Promise.all(flecks.invokeFlat('@flecks/core/starting')); // }); // it("has sane defaults", async () => { // const {Tiles} = flecks.get('$avocado/resource.resources'); // const tiles = new Tiles(); // expect(tiles.size).to.deep.equal([0, 0]); // expect(tiles.data.length).to.equal(0); // }); // it("gets and sets tile data", async () => { // const {Tiles} = flecks.get('$avocado/resource.resources'); // const tiles = new Tiles({data: [0, 1, 2, 3], size: [2, 2]}); // expect(tiles.tileAt([0, 0])).to.equal(0); // expect(tiles.tileAt([1, 0])).to.equal(1); // expect(tiles.tileAt([0, 1])).to.equal(2); // expect(tiles.tileAt([1, 1])).to.equal(3); // tiles.setTileAt([0, 0], 69); // tiles.setTileAt([1, 0], 420); // tiles.setTileAt([0, 1], 311); // tiles.setTileAt([1, 1], 42); // expect(tiles.data).to.deep.equal([69, 420, 311, 42]); // }); // it("can get a data slice", async () => { // const {Tiles} = flecks.get('$avocado/resource.resources'); // const tiles = new Tiles( // { // data: [ // 0, 1, 2, 3, // 4, 5, 6, 7, // 8, 9, 10, 11, // 12, 13, 14, 15, // ], // size: [4, 4], // }, // ); // expect(tiles.slice([1, 1, 2, 2])).to.deep.equal([5, 6, 9, 10]); // expect(tiles.slice([1, 0, 3, 3])).to.deep.equal([1, 2, 3, 5, 6, 7, 9, 10, 11]); // expect(tiles.slice([-1, -1, 5, 5])) // .to.deep.equal([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]); // expect(tiles.slice([1, 1, 1, 1])).to.deep.equal([5]); // expect(tiles.slice([1, 1, 0, 0])).to.deep.equal([]); // }); // it("can get convex hulls around indices", () => { // const {Tiles} = flecks.get('$avocado/resource.resources'); // const hulls = [ // [ // [2, 0], // [3, 0], // [3, 3], // [1, 3], // [1, 1], // ], // [ // [4, 2], // [6, 2], // [7, 3], // [7, 4], // [4, 4], // ], // ]; // const tiles = new Tiles( // { // data: [ // 0, 0, 1, 0, 0, 0, 0, 0, // 0, 1, 1, 0, 0, 0, 0, 0, // 0, 1, 1, 0, 1, 1, 0, 0, // 0, 0, 0, 0, 1, 1, 1, 0, // ], // size: [8, 4], // }, // ); // expect(tiles.indexHulls(new Set([1]))).to.deep.equal(hulls); // }); // it("can stamp at", async () => { // const {Tiles} = flecks.get('$avocado/resource.resources'); // const tiles = new Tiles( // { // data: [ // 0, 0, 0, 0, // 0, 0, 0, 0, // 0, 0, 0, 0, // 0, 0, 0, 0, // ], // size: [4, 4], // }, // ); // tiles.stampAt([0, 0, 2, 3], [1, 1, 1, 1, 1, 1]) // expect(tiles.data).to.deep.equal([ // 1, 1, 0, 0, // 1, 1, 0, 0, // 1, 1, 0, 0, // 0, 0, 0, 0, // ]); // expect(tiles.packetsFor()).to.deep.equal([ // [ // 'TilesUpdate', // { // position: [0, 0], // size: [2, 3], // tiles: [1, 1, 1, 1, 1, 1], // }, // ], // ]); // }); // it("can handle pathological hulls", () => { // const {Tiles} = flecks.get('$avocado/resource.resources'); // const hulls = [ // [ // [ 0, 0 ], // [ 3, 0 ], // [ 4, 2 ], // [ 6, 2 ], // [ 6, 4 ], // [ 4, 4 ], // [ 3, 3 ], // [ 1, 2 ], // [ 0, 1 ], // ], // ]; // const tiles = new Tiles( // { // data: [ // 1, 1, 1, 0, 0, 0, 0, 0, // 0, 1, 1, 0, 0, 0, 0, 0, // 0, 0, 0, 1, 1, 1, 0, 0, // 0, 0, 0, 0, 1, 1, 0, 0, // ], // size: [8, 4], // }, // ); // expect(tiles.indexHulls(new Set([1]))).to.deep.equal(hulls); // }); // });