87 lines
2.8 KiB
Python
87 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
"""Test that Issue #78 is fixed - Middle Mouse Click should NOT send 'C' keyboard event"""
|
|
import mcrfpy
|
|
from mcrfpy import automation
|
|
import sys
|
|
|
|
# Track events
|
|
keyboard_events = []
|
|
click_events = []
|
|
|
|
def keyboard_handler(key):
|
|
"""Track keyboard events"""
|
|
keyboard_events.append(key)
|
|
print(f"Keyboard event received: '{key}'")
|
|
|
|
def click_handler(x, y, button):
|
|
"""Track click events"""
|
|
click_events.append((x, y, button))
|
|
print(f"Click event received: ({x}, {y}, button={button})")
|
|
|
|
def test_middle_click_fix(runtime):
|
|
"""Test that middle click no longer sends 'C' key event"""
|
|
print(f"\n=== Testing Issue #78 Fix (runtime: {runtime}) ===")
|
|
|
|
# Simulate middle click
|
|
print("\nSimulating middle click at (200, 200)...")
|
|
automation.middleClick(200, 200)
|
|
|
|
# Also test other clicks for comparison
|
|
print("Simulating left click at (100, 100)...")
|
|
automation.click(100, 100)
|
|
|
|
print("Simulating right click at (300, 300)...")
|
|
automation.rightClick(300, 300)
|
|
|
|
# Wait a moment for events to process
|
|
mcrfpy.setTimer("check_results", check_results, 500)
|
|
|
|
def check_results(runtime):
|
|
"""Check if the bug is fixed"""
|
|
print(f"\n=== Results ===")
|
|
print(f"Keyboard events received: {len(keyboard_events)}")
|
|
print(f"Click events received: {len(click_events)}")
|
|
|
|
# Check if 'C' was incorrectly triggered
|
|
if 'C' in keyboard_events or 'c' in keyboard_events:
|
|
print("\n✗ FAIL - Issue #78 still exists: Middle click triggered 'C' keyboard event!")
|
|
print(f"Keyboard events: {keyboard_events}")
|
|
else:
|
|
print("\n✓ PASS - Issue #78 is FIXED: No spurious 'C' keyboard event from middle click!")
|
|
|
|
# Take screenshot
|
|
filename = f"issue78_fixed_{int(runtime)}.png"
|
|
automation.screenshot(filename)
|
|
print(f"\nScreenshot saved: {filename}")
|
|
|
|
# Cleanup and exit
|
|
mcrfpy.delTimer("check_results")
|
|
sys.exit(0)
|
|
|
|
# Set up test scene
|
|
print("Setting up test scene...")
|
|
mcrfpy.createScene("issue78_test")
|
|
mcrfpy.setScene("issue78_test")
|
|
ui = mcrfpy.sceneUI("issue78_test")
|
|
|
|
# Register keyboard handler
|
|
mcrfpy.keypressScene(keyboard_handler)
|
|
|
|
# Create a clickable frame
|
|
frame = mcrfpy.Frame(50, 50, 400, 400,
|
|
fill_color=mcrfpy.Color(100, 150, 200),
|
|
outline_color=mcrfpy.Color(255, 255, 255),
|
|
outline=3.0)
|
|
frame.click = click_handler
|
|
ui.append(frame)
|
|
|
|
# Add label
|
|
caption = mcrfpy.Caption(mcrfpy.Vector(100, 100),
|
|
text="Issue #78 Test - Middle Click",
|
|
fill_color=mcrfpy.Color(255, 255, 255))
|
|
caption.size = 24
|
|
ui.append(caption)
|
|
|
|
# Schedule test
|
|
print("Scheduling test to run after render loop starts...")
|
|
mcrfpy.setTimer("test", test_middle_click_fix, 1000) |