""" Unit tests for SessionMemory in src/agent/memory.py. No external dependencies — pure in-memory dict operations. Run: pytest tests/agent/test_memory.py """ from src.agent.memory import SessionMemory # --------------------------------------------------------------------------- # set / get # --------------------------------------------------------------------------- def test_set_and_get_string(): m = SessionMemory() m.set("domain", "ecommerce") assert m.get("domain") == "ecommerce" def test_get_missing_key_returns_none(): m = SessionMemory() assert m.get("missing") is None def test_get_missing_key_with_default(): m = SessionMemory() assert m.get("missing", "fallback") == "fallback" def test_overwrite_existing_key(): m = SessionMemory() m.set("domain", "ecommerce") m.set("domain", "telecom") assert m.get("domain") == "telecom" # --------------------------------------------------------------------------- # all() / delete() # --------------------------------------------------------------------------- def test_all_returns_all_pairs(): m = SessionMemory() m.set("domain", "banking") m.set("provider", "HDFC Bank") result = m.all() assert result == {"domain": "banking", "provider": "HDFC Bank"} def test_all_returns_shallow_copy(): m = SessionMemory() m.set("key", "val") copy = m.all() copy["key"] = "mutated" assert m.get("key") == "val" def test_delete_removes_key(): m = SessionMemory() m.set("domain", "insurance") m.delete("domain") assert m.get("domain") is None def test_delete_absent_key_is_noop(): m = SessionMemory() m.delete("nonexistent") # must not raise # --------------------------------------------------------------------------- # Non-string value types # --------------------------------------------------------------------------- def test_store_list_value(): m = SessionMemory() m.set("entities", ["ORG", "AMOUNT"]) assert m.get("entities") == ["ORG", "AMOUNT"] def test_store_dict_value(): m = SessionMemory() m.set("context", {"domain": "telecom", "prior_contact": True}) assert m.get("context") == {"domain": "telecom", "prior_contact": True} def test_store_int_value(): m = SessionMemory() m.set("count", 42) assert m.get("count") == 42