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