116 lines
3.9 KiB
Python
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.") |