52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
import {Latus} from '@latus/core';
|
|
import {expect} from 'chai';
|
|
|
|
describe('Tiles', () => {
|
|
let latus;
|
|
beforeEach(async () => {
|
|
latus = Latus.mock({
|
|
'@avocado/resource': require('@avocado/resource'),
|
|
'@avocado/topdown': require('../src'),
|
|
});
|
|
await Promise.all(latus.invokeFlat('@latus/core/starting'));
|
|
});
|
|
it("has sane defaults", async () => {
|
|
const {Tiles} = latus.get('%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} = latus.get('%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} = latus.get('%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([]);
|
|
});
|
|
});
|