60 lines
2.1 KiB
Python
60 lines
2.1 KiB
Python
"""Symbol resolver self-check (pure lookup, no auto logic).
|
|
|
|
Run: python tests/test_symbol_resolver.py
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
HERE = os.path.dirname(os.path.abspath(__file__))
|
|
sys.path.insert(0, os.path.normpath(os.path.join(HERE, "..", "scripts")))
|
|
|
|
from symbol_resolver import resolve_symbol
|
|
|
|
|
|
def _bt(aliases=None):
|
|
return {"symbol_aliases": aliases or {}}
|
|
|
|
|
|
def expect(label, got, want):
|
|
ok = got == want
|
|
print(f" {'PASS' if ok else 'FAIL'} {label}: got={got!r} want={want!r}")
|
|
if not ok:
|
|
raise AssertionError(label)
|
|
|
|
|
|
def main():
|
|
print("[1] has alias -> use alias")
|
|
expect("XAUUSD -> XAUUSDc", resolve_symbol("XAUUSD", _bt({"XAUUSD": "XAUUSDc"})), "XAUUSDc")
|
|
|
|
print("[2] has alias for another symbol -> that one passes through")
|
|
expect("EURUSD no alias", resolve_symbol("EURUSD", _bt({"XAUUSD": "XAUUSDc"})), "EURUSD")
|
|
|
|
print("[3] no aliases config -> bare (back-compat)")
|
|
expect("no config", resolve_symbol("XAUUSD", _bt()), "XAUUSD")
|
|
|
|
print("[4] alias value can be any string (suffix, full name, even identical)")
|
|
expect("alias = c suffix", resolve_symbol("XAUUSD", _bt({"XAUUSD": "c"})), "c")
|
|
|
|
print("[5] empty symbol -> empty")
|
|
expect("empty", resolve_symbol("", _bt({"": "XAUUSDc"})), "")
|
|
|
|
print("[6] aliases value None -> bare")
|
|
expect("None value", resolve_symbol("XAUUSD", _bt({"XAUUSD": None})), "XAUUSD")
|
|
|
|
print("[7] symbol_aliases missing key entirely -> bare")
|
|
expect("missing key", resolve_symbol("XAUUSD", {"date_range": {"from": "2020.01.01", "to": "2024.01.01"}}), "XAUUSD")
|
|
|
|
print("[8] long date span does NOT auto-switch (explicit override only)")
|
|
expect("long span no alias", resolve_symbol("XAUUSD", {"date_range": {"from": "2010.01.01", "to": "2024.01.01"}}), "XAUUSD")
|
|
|
|
print("[9] explicit alias always wins regardless of date/optimization context")
|
|
ctx = {"date_range": {"from": "2010.01.01", "to": "2024.01.01"},
|
|
"optimization": 1, "symbol_aliases": {"XAUUSD": "XAUUSDm"}}
|
|
expect("explicit + opt", resolve_symbol("XAUUSD", ctx), "XAUUSDm")
|
|
|
|
print("\nAll symbol resolver checks passed.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |