from pr.core.advanced_context import AdvancedContextManager 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