Files
miku-discord/uno-online/test-integration.js

53 lines
1.8 KiB
JavaScript
Raw Normal View History

// Simple test to verify the card parser and game state builder work
const { parseCard, isCardPlayable, getPlayableCards } = require('./client/src/utils/cardParser');
const { buildGameStateJSON } = require('./client/src/utils/gameStateBuilder');
console.log('Testing Card Parser...');
// Test 1: Parse a simple number card
const card1 = parseCard('5R');
console.log('✓ Parse 5R:', JSON.stringify(card1, null, 2));
// Test 2: Parse a wild card
const card2 = parseCard('W');
console.log('✓ Parse W:', JSON.stringify(card2, null, 2));
// Test 3: Check playability
const playable = isCardPlayable('5R', 'R', 3);
console.log('✓ Can play 5R on 3R?', playable);
// Test 4: Get playable cards
const hand = ['5R', '7B', 'W', '3G'];
const playableCards = getPlayableCards(hand, 'R', 5);
console.log('✓ Playable cards from hand:', playableCards.map(c => c.code));
console.log('\nTesting Game State Builder...');
// Test 5: Build game state
const mockGameState = {
gameOver: false,
winner: null,
turn: 'Player 2',
player1Deck: ['1R', '2B', '3G', '4Y', '5R'],
player2Deck: ['5R', '7B', 'W'],
currentColor: 'R',
currentNumber: 5,
playedCardsPile: ['1B', '2B', '3R', '4R', '5R'],
drawCardPile: new Array(80).fill('back')
};
try {
const gameStateJSON = buildGameStateJSON(mockGameState, 'Player 2');
console.log('✓ Game State JSON generated successfully!');
console.log(' Turn:', gameStateJSON.game.currentTurn);
console.log(' Current Card:', gameStateJSON.currentCard.displayName);
console.log(' Bot has', gameStateJSON.player2.cards.length, 'cards');
console.log(' Playable:', gameStateJSON.player2.playableCards.length);
console.log(' Actions:', gameStateJSON.botContext.actions.length);
} catch (error) {
console.error('✗ Error building game state:', error.message);
}
console.log('\n✅ All tests passed!');