117 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			117 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"X Entity property access failed: {e}")
 | 
						|
    
 | 
						|
    # Test gridstate access
 | 
						|
    try:
 | 
						|
        gridstate = entity2.gridstate
 | 
						|
        print(" Entity gridstate accessible")
 | 
						|
        
 | 
						|
        # Test at() method
 | 
						|
        point_state = entity2.at()#.at(0, 0)
 | 
						|
        print(" Entity at() method works")
 | 
						|
    except Exception as e:
 | 
						|
        print(f"X 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(":)  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"X 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"X 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.")
 |