Skip to content

Commit 2c50797

Browse files
committed
test(tile-data): add tests for finding tiles
1 parent e5cf7ba commit 2c50797

File tree

2 files changed

+46
-5
lines changed

2 files changed

+46
-5
lines changed

src/tile-data.test.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,4 +545,49 @@ describe("findTile", () => {
545545
ty: 0,
546546
});
547547
});
548+
549+
test("matches entries whose id is a string array", () => {
550+
const tile = findTile(
551+
createTestTileset([
552+
{
553+
file: "aliases.webp",
554+
nx: 2,
555+
ny: 1,
556+
tiles: [{ id: ["foo", "bar"], fg: 1 }],
557+
},
558+
]),
559+
"bar",
560+
);
561+
562+
expect(tile?.fg).toMatchObject({
563+
file: "aliases.webp",
564+
tx: 1,
565+
ty: 0,
566+
});
567+
});
568+
569+
test("resolves sprite references from fg and bg sprite objects", () => {
570+
const tile = findTile(
571+
createTestTileset([
572+
{
573+
file: "sprites.webp",
574+
nx: 2,
575+
ny: 2,
576+
tiles: [{ id: "sprite-ref", fg: { sprite: 2 }, bg: { sprite: 3 } }],
577+
},
578+
]),
579+
"sprite-ref",
580+
);
581+
582+
expect(tile?.fg).toMatchObject({
583+
file: "sprites.webp",
584+
tx: 0,
585+
ty: 1,
586+
});
587+
expect(tile?.bg).toMatchObject({
588+
file: "sprites.webp",
589+
tx: 1,
590+
ty: 1,
591+
});
592+
});
548593
});

src/tile-data.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -688,11 +688,7 @@ function buildTileLookupIndex(tileData: IndexedTilesetData): TileLookupIndex {
688688
function firstSpriteRef(value: unknown): number | undefined {
689689
const maybeArrayHead = Array.isArray(value) ? value[0] : value;
690690
if (typeof maybeArrayHead === "number") return maybeArrayHead;
691-
if (
692-
typeof maybeArrayHead === "object" &&
693-
maybeArrayHead !== null &&
694-
typeof maybeArrayHead.sprite === "number"
695-
) {
691+
if (isRecord(maybeArrayHead) && typeof maybeArrayHead.sprite === "number") {
696692
return maybeArrayHead.sprite;
697693
}
698694
}

0 commit comments

Comments
 (0)