Files
LEDMatrix/test/test_leaderboard.py

100 lines
3.0 KiB
Python

#!/usr/bin/env python3
"""
Test script for the LeaderboardManager
"""
import sys
import os
import json
import logging
# Add the src directory to the path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src'))
from leaderboard_manager import LeaderboardManager
from display_manager import DisplayManager
from config_manager import ConfigManager
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
def test_leaderboard_manager():
"""Test the leaderboard manager functionality."""
# Load configuration
config_manager = ConfigManager()
config = config_manager.load_config()
# Enable leaderboard and some sports for testing
config['leaderboard'] = {
'enabled': True,
'enabled_sports': {
'nfl': {
'enabled': True,
'top_teams': 5
},
'nba': {
'enabled': True,
'top_teams': 5
},
'mlb': {
'enabled': True,
'top_teams': 5
}
},
'update_interval': 3600,
'scroll_speed': 2,
'scroll_delay': 0.05,
'display_duration': 60,
'loop': True,
'request_timeout': 30,
'dynamic_duration': True,
'min_duration': 30,
'max_duration': 300,
'duration_buffer': 0.1
}
# Initialize display manager (this will be a mock for testing)
display_manager = DisplayManager(config)
# Initialize leaderboard manager
leaderboard_manager = LeaderboardManager(config, display_manager)
print("Testing LeaderboardManager...")
print(f"Enabled: {leaderboard_manager.is_enabled}")
print(f"Enabled sports: {[k for k, v in leaderboard_manager.league_configs.items() if v['enabled']]}")
# Test fetching standings
print("\nFetching standings...")
leaderboard_manager.update()
print(f"Number of leagues with data: {len(leaderboard_manager.leaderboard_data)}")
for league_data in leaderboard_manager.leaderboard_data:
league = league_data['league']
teams = league_data['teams']
print(f"\n{league.upper()}:")
for i, team in enumerate(teams[:5]): # Show top 5
record = f"{team['wins']}-{team['losses']}"
if 'ties' in team:
record += f"-{team['ties']}"
print(f" {i+1}. {team['abbreviation']} {record}")
# Test image creation
print("\nCreating leaderboard image...")
if leaderboard_manager.leaderboard_data:
leaderboard_manager._create_leaderboard_image()
if leaderboard_manager.leaderboard_image:
print(f"Image created successfully: {leaderboard_manager.leaderboard_image.size}")
print(f"Dynamic duration: {leaderboard_manager.dynamic_duration:.1f}s")
else:
print("Failed to create image")
else:
print("No data available to create image")
if __name__ == "__main__":
test_leaderboard_manager()