#!/usr/bin/env python3 """Test UICircle class implementation - Issue #129""" import mcrfpy from mcrfpy import automation import sys def take_screenshot(runtime): """Take screenshot after render completes""" mcrfpy.delTimer("screenshot") automation.screenshot("test_uicircle_result.png") print("Screenshot saved to test_uicircle_result.png") print("PASS - UICircle test completed") sys.exit(0) def run_test(runtime): """Main test - runs after scene is set up""" mcrfpy.delTimer("test") # Get the scene UI ui = mcrfpy.sceneUI("test") # Test 1: Create circles with different parameters print("Test 1: Creating circles...") # Simple circle - just radius c1 = mcrfpy.Circle(radius=50) c1.center = (100, 100) c1.fill_color = mcrfpy.Color(255, 0, 0) # Red ui.append(c1) print(f" Circle 1: {c1}") # Circle with center specified c2 = mcrfpy.Circle(radius=30, center=(250, 100), fill_color=mcrfpy.Color(0, 255, 0)) ui.append(c2) print(f" Circle 2: {c2}") # Circle with outline c3 = mcrfpy.Circle( radius=40, center=(400, 100), fill_color=mcrfpy.Color(0, 0, 255), outline_color=mcrfpy.Color(255, 255, 0), outline=5.0 ) ui.append(c3) print(f" Circle 3: {c3}") # Transparent fill with outline only c4 = mcrfpy.Circle( radius=35, center=(550, 100), fill_color=mcrfpy.Color(0, 0, 0, 0), outline_color=mcrfpy.Color(255, 255, 255), outline=3.0 ) ui.append(c4) print(f" Circle 4: {c4}") # Test 2: Verify properties print("\nTest 2: Verifying properties...") assert c1.radius == 50, f"Expected radius 50, got {c1.radius}" print(f" c1.radius = {c1.radius}") # Check center center = c2.center print(f" c2.center = ({center.x}, {center.y})") # Test 3: Modify properties print("\nTest 3: Modifying properties...") c1.radius = 60 assert c1.radius == 60, f"Expected radius 60, got {c1.radius}" print(f" Modified c1.radius = {c1.radius}") c2.fill_color = mcrfpy.Color(128, 0, 128) # Purple print(f" Modified c2.fill_color") # Test 4: Test visibility and opacity print("\nTest 4: Testing visibility and opacity...") c5 = mcrfpy.Circle(radius=25, center=(100, 200), fill_color=mcrfpy.Color(255, 128, 0)) c5.opacity = 0.5 ui.append(c5) print(f" c5.opacity = {c5.opacity}") c6 = mcrfpy.Circle(radius=25, center=(175, 200), fill_color=mcrfpy.Color(255, 128, 0)) c6.visible = False ui.append(c6) print(f" c6.visible = {c6.visible}") # Test 5: Test z_index print("\nTest 5: Testing z_index...") c7 = mcrfpy.Circle(radius=40, center=(300, 200), fill_color=mcrfpy.Color(0, 255, 255)) c7.z_index = 100 ui.append(c7) c8 = mcrfpy.Circle(radius=30, center=(320, 200), fill_color=mcrfpy.Color(255, 0, 255)) c8.z_index = 50 ui.append(c8) print(f" c7.z_index = {c7.z_index}, c8.z_index = {c8.z_index}") # Test 6: Test name property print("\nTest 6: Testing name property...") c9 = mcrfpy.Circle(radius=20, center=(450, 200), fill_color=mcrfpy.Color(128, 128, 128), name="test_circle") ui.append(c9) assert c9.name == "test_circle", f"Expected name 'test_circle', got '{c9.name}'" print(f" c9.name = '{c9.name}'") # Test 7: Test get_bounds print("\nTest 7: Testing get_bounds...") bounds = c1.get_bounds() print(f" c1.get_bounds() = {bounds}") # Test 8: Test move method print("\nTest 8: Testing move method...") old_center = (c1.center.x, c1.center.y) c1.move(10, 10) new_center = (c1.center.x, c1.center.y) print(f" c1 moved from {old_center} to {new_center}") # Schedule screenshot for next frame mcrfpy.setTimer("screenshot", take_screenshot, 50) # Create a test scene mcrfpy.createScene("test") mcrfpy.setScene("test") # Schedule test to run after game loop starts mcrfpy.setTimer("test", run_test, 50)