Files
agentmsgs/tests/test_types.py
T

64 lines
1.9 KiB
Python

import datetime
import uuid
from agentmsgs.core.types import Agent, Message, Thread, ThreadInfo, ThreadReadState
def test_agent_identity_on_id_not_name():
a1 = Agent(id=uuid.uuid4(), name="Alice")
a2 = Agent(id=uuid.uuid4(), name="Alice")
assert a1 != a2 # different id => not equal even though name same
assert hash(a1) != hash(a2)
def test_agent_hash_on_id():
uid = uuid.uuid4()
a1 = Agent(id=uid, name="Alice")
a2 = Agent(
id=uid, name="Bob"
) # same id, different name => equal per design (id is identity)
assert a1 == a2
assert hash(a1) == hash(a2)
def test_thread_multiple_with_same_participants_allowed():
a = Agent(id=uuid.uuid4(), name="A")
b = Agent(id=uuid.uuid4(), name="B")
t1 = Thread(
id=uuid.uuid4(),
participants=frozenset({a, b}),
created_at=datetime.datetime.now(datetime.UTC),
)
t2 = Thread(
id=uuid.uuid4(),
participants=frozenset({a, b}),
created_at=datetime.datetime.now(datetime.UTC),
)
assert t1 != t2
assert t1.participants == t2.participants
def test_thread_info_and_read_state_hold_derived_data():
now = datetime.datetime.now(datetime.UTC)
alice = Agent(id=uuid.uuid4(), name="Alice")
bob = Agent(id=uuid.uuid4(), name="Bob")
thread = Thread(
id=uuid.uuid4(), participants=frozenset({alice, bob}), created_at=now
)
latest = Message(
id=uuid.uuid4(), sender=bob, content="hello", seq=1, ts=now
)
info = ThreadInfo(thread=thread, message_count=1, latest_message=latest)
state = ThreadReadState(
agent=alice,
cursor_seq=0,
latest_seq=1,
unread_count=1,
unread_from_others_count=1,
)
assert info.thread == thread
assert info.latest_message == latest
assert state.agent == alice
assert state.unread_from_others_count == 1