PyCatan-AI / tests /integration /test_road_building.py
EZTIME2025
organise the project
69373e6
"""
Quick test for Road Building card functionality
"""
from pycatan import Game
from pycatan.core.card import DevCard
from pycatan.management.game_manager import GameManager
from pycatan.players.human_user import HumanUser
from pycatan.management.actions import ActionType
# Create a simple game
game = Game(num_of_players=3)
users = [
HumanUser("Alice", 0),
HumanUser("Bob", 1),
HumanUser("Charlie", 2)
]
# Create GameManager
gm = GameManager(users)
gm.game = game
# Give player 0 a Road Building card for testing
game.players[0].add_dev_card(DevCard.Road)
print(f"Player 0 has {len(game.players[0].dev_cards)} dev cards")
print(f"Dev cards: {game.players[0].dev_cards}")
# Test parsing the command
user = users[0]
game_state = gm.get_full_state()
# Test 1: Just "use road" without roads - should fail with helpful message
print("\n=== Test 1: use road (without roads) ===")
try:
action = user._parse_input("use road", game_state)
print(f"Action created: {action}")
except Exception as e:
print(f"Expected error: {e}")
# Test 2: Full command with both roads
print("\n=== Test 2: use road rd 10 11 rd 12 13 ===")
try:
action = user._parse_input("use road rd 10 11 rd 12 13", game_state)
print(f"Action type: {action.action_type}")
print(f"Card type: {action.parameters.get('card_type')}")
print(f"Has road_one_coords: {'road_one_coords' in action.parameters}")
print(f"Has road_two_coords: {'road_two_coords' in action.parameters}")
if 'road_one_coords' in action.parameters:
print(f"Road 1 coords: {action.parameters['road_one_coords']}")
if 'road_two_coords' in action.parameters:
print(f"Road 2 coords: {action.parameters['road_two_coords']}")
except Exception as e:
print(f"Error: {e}")
print("\n✅ Parsing test complete!")