McRogueFace/tests/ui_Entity_issue73_test.py

116 lines
3.9 KiB
Python

#!/usr/bin/env python3
"""Test for Entity class - Related to issue #73 (index() method)"""
import mcrfpy
from datetime import datetime
print("Test script starting...")
def test_Entity():
"""Test Entity class and index() method for collection removal"""
# Create test scene with grid
mcrfpy.createScene("entity_test")
mcrfpy.setScene("entity_test")
ui = mcrfpy.sceneUI("entity_test")
# Create a grid
grid = mcrfpy.Grid(10, 10,
mcrfpy.default_texture,
mcrfpy.Vector(10, 10),
mcrfpy.Vector(400, 400))
ui.append(grid)
entities = grid.entities
# Create multiple entities
entity1 = mcrfpy.Entity(mcrfpy.Vector(2, 2), mcrfpy.default_texture, 0, grid)
entity2 = mcrfpy.Entity(mcrfpy.Vector(5, 5), mcrfpy.default_texture, 1, grid)
entity3 = mcrfpy.Entity(mcrfpy.Vector(7, 7), mcrfpy.default_texture, 2, grid)
entities.append(entity1)
entities.append(entity2)
entities.append(entity3)
print(f"Created {len(entities)} entities")
# Test entity properties
try:
print(f"✓ Entity1 pos: {entity1.pos}")
print(f"✓ Entity1 draw_pos: {entity1.draw_pos}")
print(f"✓ Entity1 sprite_number: {entity1.sprite_number}")
# Modify properties
entity1.pos = mcrfpy.Vector(3, 3)
entity1.sprite_number = 5
print("✓ Entity properties modified")
except Exception as e:
print(f"✗ Entity property access failed: {e}")
# Test gridstate access
try:
gridstate = entity2.gridstate
print(f"✓ Entity gridstate accessible")
# Test at() method
point_state = entity2.at(0, 0)
print(f"✓ Entity at() method works")
except Exception as e:
print(f"✗ Entity gridstate/at() failed: {e}")
# Test index() method (Issue #73)
print("\nTesting index() method (Issue #73)...")
try:
# Try to find entity2's index
index = entity2.index()
print(f"✓ index() method works: entity2 is at index {index}")
# Verify by checking collection
if entities[index] == entity2:
print("✓ Index is correct")
else:
print("✗ Index mismatch")
# Remove using index
entities.remove(index)
print(f"✓ Removed entity using index, now {len(entities)} entities")
except AttributeError:
print("✗ index() method not implemented (Issue #73)")
# Try manual removal as workaround
try:
for i in range(len(entities)):
if entities[i] == entity2:
entities.remove(i)
print(f"✓ Manual removal workaround succeeded")
break
except:
print("✗ Manual removal also failed")
except Exception as e:
print(f"✗ index() method error: {e}")
# Test EntityCollection iteration
try:
positions = []
for entity in entities:
positions.append(entity.pos)
print(f"✓ Entity iteration works: {len(positions)} entities")
except Exception as e:
print(f"✗ Entity iteration failed: {e}")
# Test EntityCollection extend (Issue #27)
try:
new_entities = [
mcrfpy.Entity(mcrfpy.Vector(1, 1), mcrfpy.default_texture, 3, grid),
mcrfpy.Entity(mcrfpy.Vector(9, 9), mcrfpy.default_texture, 4, grid)
]
entities.extend(new_entities)
print(f"✓ extend() method works: now {len(entities)} entities")
except AttributeError:
print("✗ extend() method not implemented (Issue #27)")
except Exception as e:
print(f"✗ extend() method error: {e}")
# Skip screenshot in headless mode
print("PASS")
# Run test immediately in headless mode
print("Running test immediately...")
test_Entity()
print("Test completed.")