| | """ |
| | 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() |
| |
|