Directory structure cleanup and organization overhaul
This commit is contained in:
parent
1a143982e1
commit
98fc49a978
119 changed files with 10483 additions and 4042 deletions
142
tests/unit/ui_Grid_test.py
Normal file
142
tests/unit/ui_Grid_test.py
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Test for mcrfpy.Grid class - Related to issues #77, #74, #50, #52, #20"""
|
||||
import mcrfpy
|
||||
from datetime import datetime
|
||||
try:
|
||||
from mcrfpy import automation
|
||||
has_automation = True
|
||||
except ImportError:
|
||||
has_automation = False
|
||||
print("Warning: automation module not available")
|
||||
|
||||
def test_Grid():
|
||||
"""Test Grid creation and properties"""
|
||||
# Create test scene
|
||||
mcrfpy.createScene("grid_test")
|
||||
mcrfpy.setScene("grid_test")
|
||||
ui = mcrfpy.sceneUI("grid_test")
|
||||
|
||||
# Test grid creation
|
||||
try:
|
||||
# Note: Grid requires texture, creating one for testing
|
||||
texture = mcrfpy.Texture("assets/kenney_ice.png", 16, 16)
|
||||
grid = mcrfpy.Grid(20, 15, # grid dimensions
|
||||
texture, # texture
|
||||
mcrfpy.Vector(10, 10), # position
|
||||
mcrfpy.Vector(400, 300)) # size
|
||||
ui.append(grid)
|
||||
print("[PASS] Grid created successfully")
|
||||
except Exception as e:
|
||||
print(f"[FAIL] Failed to create Grid: {e}")
|
||||
print("FAIL")
|
||||
return
|
||||
|
||||
# Test grid properties
|
||||
try:
|
||||
# Test grid_size (Issue #20)
|
||||
grid_size = grid.grid_size
|
||||
print(f"[PASS] Grid size: {grid_size}")
|
||||
|
||||
# Test position and size
|
||||
print(f"Position: {grid.position}")
|
||||
print(f"Size: {grid.size}")
|
||||
|
||||
# Test individual coordinate properties
|
||||
print(f"Coordinates: x={grid.x}, y={grid.y}, w={grid.w}, h={grid.h}")
|
||||
|
||||
# Test grid_y property (Issue #74)
|
||||
try:
|
||||
# This might fail if grid_y is not implemented
|
||||
print(f"Grid dimensions via properties: grid_x=?, grid_y=?")
|
||||
print("[FAIL] Issue #74: Grid.grid_y property may be missing")
|
||||
except:
|
||||
pass
|
||||
|
||||
except Exception as e:
|
||||
print(f"[FAIL] Property access failed: {e}")
|
||||
|
||||
# Test center/pan functionality
|
||||
try:
|
||||
grid.center = mcrfpy.Vector(10, 7)
|
||||
print(f"[PASS] Center set to: {grid.center}")
|
||||
grid.center_x = 5
|
||||
grid.center_y = 5
|
||||
print(f"[PASS] Center modified to: ({grid.center_x}, {grid.center_y})")
|
||||
except Exception as e:
|
||||
print(f"[FAIL] Center/pan failed: {e}")
|
||||
|
||||
# Test zoom
|
||||
try:
|
||||
grid.zoom = 1.5
|
||||
print(f"[PASS] Zoom set to: {grid.zoom}")
|
||||
except Exception as e:
|
||||
print(f"[FAIL] Zoom failed: {e}")
|
||||
|
||||
# Test at() method for GridPoint access (Issue #77)
|
||||
try:
|
||||
# This tests the error message issue
|
||||
point = grid.at(0, 0)
|
||||
print("[PASS] GridPoint access works")
|
||||
|
||||
# Try out of bounds access to test error message
|
||||
try:
|
||||
invalid_point = grid.at(100, 100)
|
||||
print("[FAIL] Out of bounds access should fail")
|
||||
except Exception as e:
|
||||
error_msg = str(e)
|
||||
if "Grid.grid_y" in error_msg:
|
||||
print(f"[FAIL] Issue #77: Error message has copy/paste bug: {error_msg}")
|
||||
else:
|
||||
print(f"[PASS] Out of bounds error: {error_msg}")
|
||||
except Exception as e:
|
||||
print(f"[FAIL] GridPoint access failed: {e}")
|
||||
|
||||
# Test entities collection
|
||||
try:
|
||||
entities = grid.entities
|
||||
print(f"[PASS] Entities collection has {len(entities)} items")
|
||||
|
||||
# Add an entity
|
||||
entity = mcrfpy.Entity(mcrfpy.Vector(5, 5),
|
||||
texture,
|
||||
0, # sprite index
|
||||
grid)
|
||||
entities.append(entity)
|
||||
print(f"[PASS] Entity added, collection now has {len(entities)} items")
|
||||
|
||||
# Test out-of-bounds entity (Issue #52)
|
||||
out_entity = mcrfpy.Entity(mcrfpy.Vector(50, 50), # Outside 20x15 grid
|
||||
texture,
|
||||
1,
|
||||
grid)
|
||||
entities.append(out_entity)
|
||||
print("[PASS] Out-of-bounds entity added (Issue #52: should be skipped in rendering)")
|
||||
|
||||
except Exception as e:
|
||||
print(f"[FAIL] Entity management failed: {e}")
|
||||
|
||||
# Note about missing features
|
||||
print("\nMissing features:")
|
||||
print("- Issue #50: UIGrid background color field")
|
||||
print("- Issue #6, #8, #9: RenderTexture support")
|
||||
|
||||
# Take screenshot if automation is available
|
||||
if has_automation:
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
filename = f"test_Grid_{timestamp}.png"
|
||||
automation.screenshot(filename)
|
||||
print(f"Screenshot saved: {filename}")
|
||||
else:
|
||||
print("Screenshot skipped - automation not available")
|
||||
print("PASS")
|
||||
|
||||
# Set up timer to run test
|
||||
mcrfpy.setTimer("test", test_Grid, 1000)
|
||||
|
||||
# Cancel timer after running once
|
||||
def cleanup():
|
||||
mcrfpy.delTimer("test")
|
||||
mcrfpy.delTimer("cleanup")
|
||||
|
||||
mcrfpy.setTimer("cleanup", cleanup, 1100)
|
||||
Loading…
Add table
Add a link
Reference in a new issue