Spaces:
Runtime error
Runtime error
File size: 9,534 Bytes
c65b912 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 | import asyncio
import pytest
import numpy as np
from cortex.memory.quantum_memory import QuantumMemory, QuantumMemoryCell
from cortex.memory.hierarchical import HierarchicalMemory
from cortex.memory.associative import AssociativeMemory
class TestQuantumMemory:
"""Tests pour la mémoire quantique"""
@pytest.fixture
async def quantum_memory(self):
"""Fixture pour initialiser la mémoire quantique"""
memory = QuantumMemory(capacity=100)
await memory.initialize()
return memory
@pytest.mark.asyncio
async def test_memory_initialization(self, quantum_memory):
"""Test l'initialisation de la mémoire quantique"""
assert quantum_memory is not None
assert quantum_memory.capacity == 100
assert len(quantum_memory.memory_cells) > 0
assert quantum_memory.access_latency > 0
@pytest.mark.asyncio
async def test_data_integrity(self, quantum_memory):
"""Test l'intégrité des données stockées"""
test_data = {
"string": "Hello Quantum World",
"number": 42,
"list": [1, 2, 3, 4, 5],
"dict": {"key": "value", "nested": {"a": 1, "b": 2}}
}
for key, value in test_data.items():
address = await quantum_memory.store_quantum_data(value, f"test_{key}")
retrieved = await quantum_memory.retrieve_quantum_data(address)
assert retrieved == value, f"Data integrity failed for {key}"
@pytest.mark.asyncio
async def test_quantum_coherence(self, quantum_memory):
"""Test la préservation de la cohérence quantique"""
address = await quantum_memory.store_quantum_data("coherence_test")
cell = quantum_memory.memory_cells[address]
# Vérifie la cohérence initiale
assert cell.coherence > 0.9
# Simule le temps qui passe
await asyncio.sleep(0.1)
await quantum_memory._maintain_coherence(address)
# Vérifie que la cohérence a diminué mais pas trop
assert 0.8 < cell.coherence < 1.0
@pytest.mark.asyncio
async def test_entanglement_persistence(self, quantum_memory):
"""Test la persistance de l'intrication"""
addr1 = await quantum_memory.store_quantum_data("entangled_data_1")
addr2 = await quantum_memory.store_quantum_data("entangled_data_2")
# Crée l'intrication
await quantum_memory.entangle_memory_cells(addr1, addr2)
# Vérifie que l'intrication est persistée
cell1 = quantum_memory.memory_cells[addr1]
cell2 = quantum_memory.memory_cells[addr2]
assert addr2 in cell1.entangled_with
assert addr1 in cell2.entangled_with
@pytest.mark.asyncio
async def test_superposition_retrieval(self, quantum_memory):
"""Test la récupération depuis la superposition"""
data_states = ["state_alpha", "state_beta", "state_gamma"]
address = await quantum_memory.quantum_superposition_store(data_states)
# Récupération sans mesure (devrait retourner toutes les données)
retrieved = await quantum_memory.retrieve_quantum_data(address, measure=False)
assert retrieved == data_states
# Récupération avec mesure (devrait retourner un état spécifique)
measured = await quantum_memory.retrieve_quantum_data(address, measure=True)
assert measured in data_states
@pytest.mark.asyncio
async def test_pattern_recognition(self, quantum_memory):
"""Test la reconnaissance de pattern quantique"""
# Stocke différents patterns
patterns = [
"quantum computing is amazing",
"artificial intelligence revolution",
"quantum artificial intelligence",
"machine learning with quantum"
]
addresses = []
for pattern in patterns:
addr = await quantum_memory.store_quantum_data(pattern)
addresses.append(addr)
# Test la reconnaissance
results = await quantum_memory.quantum_pattern_recognition("quantum")
assert len(results) >= 2 # Au moins 2 patterns contiennent "quantum"
results = await quantum_memory.quantum_pattern_recognition("artificial intelligence")
assert len(results) >= 2
@pytest.mark.asyncio
async def test_memory_statistics(self, quantum_memory):
"""Test les statistiques de mémoire"""
# Remplit partiellement la mémoire
for i in range(25):
await quantum_memory.store_quantum_data(f"test_data_{i}")
stats = quantum_memory.get_memory_statistics()
assert stats["total_capacity"] == 100
assert stats["used_cells"] == 25
assert stats["available_cells"] == 75
assert 0 <= stats["memory_usage"] <= 1
class TestHierarchicalMemory:
"""Tests pour la mémoire hiérarchique"""
@pytest.fixture
async def hierarchical_memory(self):
"""Fixture pour initialiser la mémoire hiérarchique"""
memory = HierarchicalMemory()
await memory.initialize()
return memory
@pytest.mark.asyncio
async def test_memory_hierarchy(self, hierarchical_memory):
"""Test la hiérarchie de mémoire"""
# Test des différents niveaux
data_immediate = "immediate data"
data_short = "short term data"
data_long = "long term data"
# Stockage à différents niveaux
await hierarchical_memory.store(data_immediate, "immediate", priority=10)
await hierarchical_memory.store(data_short, "short_term", priority=5)
await hierarchical_memory.store(data_long, "long_term", priority=1)
# Vérification de l'accès
immediate = await hierarchical_memory.retrieve("immediate")
assert immediate == data_immediate
# Test de la promotion dans la hiérarchie
await hierarchical_memory.promote("long_term")
stats = hierarchical_memory.get_stats()
assert stats["total_items"] == 3
class TestAssociativeMemory:
"""Tests pour la mémoire associative"""
@pytest.fixture
async def associative_memory(self):
"""Fixture pour initialiser la mémoire associative"""
memory = AssociativeMemory()
await memory.initialize()
return memory
@pytest.mark.asyncio
async def test_associative_links(self, associative_memory):
"""Test les liens associatifs"""
# Crée des associations
await associative_memory.create_association("quantum", "computing", strength=0.9)
await associative_memory.create_association("quantum", "physics", strength=0.8)
await associative_memory.create_association("ai", "machine learning", strength=0.95)
# Test la récupération associative
quantum_associations = await associative_memory.get_associations("quantum")
assert len(quantum_associations) == 2
assert any("computing" in assoc for assoc in quantum_associations)
ai_associations = await associative_memory.get_associations("ai")
assert len(ai_associations) == 1
@pytest.mark.asyncio
async def test_pattern_completion(self, associative_memory):
"""Test la complétion de pattern"""
# Entraîne la mémoire avec des patterns
patterns = [
("cat", "animal", "feline", "pet"),
("dog", "animal", "canine", "pet"),
("quantum", "physics", "computing", "mechanics")
]
for pattern in patterns:
for i, concept in enumerate(pattern):
if i < len(pattern) - 1:
await associative_memory.create_association(
concept, pattern[i + 1], strength=0.8
)
# Test la complétion
completion = await associative_memory.pattern_completion("cat", "animal")
assert "feline" in completion or "pet" in completion
@pytest.mark.asyncio
async def test_memory_system_integration():
"""Test d'intégration du système de mémoire complet"""
# Initialisation de toutes les mémoires
quantum_mem = QuantumMemory(50)
hierarchical_mem = HierarchicalMemory()
associative_mem = AssociativeMemory()
await quantum_mem.initialize()
await hierarchical_mem.initialize()
await associative_mem.initialize()
# Workflow de test intégré
# 1. Stockage quantique
quantum_data = "Quantum memory test data"
q_address = await quantum_mem.store_quantum_data(quantum_data)
# 2. Stockage hiérarchique
await hierarchical_mem.store(quantum_data, "quantum_backup", priority=7)
# 3. Création d'associations
await associative_mem.create_association("quantum", "memory", strength=0.9)
await associative_mem.create_association("memory", "storage", strength=0.8)
# Vérifications
assert q_address is not None
hierarchical_data = await hierarchical_mem.retrieve("quantum_backup")
assert hierarchical_data == quantum_data
associations = await associative_mem.get_associations("quantum")
assert len(associations) > 0
print("✅ Tests d'intégration mémoire réussis!")
if __name__ == "__main__":
# Exécution des tests
asyncio.run(test_memory_system_integration()) |