import { describe, expect, it } from 'vitest'; import { GameConstraints } from './GameConstraints'; const sampleConstraints = { maxDrivers: 64, maxTeams: 32, defaultMaxDrivers: 24, minDrivers: 2, supportsTeams: true, supportsMultiClass: true, }; describe('GameConstraints', () => { it('should create', () => { const gc = new GameConstraints('iracing', sampleConstraints); expect(gc.gameId).toBe('iracing'); expect(gc.maxDrivers).toBe(64); }); it('should validate driver count', () => { const gc = new GameConstraints('iracing', sampleConstraints); expect(gc.validateDriverCount(10)).toEqual({ valid: true }); expect(gc.validateDriverCount(1)).toEqual({ valid: false, error: 'Minimum 2 drivers required' }); expect(gc.validateDriverCount(100)).toEqual({ valid: false, error: 'Maximum 64 drivers allowed for IRACING' }); }); it('should validate team count', () => { const gc = new GameConstraints('iracing', sampleConstraints); expect(gc.validateTeamCount(10)).toEqual({ valid: true }); expect(gc.validateTeamCount(100)).toEqual({ valid: false, error: 'Maximum 32 teams allowed for IRACING' }); }); it('should not support teams if false', () => { const noTeams = { ...sampleConstraints, supportsTeams: false }; const gc = new GameConstraints('acc', noTeams); expect(gc.validateTeamCount(1)).toEqual({ valid: false, error: 'ACC does not support team-based leagues' }); }); it('equals', () => { const gc1 = new GameConstraints('iracing', sampleConstraints); const gc2 = new GameConstraints('iracing', sampleConstraints); const gc3 = new GameConstraints('acc', sampleConstraints); expect(gc1.equals(gc2)).toBe(true); expect(gc1.equals(gc3)).toBe(false); }); });