170 lines
4.3 KiB
Python
170 lines
4.3 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""Test glyph_explorer.py with automated tests."""
|
||
|
|
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
||
|
|
|
||
|
|
from glyph_explorer import GlyphExplorer
|
||
|
|
|
||
|
|
|
||
|
|
def test_list_glyphs():
|
||
|
|
"""Test listing glyphs."""
|
||
|
|
print("Test: List glyphs")
|
||
|
|
explorer = GlyphExplorer()
|
||
|
|
glyphs = explorer.list_all_glyphs(20)
|
||
|
|
|
||
|
|
if len(glyphs) != 20:
|
||
|
|
print(f"FAIL: Expected 20 glyphs, got {len(glyphs)}")
|
||
|
|
return False
|
||
|
|
|
||
|
|
# Check G001 is first
|
||
|
|
if glyphs[0]["id"] != "G001":
|
||
|
|
print(f"FAIL: First glyph should be G001, got {glyphs[0]['id']}")
|
||
|
|
return False
|
||
|
|
|
||
|
|
# Check G001 has 152 powers
|
||
|
|
if glyphs[0]["power_count"] != 152:
|
||
|
|
print(f"FAIL: G001 should have 152 powers, got {glyphs[0]['power_count']}")
|
||
|
|
return False
|
||
|
|
|
||
|
|
print(f"PASS: Listed {len(glyphs)} glyphs, G001 has {glyphs[0]['power_count']} powers")
|
||
|
|
return True
|
||
|
|
|
||
|
|
|
||
|
|
def test_show_glyph_details():
|
||
|
|
"""Test showing glyph details."""
|
||
|
|
print("\nTest: Show glyph details")
|
||
|
|
explorer = GlyphExplorer()
|
||
|
|
|
||
|
|
result = explorer.show_glyph_details("G001")
|
||
|
|
if not result:
|
||
|
|
print("FAIL: Could not show G001 details")
|
||
|
|
return False
|
||
|
|
|
||
|
|
print("PASS: G001 details displayed")
|
||
|
|
return True
|
||
|
|
|
||
|
|
|
||
|
|
def test_show_all_superpowers():
|
||
|
|
"""Test showing all superpowers."""
|
||
|
|
print("\nTest: Show all superpowers")
|
||
|
|
explorer = GlyphExplorer()
|
||
|
|
|
||
|
|
result = explorer.show_all_superpowers(50)
|
||
|
|
if not result:
|
||
|
|
print("FAIL: Could not show superpowers")
|
||
|
|
return False
|
||
|
|
|
||
|
|
print("PASS: Superpowers displayed")
|
||
|
|
return True
|
||
|
|
|
||
|
|
|
||
|
|
def test_g001_activation():
|
||
|
|
"""Test G001 activation."""
|
||
|
|
print("\nTest: G001 activation")
|
||
|
|
explorer = GlyphExplorer()
|
||
|
|
|
||
|
|
result = explorer.test_g001_activation()
|
||
|
|
if not result:
|
||
|
|
print("FAIL: G001 activation test failed")
|
||
|
|
return False
|
||
|
|
|
||
|
|
print("PASS: G001 activation test passed")
|
||
|
|
return True
|
||
|
|
|
||
|
|
|
||
|
|
def test_power_boost():
|
||
|
|
"""Test power boost calculations."""
|
||
|
|
print("\nTest: Power boost calculations")
|
||
|
|
explorer = GlyphExplorer()
|
||
|
|
|
||
|
|
result = explorer.test_power_boost_calculation()
|
||
|
|
if not result:
|
||
|
|
print("FAIL: Power boost test failed")
|
||
|
|
return False
|
||
|
|
|
||
|
|
print("PASS: Power boost calculations verified")
|
||
|
|
return True
|
||
|
|
|
||
|
|
|
||
|
|
def test_specialized_types():
|
||
|
|
"""Test specialized types distribution."""
|
||
|
|
print("\nTest: Specialized types distribution")
|
||
|
|
explorer = GlyphExplorer()
|
||
|
|
|
||
|
|
result = explorer.show_specialized_types()
|
||
|
|
if not result:
|
||
|
|
print("FAIL: Could not show specialized types")
|
||
|
|
return False
|
||
|
|
|
||
|
|
counts = explorer.get_specialized_types()
|
||
|
|
total = sum(counts.values())
|
||
|
|
|
||
|
|
if total != 600:
|
||
|
|
print(f"FAIL: Expected 600 glyphs total, got {total}")
|
||
|
|
return False
|
||
|
|
|
||
|
|
print(f"PASS: Specialized types distribution shown ({total} glyphs)")
|
||
|
|
return True
|
||
|
|
|
||
|
|
|
||
|
|
def test_search_glyphs():
|
||
|
|
"""Test searching glyphs."""
|
||
|
|
print("\nTest: Search glyphs")
|
||
|
|
explorer = GlyphExplorer()
|
||
|
|
|
||
|
|
results = explorer.search_glyphs("ledo")
|
||
|
|
|
||
|
|
if len(results) == 0:
|
||
|
|
print("FAIL: Search returned no results")
|
||
|
|
return False
|
||
|
|
|
||
|
|
if results[0]["id"] != "G001":
|
||
|
|
print(f"FAIL: First result should be G001, got {results[0]['id']}")
|
||
|
|
return False
|
||
|
|
|
||
|
|
print(f"PASS: Search found {len(results)} glyphs, first is {results[0]['id']}")
|
||
|
|
return True
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
"""Run all tests."""
|
||
|
|
print("=" * 70)
|
||
|
|
print("GLYPH EXPLORER TEST SUITE")
|
||
|
|
print("=" * 70)
|
||
|
|
|
||
|
|
tests = [
|
||
|
|
("List glyphs", test_list_glyphs),
|
||
|
|
("Show glyph details", test_show_glyph_details),
|
||
|
|
("Show superpowers", test_show_all_superpowers),
|
||
|
|
("G001 activation", test_g001_activation),
|
||
|
|
("Power boost", test_power_boost),
|
||
|
|
("Specialized types", test_specialized_types),
|
||
|
|
("Search glyphs", test_search_glyphs),
|
||
|
|
]
|
||
|
|
|
||
|
|
passed = 0
|
||
|
|
failed = 0
|
||
|
|
|
||
|
|
for name, test_func in tests:
|
||
|
|
try:
|
||
|
|
if test_func():
|
||
|
|
passed += 1
|
||
|
|
else:
|
||
|
|
failed += 1
|
||
|
|
except Exception as e:
|
||
|
|
print(f"FAIL: {name} - {e}")
|
||
|
|
failed += 1
|
||
|
|
|
||
|
|
print("\n" + "=" * 70)
|
||
|
|
print(f"RESULTS: {passed}/{len(tests)} passed")
|
||
|
|
print("=" * 70)
|
||
|
|
|
||
|
|
return 0 if failed == 0 else 1
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
sys.exit(main())
|