Files
HeurAMS/tests/test_evalizor.py
2026-04-25 01:38:33 +08:00

48 lines
1.4 KiB
Python

"""Tests for heurams.kernel.auxiliary.evalizor.Evalizer"""
from heurams.kernel.auxiliary.evalizor import Evalizer
class TestEvalizer:
def test_noop_on_plain_string(self):
e = Evalizer({"x": 42})
assert e("hello") == "hello"
def test_eval_expression(self):
e = Evalizer({"x": 42})
assert e("eval: x") == 42
def test_eval_arithmetic(self):
e = Evalizer({"a": 10, "b": 20})
assert e("eval: a + b") == 30
def test_traverses_dict(self):
e = Evalizer({"val": 99})
data = {"key_a": "plain", "key_b": "eval: val + 1"}
result = e(data)
assert result == {"key_a": "plain", "key_b": 100}
def test_traverses_list(self):
e = Evalizer({"val": 5})
data = ["eval: val", "plain", "eval: val * 2"]
result = e(data)
assert result == [5, "plain", 10]
def test_traverses_nested(self):
e = Evalizer({"val": 3})
data = {"outer": {"inner": "eval: val ** 2"}}
result = e(data)
assert result == {"outer": {"inner": 9}}
def test_traverses_tuple(self):
e = Evalizer({"val": 7})
data = ("eval: val", "other")
result = e(data)
assert result == (7, "other")
def test_non_string_passthrough(self):
e = Evalizer({})
assert e(42) == 42
assert e(None) is None
assert e([1, 2, 3]) == [1, 2, 3]