|
18 | 18 |
|
19 | 19 | import numpy as np
|
20 | 20 |
|
21 |
| -from qiskit.circuit import Gate |
22 |
| -from qiskit.circuit import Parameter |
23 |
| -from qiskit.circuit import Instruction, InstructionSet |
24 |
| -from qiskit.circuit import QuantumCircuit |
25 |
| -from qiskit.circuit import QuantumRegister, ClassicalRegister, Qubit, Clbit |
26 |
| -from qiskit.circuit.library.standard_gates.h import HGate |
27 |
| -from qiskit.circuit.library.standard_gates.rz import RZGate |
28 |
| -from qiskit.circuit.library.standard_gates.x import CXGate |
29 |
| -from qiskit.circuit.library.standard_gates.s import SGate |
30 |
| -from qiskit.circuit.library.standard_gates.t import TGate |
| 21 | +from qiskit.circuit import ( |
| 22 | + Gate, |
| 23 | + Parameter, |
| 24 | + Instruction, |
| 25 | + InstructionSet, |
| 26 | + QuantumCircuit, |
| 27 | + QuantumRegister, |
| 28 | + ClassicalRegister, |
| 29 | + Qubit, |
| 30 | + Clbit, |
| 31 | + IfElseOp, |
| 32 | +) |
| 33 | +from qiskit.circuit.library import HGate, RZGate, CXGate, SGate, TGate |
| 34 | +from qiskit.circuit.classical import expr |
31 | 35 | from qiskit.test import QiskitTestCase
|
32 | 36 | from qiskit.circuit.exceptions import CircuitError
|
33 | 37 | from qiskit.circuit.random import random_circuit
|
@@ -426,6 +430,26 @@ def test_repr_of_instructions(self):
|
426 | 430 | ),
|
427 | 431 | )
|
428 | 432 |
|
| 433 | + def test_instruction_condition_bits(self): |
| 434 | + """Test that the ``condition_bits`` property behaves correctly until it is deprecated and |
| 435 | + removed.""" |
| 436 | + bits = [Clbit(), Clbit()] |
| 437 | + cr1 = ClassicalRegister(2, "cr1") |
| 438 | + cr2 = ClassicalRegister(2, "cr2") |
| 439 | + body = QuantumCircuit(cr1, cr2, bits) |
| 440 | + |
| 441 | + def key(bit): |
| 442 | + return body.find_bit(bit).index |
| 443 | + |
| 444 | + op = IfElseOp((bits[0], False), body) |
| 445 | + self.assertEqual(op.condition_bits, [bits[0]]) |
| 446 | + |
| 447 | + op = IfElseOp((cr1, 3), body) |
| 448 | + self.assertEqual(op.condition_bits, list(cr1)) |
| 449 | + |
| 450 | + op = IfElseOp(expr.logic_and(bits[1], expr.equal(cr2, 3)), body) |
| 451 | + self.assertEqual(sorted(op.condition_bits, key=key), sorted([bits[1]] + list(cr2), key=key)) |
| 452 | + |
429 | 453 | def test_instructionset_c_if_direct_resource(self):
|
430 | 454 | """Test that using :meth:`.InstructionSet.c_if` with an exact classical resource always
|
431 | 455 | works, and produces the expected condition."""
|
|
0 commit comments