149 lines
4.7 KiB
Python
149 lines
4.7 KiB
Python
#!/usr/bin/env python3
|
|
"""Test ColorLayer and TileLayer position parsing with new PyPositionHelper pattern."""
|
|
import sys
|
|
import mcrfpy
|
|
|
|
def test_colorlayer_at():
|
|
"""Test ColorLayer.at() with various position formats."""
|
|
print("Testing ColorLayer.at() position parsing...")
|
|
|
|
# Create a grid and color layer
|
|
grid = mcrfpy.Grid(grid_size=(10, 10))
|
|
layer = mcrfpy.ColorLayer(z_index=-1, grid_size=(10, 10))
|
|
grid.layers.append(layer)
|
|
|
|
# Set a color at position
|
|
layer.set((5, 5), mcrfpy.Color(255, 0, 0))
|
|
|
|
# Test at() with tuple
|
|
c1 = layer.at((5, 5))
|
|
assert c1.r == 255 and c1.g == 0 and c1.b == 0, f"Failed: tuple position - got {c1.r},{c1.g},{c1.b}"
|
|
print(" - tuple position: PASS")
|
|
|
|
# Test at() with two args
|
|
c2 = layer.at(5, 5)
|
|
assert c2.r == 255 and c2.g == 0 and c2.b == 0, f"Failed: two args - got {c2.r},{c2.g},{c2.b}"
|
|
print(" - two args: PASS")
|
|
|
|
# Test at() with list (if supported)
|
|
c3 = layer.at([5, 5])
|
|
assert c3.r == 255 and c3.g == 0 and c3.b == 0, f"Failed: list position - got {c3.r},{c3.g},{c3.b}"
|
|
print(" - list position: PASS")
|
|
|
|
# Test at() with Vector
|
|
vec = mcrfpy.Vector(5, 5)
|
|
c4 = layer.at(vec)
|
|
assert c4.r == 255 and c4.g == 0 and c4.b == 0, f"Failed: Vector position - got {c4.r},{c4.g},{c4.b}"
|
|
print(" - Vector position: PASS")
|
|
|
|
print("ColorLayer.at(): ALL PASS")
|
|
|
|
|
|
def test_colorlayer_set():
|
|
"""Test ColorLayer.set() with grouped position."""
|
|
print("Testing ColorLayer.set() grouped position...")
|
|
|
|
grid = mcrfpy.Grid(grid_size=(10, 10))
|
|
layer = mcrfpy.ColorLayer(z_index=-1, grid_size=(10, 10))
|
|
grid.layers.append(layer)
|
|
|
|
# Test set() with tuple position
|
|
layer.set((3, 4), mcrfpy.Color(0, 255, 0))
|
|
c = layer.at((3, 4))
|
|
assert c.g == 255, f"Failed: tuple position - got g={c.g}"
|
|
print(" - tuple position: PASS")
|
|
|
|
# Test set() with list position
|
|
layer.set([7, 8], (0, 0, 255)) # Also test tuple color
|
|
c2 = layer.at((7, 8))
|
|
assert c2.b == 255, f"Failed: list position - got b={c2.b}"
|
|
print(" - list position: PASS")
|
|
|
|
# Test set() with Vector position
|
|
layer.set(mcrfpy.Vector(1, 1), mcrfpy.Color(128, 128, 128))
|
|
c3 = layer.at((1, 1))
|
|
assert c3.r == 128, f"Failed: Vector position - got r={c3.r}"
|
|
print(" - Vector position: PASS")
|
|
|
|
print("ColorLayer.set(): ALL PASS")
|
|
|
|
|
|
def test_tilelayer_at():
|
|
"""Test TileLayer.at() with various position formats."""
|
|
print("Testing TileLayer.at() position parsing...")
|
|
|
|
# Create a grid and tile layer
|
|
grid = mcrfpy.Grid(grid_size=(10, 10))
|
|
texture = mcrfpy.Texture("assets/kenney_tinydungeon.png", 16, 16)
|
|
layer = mcrfpy.TileLayer(z_index=-1, texture=texture, grid_size=(10, 10))
|
|
grid.layers.append(layer)
|
|
|
|
# Set a tile at position
|
|
layer.set((5, 5), 42)
|
|
|
|
# Test at() with tuple
|
|
t1 = layer.at((5, 5))
|
|
assert t1 == 42, f"Failed: tuple position - got {t1}"
|
|
print(" - tuple position: PASS")
|
|
|
|
# Test at() with two args
|
|
t2 = layer.at(5, 5)
|
|
assert t2 == 42, f"Failed: two args - got {t2}"
|
|
print(" - two args: PASS")
|
|
|
|
# Test at() with list
|
|
t3 = layer.at([5, 5])
|
|
assert t3 == 42, f"Failed: list position - got {t3}"
|
|
print(" - list position: PASS")
|
|
|
|
# Test at() with Vector
|
|
t4 = layer.at(mcrfpy.Vector(5, 5))
|
|
assert t4 == 42, f"Failed: Vector position - got {t4}"
|
|
print(" - Vector position: PASS")
|
|
|
|
print("TileLayer.at(): ALL PASS")
|
|
|
|
|
|
def test_tilelayer_set():
|
|
"""Test TileLayer.set() with grouped position."""
|
|
print("Testing TileLayer.set() grouped position...")
|
|
|
|
grid = mcrfpy.Grid(grid_size=(10, 10))
|
|
texture = mcrfpy.Texture("assets/kenney_tinydungeon.png", 16, 16)
|
|
layer = mcrfpy.TileLayer(z_index=-1, texture=texture, grid_size=(10, 10))
|
|
grid.layers.append(layer)
|
|
|
|
# Test set() with tuple position
|
|
layer.set((3, 4), 10)
|
|
assert layer.at((3, 4)) == 10, "Failed: tuple position"
|
|
print(" - tuple position: PASS")
|
|
|
|
# Test set() with list position
|
|
layer.set([7, 8], 20)
|
|
assert layer.at((7, 8)) == 20, "Failed: list position"
|
|
print(" - list position: PASS")
|
|
|
|
# Test set() with Vector position
|
|
layer.set(mcrfpy.Vector(1, 1), 30)
|
|
assert layer.at((1, 1)) == 30, "Failed: Vector position"
|
|
print(" - Vector position: PASS")
|
|
|
|
print("TileLayer.set(): ALL PASS")
|
|
|
|
|
|
# Run all tests
|
|
try:
|
|
test_colorlayer_at()
|
|
test_colorlayer_set()
|
|
test_tilelayer_at()
|
|
test_tilelayer_set()
|
|
print("\n=== ALL TESTS PASSED ===")
|
|
sys.exit(0)
|
|
except AssertionError as e:
|
|
print(f"\nTEST FAILED: {e}")
|
|
sys.exit(1)
|
|
except Exception as e:
|
|
print(f"\nTEST ERROR: {type(e).__name__}: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
sys.exit(1)
|