143 lines
4.0 KiB
JavaScript
143 lines
4.0 KiB
JavaScript
// 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.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.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.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.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.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.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);
|
|
// });
|
|
// });
|