|
42 | 42 | Command, |
43 | 43 | All, |
44 | 44 | ) |
| 45 | +from projectq.types import WeakQubitRef |
45 | 46 | from ._qasm import OpenQASMBackend |
46 | 47 |
|
47 | 48 | # ============================================================================== |
@@ -206,6 +207,22 @@ def test_qasm_is_available_2control(gate, is_available): |
206 | 207 | assert eng.is_available(cmd) == is_available |
207 | 208 |
|
208 | 209 |
|
| 210 | +def test_ibm_backend_is_available_negative_control(): |
| 211 | + backend = OpenQASMBackend() |
| 212 | + backend.is_last_engine = True |
| 213 | + |
| 214 | + qb0 = WeakQubitRef(engine=None, idx=0) |
| 215 | + qb1 = WeakQubitRef(engine=None, idx=1) |
| 216 | + |
| 217 | + assert backend.is_available(Command(None, X, qubits=([qb0],), controls=[qb1])) |
| 218 | + assert backend.is_available(Command(None, X, qubits=([qb0],), controls=[qb1], control_state='1')) |
| 219 | + assert not backend.is_available(Command(None, X, qubits=([qb0],), controls=[qb1], control_state='0')) |
| 220 | + |
| 221 | + assert backend.is_available(Command(None, X, qubits=([qb0],), controls=[qb1])) |
| 222 | + assert backend.is_available(Command(None, X, qubits=([qb0],), controls=[qb1], control_state='1')) |
| 223 | + assert not backend.is_available(Command(None, X, qubits=([qb0],), controls=[qb1], control_state='0')) |
| 224 | + |
| 225 | + |
209 | 226 | def test_qasm_test_qasm_single_qubit_gates(): |
210 | 227 | eng = MainEngine(backend=OpenQASMBackend(), engine_list=[]) |
211 | 228 | qubit = eng.allocate_qubit() |
|
0 commit comments