import { describe, expect, it } from 'vitest'; import { getBoardFlagDefinition, normalizeBoardFlagKind } from '../board-flags'; describe('board-flags', () => { it('normalizes board flag kind aliases', () => { expect(normalizeBoardFlagKind('pol')).toBe('pol'); expect(normalizeBoardFlagKind('memeflags')).toBe('pol'); expect(normalizeBoardFlagKind('mlp')).toBe('pony'); expect(normalizeBoardFlagKind('unknown')).toBeUndefined(); }); it('maps political flags to the flags-2 sprite grid', () => { expect(getBoardFlagDefinition('pol', 'AC')).toMatchObject({ code: 'AC', label: 'Anarcho-Capitalist', spritePath: 'assets/icons/flags-2.png', width: 16, height: 12, x: 0, y: 0, }); expect(getBoardFlagDefinition('pol', 'MZ')).toMatchObject({ code: 'MZ', label: 'Task Force Z', x: 64, y: 24, }); expect(getBoardFlagDefinition('pol', 'NB')).toMatchObject({ code: 'NB', label: 'National Bolshevik', x: 0, y: 36, }); expect(getBoardFlagDefinition('pol', 'RE')).toMatchObject({ code: 'RE', label: 'Republican', x: 0, y: 48, }); expect(getBoardFlagDefinition('pol', 'TM')).toMatchObject({ code: 'TM', label: 'Templar', x: 16, y: 48, }); expect(getBoardFlagDefinition('pol', 'WP')).toMatchObject({ code: 'WP', x: 64, y: 48 }); }); it('maps pony flags to the flags-pony sprite grid', () => { expect(getBoardFlagDefinition('pony', '4CC')).toMatchObject({ code: '4CC', label: '4cc /mlp/', spritePath: 'assets/icons/flags-pony.png', width: 16, height: 16, x: 0, y: 0, }); expect(getBoardFlagDefinition('pony', 'AJ')).toMatchObject({ code: 'AJ', label: 'Applejack', x: 80, y: 0 }); expect(getBoardFlagDefinition('pony', 'ZS')).toMatchObject({ code: 'ZS', label: 'Zipp Storm', x: 16, y: 144 }); }); });