def test_optimize_single_reset(self):
        """ Remove a single reset
            qr0:--|0>--   ==>    qr0:----
        """
        qr = QuantumRegister(1, 'qr')
        circuit = QuantumCircuit(qr)
        circuit.reset(qr)
        dag = circuit_to_dag(circuit)

        expected = QuantumCircuit(qr)

        pass_ = RemoveResetInZeroState()
        after = pass_.run(dag)

        self.assertEqual(circuit_to_dag(expected), after)
    def test_optimize_single_reset_in_diff_qubits(self):
        """Remove a single reset in different qubits
        qr0:--|0>--          qr0:----
                      ==>
        qr1:--|0>--          qr1:----
        """
        qr = QuantumRegister(2, "qr")
        circuit = QuantumCircuit(qr)
        circuit.reset(qr)
        dag = circuit_to_dag(circuit)

        expected = QuantumCircuit(qr)

        pass_ = RemoveResetInZeroState()
        after = pass_.run(dag)

        self.assertEqual(circuit_to_dag(expected), after)
    def test_dont_optimize_non_zero_state(self):
        """ Do not remove reset if not in a zero state
            qr0:--[H]--|0>--   ==>    qr0:--[H]--|0>--
        """
        qr = QuantumRegister(1, 'qr')
        circuit = QuantumCircuit(qr)
        circuit.h(qr)
        circuit.reset(qr)
        dag = circuit_to_dag(circuit)

        expected = QuantumCircuit(qr)
        expected.h(qr)
        expected.reset(qr)

        pass_ = RemoveResetInZeroState()
        after = pass_.run(dag)

        self.assertEqual(circuit_to_dag(expected), after)