McRogueFace/tests/unit/test_builtin_context.py

128 lines
3.2 KiB
Python

#!/usr/bin/env python3
"""Test Python builtins in function context like the failing demos"""
import mcrfpy
print("Testing builtins in different contexts...")
print("=" * 50)
# Test 1: At module level (working in our test)
print("Test 1: Module level")
try:
for x in range(3):
print(f" x={x}")
print(" ✓ Module level works")
except Exception as e:
print(f" ✗ Error: {type(e).__name__}: {e}")
print()
# Test 2: In a function
print("Test 2: Inside function")
def test_function():
try:
for x in range(3):
print(f" x={x}")
print(" ✓ Function level works")
except Exception as e:
print(f" ✗ Error: {type(e).__name__}: {e}")
import traceback
traceback.print_exc()
test_function()
print()
# Test 3: In a function that creates mcrfpy objects
print("Test 3: Function creating mcrfpy objects")
def create_scene():
try:
mcrfpy.createScene("test")
print(" ✓ Created scene")
# Now try range
for x in range(3):
print(f" x={x}")
print(" ✓ Range after createScene works")
# Create grid
grid = mcrfpy.Grid(grid_x=10, grid_y=10)
print(" ✓ Created grid")
# Try range again
for x in range(3):
print(f" x={x}")
print(" ✓ Range after Grid creation works")
return grid
except Exception as e:
print(f" ✗ Error: {type(e).__name__}: {e}")
import traceback
traceback.print_exc()
return None
grid = create_scene()
print()
# Test 4: The exact failing pattern
print("Test 4: Exact failing pattern")
def failing_pattern():
try:
mcrfpy.createScene("failing_test")
grid = mcrfpy.Grid(grid_x=14, grid_y=10)
# This is where it fails in the demos
walls = []
print(" About to enter range loop...")
for x in range(1, 8):
walls.append((x, 1))
print(f" ✓ Created walls: {walls}")
except Exception as e:
print(f" ✗ Error at line: {type(e).__name__}: {e}")
import traceback
traceback.print_exc()
failing_pattern()
print()
# Test 5: Check if it's related to the append operation
print("Test 5: Testing append in loop")
def test_append():
try:
walls = []
# Test 1: Simple append
walls.append((1, 1))
print(" ✓ Single append works")
# Test 2: Manual loop
i = 0
while i < 3:
walls.append((i, 1))
i += 1
print(f" ✓ While loop append works: {walls}")
# Test 3: Range with different operations
walls2 = []
for x in range(3):
tup = (x, 2)
walls2.append(tup)
print(f" ✓ Range with temp variable works: {walls2}")
# Test 4: Direct tuple creation in append
walls3 = []
for x in range(3):
walls3.append((x, 3))
print(f" ✓ Direct tuple append works: {walls3}")
except Exception as e:
print(f" ✗ Error: {type(e).__name__}: {e}")
import traceback
traceback.print_exc()
test_append()
print()
print("All tests complete.")