|
16 | 16 | import unittest
|
17 | 17 |
|
18 | 18 | from qiskit.converters.circuit_to_dag import circuit_to_dag
|
19 |
| -from qiskit.converters.dag_to_dagdependency_v2 import _dag_to_dagdependency_v2 |
| 19 | +from qiskit.converters.dag_to_dagdependency_v2 import ( |
| 20 | + _dag_to_dagdependency_v2, |
| 21 | + _dag_to_dagdependency_v2_with_data, |
| 22 | +) |
20 | 23 | from qiskit.converters.dagdependency_to_dag import dagdependency_to_dag
|
21 | 24 | from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
|
22 | 25 | from test import QiskitTestCase # pylint: disable=wrong-import-order
|
@@ -60,6 +63,51 @@ def test_metadata(self):
|
60 | 63 | dag_out = dagdependency_to_dag(dag_dependency)
|
61 | 64 | self.assertEqual(dag_out.metadata, meta_dict)
|
62 | 65 |
|
| 66 | + def test_conversion_data_not_created_by_default(self): |
| 67 | + """Test that conversion data is not created by default.""" |
| 68 | + qr = QuantumRegister(3) |
| 69 | + cr = ClassicalRegister(3) |
| 70 | + circuit_in = QuantumCircuit(qr, cr) |
| 71 | + circuit_in.h(qr[0]) |
| 72 | + circuit_in.h(qr[1]) |
| 73 | + circuit_in.measure(qr[0], cr[0]) |
| 74 | + circuit_in.measure(qr[1], cr[1]) |
| 75 | + circuit_in.x(qr[0]).c_if(cr, 0x3) |
| 76 | + circuit_in.measure(qr[0], cr[0]) |
| 77 | + circuit_in.measure(qr[1], cr[1]) |
| 78 | + circuit_in.measure(qr[2], cr[2]) |
| 79 | + dag_in = circuit_to_dag(circuit_in) |
| 80 | + |
| 81 | + _, conversion_data = _dag_to_dagdependency_v2_with_data(dag_in) |
| 82 | + self.assertIsNone(conversion_data) |
| 83 | + |
| 84 | + def test_conversion_data(self): |
| 85 | + """Test that conversion data is created and is correct when |
| 86 | + ``create_conversion_data`` is ``True``. |
| 87 | + """ |
| 88 | + qr = QuantumRegister(3) |
| 89 | + cr = ClassicalRegister(3) |
| 90 | + circuit_in = QuantumCircuit(qr, cr) |
| 91 | + circuit_in.h(qr[0]) |
| 92 | + circuit_in.h(qr[1]) |
| 93 | + circuit_in.measure(qr[0], cr[0]) |
| 94 | + circuit_in.measure(qr[1], cr[1]) |
| 95 | + circuit_in.x(qr[0]).c_if(cr, 0x3) |
| 96 | + circuit_in.measure(qr[0], cr[0]) |
| 97 | + circuit_in.measure(qr[1], cr[1]) |
| 98 | + circuit_in.measure(qr[2], cr[2]) |
| 99 | + dag_in = circuit_to_dag(circuit_in) |
| 100 | + |
| 101 | + _, conversion_data = _dag_to_dagdependency_v2_with_data(dag_in, create_conversion_data=True) |
| 102 | + self.assertIsNotNone(conversion_data) |
| 103 | + |
| 104 | + # Check that mapping an op_node first forward and then backward gives back the same node. |
| 105 | + for in_node in dag_in.op_nodes(): |
| 106 | + out_node = conversion_data.forward_map(in_node) |
| 107 | + self.assertIsNotNone(out_node) |
| 108 | + in_out_node = conversion_data.backward_map(out_node) |
| 109 | + self.assertEqual(in_node, in_out_node) |
| 110 | + |
63 | 111 |
|
64 | 112 | if __name__ == "__main__":
|
65 | 113 | unittest.main(verbosity=2)
|
0 commit comments