Files
sporel-tool-atlas-baker/tests/scan-sprite.test.js

48 lines
1.8 KiB
JavaScript

const { test } = require('node:test');
const assert = require('node:assert');
const path = require('node:path');
const { scanSpriteSourceDir } = require('../src/scan-sprite');
const FRESH = path.resolve(__dirname, 'fixtures/sprite-fresh');
const COLLISION = path.resolve(__dirname, 'fixtures/sprite-collision');
test('scan-sprite: 4 PNGs, alphabetical, no errors', () => {
const { sources, errors } = scanSpriteSourceDir(FRESH, {});
assert.deepStrictEqual(errors, []);
assert.strictEqual(sources.length, 4);
assert.strictEqual(sources[0].alias, 'barrel_large');
assert.strictEqual(sources[1].alias, 'bed1');
assert.strictEqual(sources[2].alias, 'bench1');
assert.strictEqual(sources[3].alias, 'sack');
});
test('scan-sprite: sources carry sourcePath + sourceFile', () => {
const { sources } = scanSpriteSourceDir(FRESH, {});
assert.ok(sources[1].sourcePath.endsWith('Bed1.png'));
assert.strictEqual(sources[1].sourceFile, 'Bed1.png');
});
test('scan-sprite: alias collision -> loud error', () => {
const { sources, errors } = scanSpriteSourceDir(COLLISION, {});
assert.strictEqual(sources.length, 0);
assert.strictEqual(errors.length, 1);
assert.match(errors[0], /alias collision/i);
assert.match(errors[0], /bench_table1/);
});
test('scan-sprite: missing dir -> error', () => {
const { sources, errors } = scanSpriteSourceDir('/nonexistent/path', {});
assert.strictEqual(sources.length, 0);
assert.ok(errors[0].includes('does not exist'));
});
test('scan-sprite: applies stripPrefix option', () => {
const { sources, errors } = scanSpriteSourceDir(FRESH, {
stripPrefix: 'Bed',
});
assert.deepStrictEqual(errors, []);
// Bed1 -> 1, Bench1 not stripped -> bench1, etc.
const aliases = sources.map(s => s.alias).sort();
assert.ok(aliases.includes('1'));
});