Files
mt_mt5_backertest/tests/test_symbol_resolver.py
T
2026-07-06 21:58:56 +08:00

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()