5180 fichiers 38.5 Mo 0 téléchargements 275 vues mis à jour il y a 6 heures ui
selectors.test.ts 2.6 Ko Télécharger le fichier
import { describe, expect, it } from 'vitest';
import { HEIGHT_SCHEME } from './constants';
import { areaCount, brushChar, defaultEmptyTilemap, tileFill } from './selectors';

describe('areaCount', () => {
    it('returns zeros for empty grid', () => {
        expect(areaCount([])).toEqual({ total: 0, walkable: 0 });
    });

    it('counts total = walkable when no blocked tiles', () => {
        const grid = [
            [
                { h: 0, blocked: false },
                { h: 1, blocked: false }
            ],
            [
                { h: 2, blocked: false },
                { h: 3, blocked: false }
            ]
        ];
        expect(areaCount(grid)).toEqual({ total: 4, walkable: 4 });
    });

    it('excludes blocked from walkable but counts in total', () => {
        const grid = [
            [
                { h: 0, blocked: false },
                { h: 0, blocked: true }
            ],
            [
                { h: 2, blocked: false },
                { h: 3, blocked: false }
            ]
        ];
        expect(areaCount(grid)).toEqual({ total: 3, walkable: 3 });
    });

    it('treats blocked tiles as non-tiles (per existing UI semantics)', () => {
        const grid = [
            [
                { h: 0, blocked: true },
                { h: 0, blocked: true },
                { h: 0, blocked: true }
            ],
            [
                { h: 0, blocked: false },
                { h: 1, blocked: false },
                { h: 0, blocked: true }
            ]
        ];
        expect(areaCount(grid)).toEqual({ total: 2, walkable: 2 });
    });
});

describe('brushChar', () => {
    it('h=0 → "0"', () => expect(brushChar(0)).toBe('0'));
    it('h=26 → "q"', () => expect(brushChar(26)).toBe('q'));
    it('clamps below to "0"', () => expect(brushChar(-5)).toBe('0'));
    it('clamps above to "q"', () => expect(brushChar(99)).toBe('q'));
});

describe('tileFill', () => {
    it('returns COLORMAP entry for non-blocked tile', () => {
        const fill = tileFill({ h: 0, blocked: false });
        expect(fill).toBe('#0065ff');
    });

    it('returns COLORMAP entry for blocked tile', () => {
        expect(tileFill({ h: 5, blocked: true })).toBe('#101010');
    });
});

describe('defaultEmptyTilemap', () => {
    it('returns a rows×cols grid of blocked tiles', () => {
        const grid = defaultEmptyTilemap(3, 4);
        expect(grid).toHaveLength(3);
        expect(grid[0]).toHaveLength(4);
        expect(grid[0][0]).toEqual({ h: 0, blocked: true });
        expect(grid[2][3]).toEqual({ h: 0, blocked: true });
    });
});
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser