2025-11-04 05:57:23 +01:00
|
|
|
from pr.core.advanced_context import AdvancedContextManager
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-05 15:34:23 +01:00
|
|
|
class TestAdvancedContextManager:
|
|
|
|
|
def setup_method(self):
|
|
|
|
|
self.manager = AdvancedContextManager()
|
|
|
|
|
|
|
|
|
|
def test_init(self):
|
|
|
|
|
manager = AdvancedContextManager(knowledge_store="test", conversation_memory="test")
|
|
|
|
|
assert manager.knowledge_store == "test"
|
|
|
|
|
assert manager.conversation_memory == "test"
|
|
|
|
|
|
|
|
|
|
def test_adaptive_context_window_simple(self):
|
|
|
|
|
messages = [{"content": "short message"}]
|
|
|
|
|
result = self.manager.adaptive_context_window(messages, "simple")
|
|
|
|
|
assert result >= 10
|
|
|
|
|
|
|
|
|
|
def test_adaptive_context_window_medium(self):
|
|
|
|
|
messages = [{"content": "medium length message with some content"}]
|
|
|
|
|
result = self.manager.adaptive_context_window(messages, "medium")
|
|
|
|
|
assert result >= 20
|
|
|
|
|
|
|
|
|
|
def test_adaptive_context_window_complex(self):
|
|
|
|
|
messages = [
|
|
|
|
|
{
|
|
|
|
|
"content": "very long and complex message with many words and detailed information about various topics"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
result = self.manager.adaptive_context_window(messages, "complex")
|
|
|
|
|
assert result >= 35
|
|
|
|
|
|
|
|
|
|
def test_adaptive_context_window_very_complex(self):
|
|
|
|
|
messages = [
|
|
|
|
|
{
|
|
|
|
|
"content": "extremely long and very complex message with extensive vocabulary and detailed explanations"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
result = self.manager.adaptive_context_window(messages, "very_complex")
|
|
|
|
|
assert result >= 50
|
|
|
|
|
|
|
|
|
|
def test_adaptive_context_window_unknown_complexity(self):
|
|
|
|
|
messages = [{"content": "test"}]
|
|
|
|
|
result = self.manager.adaptive_context_window(messages, "unknown")
|
|
|
|
|
assert result >= 20
|
|
|
|
|
|
|
|
|
|
def test_analyze_message_complexity(self):
|
|
|
|
|
messages = [{"content": "This is a test message with some words."}]
|
|
|
|
|
result = self.manager._analyze_message_complexity(messages)
|
|
|
|
|
assert 0.0 <= result <= 1.0
|
|
|
|
|
|
|
|
|
|
def test_analyze_message_complexity_empty(self):
|
|
|
|
|
messages = []
|
|
|
|
|
result = self.manager._analyze_message_complexity(messages)
|
|
|
|
|
assert result == 0.0
|
|
|
|
|
|
|
|
|
|
def test_extract_key_sentences(self):
|
|
|
|
|
text = "First sentence. Second sentence is longer and more detailed. Third sentence."
|
|
|
|
|
result = self.manager.extract_key_sentences(text, top_k=2)
|
|
|
|
|
assert len(result) <= 2
|
|
|
|
|
assert all(isinstance(s, str) for s in result)
|
|
|
|
|
|
|
|
|
|
def test_extract_key_sentences_empty(self):
|
|
|
|
|
text = ""
|
|
|
|
|
result = self.manager.extract_key_sentences(text)
|
|
|
|
|
assert result == []
|
|
|
|
|
|
|
|
|
|
def test_advanced_summarize_messages(self):
|
|
|
|
|
messages = [
|
|
|
|
|
{"content": "First message with important information."},
|
|
|
|
|
{"content": "Second message with more details."},
|
|
|
|
|
]
|
|
|
|
|
result = self.manager.advanced_summarize_messages(messages)
|
|
|
|
|
assert isinstance(result, str)
|
|
|
|
|
assert len(result) > 0
|
|
|
|
|
|
|
|
|
|
def test_advanced_summarize_messages_empty(self):
|
|
|
|
|
messages = []
|
|
|
|
|
result = self.manager.advanced_summarize_messages(messages)
|
|
|
|
|
assert result == "No content to summarize."
|
|
|
|
|
|
|
|
|
|
def test_score_message_relevance(self):
|
|
|
|
|
message = {"content": "test message"}
|
|
|
|
|
context = "test context"
|
|
|
|
|
result = self.manager.score_message_relevance(message, context)
|
|
|
|
|
assert 0.0 <= result <= 1.0
|
|
|
|
|
|
|
|
|
|
def test_score_message_relevance_no_overlap(self):
|
|
|
|
|
message = {"content": "apple banana"}
|
|
|
|
|
context = "orange grape"
|
|
|
|
|
result = self.manager.score_message_relevance(message, context)
|
|
|
|
|
assert result == 0.0
|
|
|
|
|
|
|
|
|
|
def test_score_message_relevance_empty(self):
|
|
|
|
|
message = {"content": ""}
|
|
|
|
|
context = ""
|
|
|
|
|
result = self.manager.score_message_relevance(message, context)
|
|
|
|
|
assert result == 0.0
|