35 lines
1.5 KiB
Python
Raw Normal View History

from rp.config import RECENT_MESSAGES_TO_KEEP
from rp.core.context import compress_context, should_compress_context
2025-11-04 05:17:27 +01:00
class TestContextManagement:
def test_should_compress_context_below_threshold(self):
2025-11-04 08:09:12 +01:00
messages = [{"role": "user", "content": "test"}] * 10
2025-11-04 05:17:27 +01:00
assert should_compress_context(messages) is False
def test_should_compress_context_above_threshold(self):
2025-11-04 08:09:12 +01:00
messages = [{"role": "user", "content": "test"}] * 35
2025-11-04 05:17:27 +01:00
assert should_compress_context(messages) is True
def test_compress_context_preserves_system_message(self):
messages = [
2025-11-04 08:09:12 +01:00
{"role": "system", "content": "System prompt"},
{"role": "user", "content": "Hello"},
{"role": "assistant", "content": "Hi"},
2025-11-04 05:17:27 +01:00
] * 40 # Ensure compression
compressed = compress_context(messages)
2025-11-04 08:09:12 +01:00
assert compressed[0]["role"] == "system"
assert "System prompt" in compressed[0]["content"]
2025-11-04 05:17:27 +01:00
def test_compress_context_keeps_recent_messages(self):
2025-11-04 08:09:12 +01:00
messages = [{"role": "user", "content": f"msg{i}"} for i in range(40)]
2025-11-04 05:17:27 +01:00
compressed = compress_context(messages)
# Should keep recent messages
recent = compressed[-RECENT_MESSAGES_TO_KEEP:]
assert len(recent) == RECENT_MESSAGES_TO_KEEP
# Check that the messages are the most recent ones
for i, msg in enumerate(recent):
expected_index = 40 - RECENT_MESSAGES_TO_KEEP + i
2025-11-04 08:09:12 +01:00
assert msg["content"] == f"msg{expected_index}"