McRogueFace/tests/simple_timer_screenshot_test.py
John McCardle 18cfe93a44 Fix --exec interactive prompt bug and create comprehensive test suite
Major fixes:
- Fixed --exec entering Python REPL instead of game loop
- Resolved screenshot transparency issue (requires timer callbacks)
- Added debug output to trace Python initialization

Test suite created:
- 13 comprehensive tests covering all Python-exposed methods
- Tests use timer callback pattern for proper game loop interaction
- Discovered multiple critical bugs and missing features

Critical bugs found:
- Grid class segfaults on instantiation (blocks all Grid functionality)
- Issue #78 confirmed: Middle mouse click sends 'C' keyboard event
- Entity property setters have argument parsing errors
- Sprite texture setter returns improper error
- keypressScene() segfaults on non-callable arguments

Documentation updates:
- Updated CLAUDE.md with testing guidelines and TDD practices
- Created test reports documenting all findings
- Updated ROADMAP.md with test results and new priorities

The Grid segfault is now the highest priority as it blocks all Grid-based functionality.
2025-07-03 19:25:49 -04:00

40 lines
No EOL
1.1 KiB
Python

#!/usr/bin/env python3
"""Simplified test to verify timer-based screenshots work"""
import mcrfpy
from mcrfpy import automation
# Counter to track timer calls
call_count = 0
def take_screenshot_and_exit():
"""Timer callback that takes screenshot then exits"""
global call_count
call_count += 1
print(f"\nTimer callback fired! (call #{call_count})")
# Take screenshot
filename = f"timer_screenshot_test_{call_count}.png"
result = automation.screenshot(filename)
print(f"Screenshot result: {result} -> {filename}")
# Exit after first call
if call_count >= 1:
print("Exiting game...")
mcrfpy.exit()
# Set up a simple scene
print("Creating test scene...")
mcrfpy.createScene("test")
mcrfpy.setScene("test")
ui = mcrfpy.sceneUI("test")
# Add visible content - a white frame on default background
frame = mcrfpy.Frame(100, 100, 200, 200,
fill_color=mcrfpy.Color(255, 255, 255))
ui.append(frame)
print("Setting timer to fire in 100ms...")
mcrfpy.setTimer("screenshot_timer", take_screenshot_and_exit, 100)
print("Setup complete. Game loop starting...")