QuantumPeer / test_quantum_peer.py
Mentors4EDU's picture
Upload 11 files
a49d7b4 verified
import pytest
import torch
import numpy as np
from quantum_peer_model import QuantumPeerModel
from quantum_circuit import QuantumCircuit
from quantum_topology import ChernSimonsTopology
from quantum_gates import QuantumGate
@pytest.fixture
def model():
return QuantumPeerModel(device="cpu")
@pytest.fixture
def quantum_circuit():
topology = ChernSimonsTopology(depth=3)
return QuantumCircuit(topology)
def test_circuit_initialization(quantum_circuit):
"""Test quantum circuit initialization"""
assert quantum_circuit is not None
assert len(quantum_circuit.gates) > 0
gate_types = {gate.gate_type for gate in quantum_circuit.gates}
required_gates = {"H", "CNOT", "Phase", "X", "Z"}
assert required_gates.issubset(gate_types)
def test_quantum_evolution(quantum_circuit):
"""Test quantum state evolution"""
initial_state = np.zeros(quantum_circuit.topology.dimension)
initial_state[0] = 1
final_state = quantum_circuit.evolve(initial_state)
assert isinstance(final_state, np.ndarray)
assert np.allclose(np.sum(np.abs(final_state) ** 2), 1)
def test_gate_operations():
"""Test individual quantum gates"""
gates = {
"H": QuantumGate("H"),
"X": QuantumGate("X"),
"Z": QuantumGate("Z"),
"Phase": QuantumGate("Phase"),
"CNOT": QuantumGate("CNOT")
}
state = np.array([1, 0])
h_state = gates["H"].apply(state, None)
expected = np.array([1, 1]) / np.sqrt(2)
assert np.allclose(h_state, expected)
x_state = gates["X"].apply(state, None)
assert np.allclose(x_state, np.array([0, 1]))
@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA not available")
def test_model_gpu_support():
"""Test GPU support when available"""
model = QuantumPeerModel(device="cuda")
assert model.llm_interface.model.device.type == "cuda"
response = model.generate("Test prompt")
assert isinstance(response, str)
def test_topology_scaling():
"""Test topology scaling with different depths"""
depths = [2, 3, 4]
for depth in depths:
topology = ChernSimonsTopology(depth)
assert topology.dimension == 2 ** depth
assert len(topology.connections) == (depth * (depth - 1)) // 2
def test_model_generation(model):
"""Test text generation with quantum enhancement"""
prompt = "Explain quantum computing in"
response = model.generate(
prompt,
max_length=50,
quantum_params={"gates": ["H", "CNOT"]}
)
assert isinstance(response, str)
assert len(response) > len(prompt)