All files / blacktrigram/src test-types.ts

0% Statements 0/0
0% Branches 1/1
0% Functions 1/1
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72                                                                                                                                               
// Test utility types for Black Trigram Korean martial arts game
 
import type { MockedFunction } from "vitest";
import { PlayerState } from "./systems";
import type { PlayerArchetype, TrigramStance } from "./types";
 
// Mock player state for testing Korean martial arts combat
export interface MockPlayerState extends PlayerState {
  readonly _isMock: true;
}
 
// Test combat scenario configuration
export interface TestCombatScenario {
  readonly player1: Partial<PlayerState>;
  readonly player2: Partial<PlayerState>;
  readonly scenario: string;
  readonly expectedOutcome?: string;
}
 
// Test archetype configuration for Korean martial arts
export interface TestArchetypeConfig {
  readonly archetype: PlayerArchetype;
  readonly preferredStances: readonly TrigramStance[];
  readonly testDamageMultiplier: number;
  readonly mockBehavior: "aggressive" | "defensive" | "balanced";
}
 
// Test vital point configuration
export interface TestVitalPointConfig {
  readonly id: string;
  readonly testAccuracy: number;
  readonly testDamage: number;
  readonly mockEffects: readonly string[];
}
 
// Test combat result for assertion
export interface TestCombatResult {
  readonly damage: number;
  readonly hit: boolean;
  readonly critical: boolean;
  readonly vitalPoint: boolean;
  readonly attacker: PlayerArchetype;
  readonly defender: PlayerArchetype;
}
 
// Test game state for integration testing
export interface TestGameState {
  readonly gamePhase: string;
  readonly player1: MockPlayerState;
  readonly player2: MockPlayerState;
  readonly timeRemaining: number;
  readonly currentRound: number;
}
 
// Mock audio manager for testing - Updated for Vitest
export interface MockAudioManager {
  readonly playMusic: MockedFunction<() => void>;
  readonly stopMusic: MockedFunction<() => void>;
  readonly playSFX: MockedFunction<() => void>;
  readonly playAttackSound: MockedFunction<(damage: number) => void>;
  readonly playHitSound: MockedFunction<(damage: number) => void>;
  readonly setVolume: MockedFunction<(volume: number) => void>;
  readonly isEnabled: boolean;
}
 
// Test utilities for Korean martial arts game
export interface TestUtils {
  readonly createMockPlayer: (archetype: PlayerArchetype) => MockPlayerState;
  readonly createMockCombat: () => TestCombatScenario;
  readonly mockAudioManager: MockAudioManager;
}