| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- """Tests for lambdagent core: Term, Context, TraceEntry."""
- import pytest
- from lambdagent.core import Term, Context, TraceEntry, LambdagentError, UnboundVariable
- class DummyTerm(Term):
- def apply(self, input, ctx):
- ctx.log(self._name, self._trace_id, input, f"echo:{input}", 1.0)
- return f"echo:{input}"
- def test_term_call():
- t = DummyTerm("test")
- assert t("hello") == "echo:hello"
- def test_term_compose():
- a = DummyTerm("a")
- b = DummyTerm("b")
- pipe = a >> b
- assert pipe("x") == "echo:echo:x"
- def test_term_par():
- a = DummyTerm("a")
- b = DummyTerm("b")
- par = a | b
- result = par("x")
- assert result == ("echo:x", "echo:x")
- def test_context_trace():
- ctx = Context()
- t = DummyTerm("t")
- t.apply("in", ctx)
- assert len(ctx.trace) == 1
- assert ctx.trace[0].term_name == "t"
- assert ctx.trace[0].input == "in"
- assert ctx.trace[0].output == "echo:in"
- def test_context_extend():
- ctx = Context(bindings={"x": 1})
- child = ctx.extend(y=2)
- assert child.lookup("x") == 1
- assert child.lookup("y") == 2
- def test_context_unbound():
- ctx = Context()
- with pytest.raises(UnboundVariable):
- ctx.lookup("missing")
- def test_context_memory():
- ctx = Context(memory={"key": "val"})
- assert ctx.memory["key"] == "val"
|