def test_ops_are_consistent_with_device_graph(): device_graph = ccr.get_linear_device_graph(3) qubits = cirq.LineQubit.range(3) circuit = cirq.Circuit(cirq.ZZ(qubits[0], qubits[2])) assert not ccr.ops_are_consistent_with_device_graph( circuit.all_operations(), device_graph) assert not ccr.ops_are_consistent_with_device_graph( [cirq.X(cirq.GridQubit(0, 0))], device_graph)
def create_circuit_and_device(): """Construct a small circuit and a device with line connectivity to test the greedy router. This instance hangs router in Cirq 8.2. """ num_qubits = 6 gate_domain = {cirq.ops.CNOT: 2} circuit = cirq.testing.random_circuit(num_qubits, 15, 0.5, gate_domain, random_state=37) device_graph = ccr.get_linear_device_graph(num_qubits) return circuit, device_graph
def test_router_bad_args(): circuit = cirq.Circuit() device_graph = ccr.get_linear_device_graph(5) with pytest.raises(ValueError): ccr.route_circuit(circuit, device_graph) algo_name = 'greedy' with pytest.raises(ValueError): ccr.route_circuit(circuit, device_graph, algo_name=algo_name, router=ccr.ROUTERS[algo_name]) circuit = cirq.Circuit(cirq.CCZ(*cirq.LineQubit.range(3))) with pytest.raises(ValueError): ccr.route_circuit(circuit, device_graph, algo_name=algo_name) circuit = cirq.Circuit( cirq.CZ(cirq.LineQubit(i), cirq.LineQubit(i + 1)) for i in range(5)) with pytest.raises(ValueError): ccr.route_circuit(circuit, device_graph, algo_name=algo_name)
def test_get_linear_device_graph(n_qubits): graph = ccr.get_linear_device_graph(n_qubits) assert sorted(graph) == cirq.LineQubit.range(n_qubits) assert len(graph.edges()) == n_qubits - 1 assert all(abs(a.x - b.x) == 1 for a, b in graph.edges())