89 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
#!/usr/bin/env python3
 | 
						|
"""
 | 
						|
Test for Issue #9: Recreate RenderTexture when UIGrid is resized
 | 
						|
 | 
						|
This test checks if resizing a UIGrid properly recreates its RenderTexture.
 | 
						|
"""
 | 
						|
 | 
						|
import mcrfpy
 | 
						|
from mcrfpy import automation
 | 
						|
import sys
 | 
						|
 | 
						|
def run_test(runtime):
 | 
						|
    """Test that UIGrid properly handles resizing"""
 | 
						|
    try:
 | 
						|
        # Create a grid with initial size
 | 
						|
        grid = mcrfpy.Grid(20, 20)
 | 
						|
        grid.x = 50
 | 
						|
        grid.y = 50
 | 
						|
        grid.w = 200
 | 
						|
        grid.h = 200
 | 
						|
        
 | 
						|
        # Add grid to scene
 | 
						|
        scene_ui = mcrfpy.sceneUI("test")
 | 
						|
        scene_ui.append(grid)
 | 
						|
        
 | 
						|
        # Take initial screenshot
 | 
						|
        automation.screenshot("/tmp/grid_initial.png")
 | 
						|
        print("Initial grid created at 200x200")
 | 
						|
        
 | 
						|
        # Add some visible content to the grid
 | 
						|
        for x in range(5):
 | 
						|
            for y in range(5):
 | 
						|
                grid.at(x, y).color = mcrfpy.Color(255, 0, 0, 255)  # Red squares
 | 
						|
        
 | 
						|
        automation.screenshot("/tmp/grid_with_content.png")
 | 
						|
        print("Added red squares to grid")
 | 
						|
        
 | 
						|
        # Test 1: Resize the grid smaller
 | 
						|
        print("\nTest 1: Resizing grid to 100x100...")
 | 
						|
        grid.w = 100
 | 
						|
        grid.h = 100
 | 
						|
        
 | 
						|
        automation.screenshot("/tmp/grid_resized_small.png")
 | 
						|
        
 | 
						|
        # The grid should still render correctly
 | 
						|
        print("✓ Test 1: Grid resized to 100x100")
 | 
						|
        
 | 
						|
        # Test 2: Resize the grid larger than initial
 | 
						|
        print("\nTest 2: Resizing grid to 400x400...")
 | 
						|
        grid.w = 400
 | 
						|
        grid.h = 400
 | 
						|
        
 | 
						|
        automation.screenshot("/tmp/grid_resized_large.png")
 | 
						|
        
 | 
						|
        # Add content at the edges to test if render texture is big enough
 | 
						|
        for x in range(15, 20):
 | 
						|
            for y in range(15, 20):
 | 
						|
                grid.at(x, y).color = mcrfpy.Color(0, 255, 0, 255)  # Green squares
 | 
						|
        
 | 
						|
        automation.screenshot("/tmp/grid_resized_with_edge_content.png")
 | 
						|
        print("✓ Test 2: Grid resized to 400x400 with edge content")
 | 
						|
        
 | 
						|
        # Test 3: Resize beyond the hardcoded 1920x1080 limit
 | 
						|
        print("\nTest 3: Resizing grid beyond 1920x1080...")
 | 
						|
        grid.w = 2000
 | 
						|
        grid.h = 1200
 | 
						|
        
 | 
						|
        automation.screenshot("/tmp/grid_resized_huge.png")
 | 
						|
        
 | 
						|
        # This should fail with the current implementation
 | 
						|
        print("✗ Test 3: This likely shows rendering errors due to fixed RenderTexture size")
 | 
						|
        print("This is the bug described in Issue #9!")
 | 
						|
        
 | 
						|
        print("\nScreenshots saved to /tmp/grid_*.png")
 | 
						|
        print("Check grid_resized_huge.png for rendering artifacts")
 | 
						|
        
 | 
						|
    except Exception as e:
 | 
						|
        print(f"Test error: {e}")
 | 
						|
        import traceback
 | 
						|
        traceback.print_exc()
 | 
						|
    
 | 
						|
    sys.exit(0)
 | 
						|
 | 
						|
# Set up the test scene
 | 
						|
mcrfpy.createScene("test")
 | 
						|
mcrfpy.setScene("test")
 | 
						|
 | 
						|
# Schedule test to run after game loop starts
 | 
						|
mcrfpy.setTimer("test", run_test, 100) |