93 lines
2.7 KiB
Python
93 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test log patterns against real log examples.
|
|
Run: python tests/test_log_patterns.py
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from core.log_watcher import LogWatcher
|
|
|
|
def test_loot_patterns():
|
|
"""Test loot patterns against real log lines."""
|
|
test_cases = [
|
|
# User's format (English with brackets)
|
|
("2026-02-08 22:17:30 [System]: You received [Shrapnel] x (67) Value: 0.0067 PED", "loot"),
|
|
("2026-02-08 22:17:30 [System]: You received [Animal Oil Residue] x (2) Value: 0.0200 PED", "loot"),
|
|
# Standard format
|
|
("2026-02-08 22:17:30 [System] You received Shrapnel x (67) Value: 0.0067 PED", "loot"),
|
|
# Swedish format
|
|
("2026-02-08 22:17:30 [System] Du fick Shrapnel x (67) Värde: 0.0067 PED", "loot"),
|
|
]
|
|
|
|
watcher = LogWatcher.__new__(LogWatcher) # Create without __init__
|
|
|
|
passed = 0
|
|
failed = 0
|
|
|
|
print("Testing loot patterns...")
|
|
for line, expected_type in test_cases:
|
|
# Try English pattern
|
|
match = watcher.PATTERN_LOOT_EN.match(line)
|
|
if match:
|
|
print(f" ✅ EN matched: {line[:60]}...")
|
|
passed += 1
|
|
continue
|
|
|
|
# Try Swedish pattern
|
|
match = watcher.PATTERN_LOOT_SV.match(line)
|
|
if match:
|
|
print(f" ✅ SV matched: {line[:60]}...")
|
|
passed += 1
|
|
continue
|
|
|
|
print(f" ❌ FAILED: {line[:60]}...")
|
|
failed += 1
|
|
|
|
return passed, failed
|
|
|
|
def test_skill_patterns():
|
|
"""Test skill patterns."""
|
|
test_cases = [
|
|
("2026-02-08 22:18:26 [System] You gained 0.7639 experience in your Whip skill", "skill"),
|
|
("2026-02-08 22:19:30 [System] You gained 3.4372 experience in your Whip skill", "skill"),
|
|
]
|
|
|
|
watcher = LogWatcher.__new__(LogWatcher)
|
|
|
|
passed = 0
|
|
failed = 0
|
|
|
|
print("\nTesting skill patterns...")
|
|
for line, expected_type in test_cases:
|
|
match = watcher.PATTERN_SKILL_EN.match(line)
|
|
if match:
|
|
print(f" ✅ EN matched: {line[:60]}...")
|
|
passed += 1
|
|
else:
|
|
print(f" ❌ FAILED: {line[:60]}...")
|
|
failed += 1
|
|
|
|
return passed, failed
|
|
|
|
if __name__ == "__main__":
|
|
print("="*60)
|
|
print("LOG PATTERN TESTS")
|
|
print("="*60)
|
|
print()
|
|
|
|
loot_passed, loot_failed = test_loot_patterns()
|
|
skill_passed, skill_failed = test_skill_patterns()
|
|
|
|
total_passed = loot_passed + skill_passed
|
|
total_failed = loot_failed + skill_failed
|
|
|
|
print()
|
|
print("="*60)
|
|
print(f"RESULTS: {total_passed} passed, {total_failed} failed")
|
|
print("="*60)
|
|
|
|
sys.exit(0 if total_failed == 0 else 1) |