const { test } = require('node:test'); const assert = require('node:assert'); const { stripPrefix, camelToSnakeCase, aliasFromFilename } = require('../src/alias'); test('stripPrefix: strips matching prefix', () => { assert.strictEqual(stripPrefix('TC_Basics Asset Pack_Bed1', 'TC_Basics Asset Pack_'), 'Bed1'); }); test('stripPrefix: returns unchanged when no match', () => { assert.strictEqual(stripPrefix('Bed1', 'TC_Basics Asset Pack_'), 'Bed1'); }); test('stripPrefix: empty prefix returns unchanged', () => { assert.strictEqual(stripPrefix('Bed1', ''), 'Bed1'); }); test('camelToSnakeCase: BenchTable1 -> bench_table1', () => { assert.strictEqual(camelToSnakeCase('BenchTable1'), 'bench_table1'); }); test('camelToSnakeCase: ArmourStand -> armour_stand', () => { assert.strictEqual(camelToSnakeCase('ArmourStand'), 'armour_stand'); }); test('camelToSnakeCase: Bed1 -> bed1', () => { assert.strictEqual(camelToSnakeCase('Bed1'), 'bed1'); }); test('camelToSnakeCase: BarrelLarge -> barrel_large', () => { assert.strictEqual(camelToSnakeCase('BarrelLarge'), 'barrel_large'); }); test('camelToSnakeCase: already snake_case unchanged', () => { assert.strictEqual(camelToSnakeCase('bench_table1'), 'bench_table1'); }); test('aliasFromFilename: full pipeline', () => { const alias = aliasFromFilename('TC_Basics Asset Pack_BenchTable1.png', { stripPrefix: 'TC_Basics Asset Pack_', }); assert.strictEqual(alias, 'bench_table1'); }); test('aliasFromFilename: no opts -> bare-name snake_case', () => { assert.strictEqual(aliasFromFilename('Bed1.png', {}), 'bed1'); }); test('aliasFromFilename: handles .webp extension', () => { assert.strictEqual(aliasFromFilename('Bed1.webp', {}), 'bed1'); });