avocado/packages/topdown/test/tiles.js
2024-01-05 20:02:38 -06:00

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);
// });
// });