Applique .gitattributes sur tous les fichiers existants. Élimine les différences fantômes entre WSL et Windows. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
61 lines
2.1 KiB
TypeScript
Executable File
61 lines
2.1 KiB
TypeScript
Executable File
import { describe, it, expect } from 'vitest';
|
|
import { RACE_GEN, GEN_COLORS, BREEDING_RECIPES, RACES_DATA, isBaseRace, generationOf, raceColor } from '@domain/value-objects/Race';
|
|
import { Gender } from '@domain/value-objects/Gender';
|
|
|
|
describe('Race', () => {
|
|
it('base races are gen 1', () => {
|
|
expect(generationOf('Rousse')).toBe(1);
|
|
expect(generationOf('Amande')).toBe(1);
|
|
expect(generationOf('Dorée')).toBe(1);
|
|
expect(isBaseRace('Rousse')).toBe(true);
|
|
});
|
|
|
|
it('gen 2 races are correctly mapped', () => {
|
|
expect(generationOf('Dorée et Rousse')).toBe(2);
|
|
expect(generationOf('Amande et Dorée')).toBe(2);
|
|
expect(generationOf('Amande et Rousse')).toBe(2);
|
|
expect(isBaseRace('Dorée et Rousse')).toBe(false);
|
|
});
|
|
|
|
it('GEN_COLORS has 10 entries', () => {
|
|
expect(Object.keys(GEN_COLORS)).toHaveLength(10);
|
|
});
|
|
|
|
it('BREEDING_RECIPES maps baby to parents', () => {
|
|
expect(BREEDING_RECIPES['Dorée et Rousse']).toEqual(['Rousse', 'Dorée']);
|
|
expect(BREEDING_RECIPES['Amande et Dorée']).toEqual(['Amande', 'Dorée']);
|
|
});
|
|
|
|
it('Ebène = Amande et Dorée + Dorée et Rousse (pas Amande et Rousse)', () => {
|
|
expect(BREEDING_RECIPES['Ebène']).toEqual(['Amande et Dorée', 'Dorée et Rousse']);
|
|
});
|
|
|
|
it('RACES_DATA has generations 2-10', () => {
|
|
for (let g = 2; g <= 10; g++) {
|
|
expect(RACES_DATA[g]).toBeDefined();
|
|
expect(RACES_DATA[g]!.length).toBeGreaterThan(0);
|
|
}
|
|
});
|
|
|
|
it('raceColor returns a color string', () => {
|
|
expect(raceColor('Rousse')).toBe('#c8622a');
|
|
expect(raceColor('Dorée')).toBe('#e8b820');
|
|
expect(raceColor('Unknown')).toBe('#888');
|
|
});
|
|
|
|
it('all breeding recipes have valid parents in RACE_GEN', () => {
|
|
for (const [baby, [pA, pB]] of Object.entries(BREEDING_RECIPES)) {
|
|
expect(RACE_GEN[baby]).toBeDefined();
|
|
expect(RACE_GEN[pA]).toBeDefined();
|
|
expect(RACE_GEN[pB]).toBeDefined();
|
|
}
|
|
});
|
|
});
|
|
|
|
describe('Gender', () => {
|
|
it('has male, female, neutral', () => {
|
|
const values: Gender[] = ['m', 'f', 'n'];
|
|
expect(values).toHaveLength(3);
|
|
});
|
|
});
|