| """ |
| Tests for the core functionality of efficient-context. |
| """ |
|
|
| import unittest |
| from efficient_context import ContextManager |
| from efficient_context.compression import SemanticDeduplicator |
| from efficient_context.chunking import SemanticChunker, Chunk |
| from efficient_context.retrieval import CPUOptimizedRetriever |
| from efficient_context.memory import MemoryManager |
|
|
| class TestEfficientContext(unittest.TestCase): |
| """Test cases for efficient-context functionality.""" |
| |
| def setUp(self): |
| """Set up test environment.""" |
| self.sample_text = """ |
| Renewable energy is derived from natural sources that are replenished at a higher rate than they are consumed. |
| Sunlight and wind, for example, are such sources that are constantly being replenished. |
| Renewable energy resources exist over wide geographical areas, in contrast to fossil fuels, |
| which are concentrated in a limited number of countries. |
| |
| Rapid deployment of renewable energy and energy efficiency technologies is resulting in significant |
| energy security, climate change mitigation, and economic benefits. |
| In international public opinion surveys there is strong support for promoting renewable sources |
| such as solar power and wind power. |
| |
| While many renewable energy projects are large-scale, renewable technologies are also suited to rural |
| and remote areas and developing countries, where energy is often crucial in human development. |
| As most of the renewable energy technologies provide electricity, renewable energy is often deployed |
| together with further electrification, which has several benefits: electricity can be converted to heat, |
| can be converted into mechanical energy with high efficiency, and is clean at the point of consumption. |
| """ |
| |
| def test_semantic_deduplicator(self): |
| """Test the semantic deduplicator functionality.""" |
| compressor = SemanticDeduplicator(threshold=0.9) |
| compressed = compressor.compress(self.sample_text) |
| |
| |
| self.assertLess(len(compressed), len(self.sample_text)) |
| |
| |
| self.assertIn("Renewable energy", compressed) |
| |
| def test_semantic_chunker(self): |
| """Test the semantic chunker functionality.""" |
| chunker = SemanticChunker(chunk_size=100, chunk_overlap=10) |
| chunks = chunker.chunk(self.sample_text, document_id="test-doc") |
| |
| |
| self.assertGreater(len(chunks), 0) |
| |
| |
| for chunk in chunks: |
| self.assertIsInstance(chunk, Chunk) |
| self.assertTrue(chunk.content) |
| self.assertEqual(chunk.document_id, "test-doc") |
| |
| def test_cpu_optimized_retriever(self): |
| """Test the CPU-optimized retriever functionality.""" |
| retriever = CPUOptimizedRetriever(embedding_model="lightweight") |
| |
| |
| chunks = [ |
| Chunk(content="Renewable energy is a sustainable energy source.", chunk_id="1"), |
| Chunk(content="Climate change is a global challenge.", chunk_id="2"), |
| Chunk(content="Fossil fuels contribute to greenhouse gas emissions.", chunk_id="3") |
| ] |
| |
| |
| retriever.index_chunks(chunks) |
| |
| |
| query = "What are the environmental impacts of energy sources?" |
| results = retriever.retrieve(query, top_k=2) |
| |
| |
| self.assertEqual(len(results), 2) |
| |
| |
| retriever.clear() |
| self.assertEqual(len(retriever.chunks), 0) |
| |
| def test_context_manager_integration(self): |
| """Test full integration of all components.""" |
| |
| context_manager = ContextManager( |
| compressor=SemanticDeduplicator(threshold=0.85), |
| chunker=SemanticChunker(chunk_size=100), |
| retriever=CPUOptimizedRetriever(embedding_model="lightweight"), |
| memory_manager=MemoryManager() |
| ) |
| |
| |
| doc_id = context_manager.add_document(self.sample_text) |
| |
| |
| self.assertIn(doc_id, context_manager.documents) |
| |
| |
| query = "Tell me about renewable energy in rural areas" |
| context = context_manager.generate_context(query) |
| |
| |
| self.assertTrue(context) |
| |
| |
| context_manager.clear() |
| self.assertEqual(len(context_manager.documents), 0) |
| self.assertEqual(len(context_manager.chunks), 0) |
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|