def test_empty_dag(self):
        """ Empty DAG has 0 number of tensor factors. """
        circuit = QuantumCircuit()
        dag = circuit_to_dag(circuit)

        pass_ = NumTensorFactors()
        _ = pass_.run(dag)

        self.assertEqual(pass_.property_set['num_tensor_factors'], 0)
    def test_depth_one(self):
        """ A dag with operations in parallel (2 tensor factors)"""
        qr = QuantumRegister(2)
        circuit = QuantumCircuit(qr)
        circuit.h(qr[0])
        circuit.h(qr[1])
        dag = circuit_to_dag(circuit)

        pass_ = NumTensorFactors()
        _ = pass_.run(dag)

        self.assertEqual(pass_.property_set['num_tensor_factors'], 2)
    def test_just_qubits(self):
        """ A dag with 8 operations and 1 tensor factor."""
        qr = QuantumRegister(2)
        circuit = QuantumCircuit(qr)
        circuit.h(qr[0])
        circuit.h(qr[1])
        circuit.cx(qr[0], qr[1])
        circuit.cx(qr[0], qr[1])
        circuit.cx(qr[0], qr[1])
        circuit.cx(qr[0], qr[1])
        circuit.cx(qr[1], qr[0])
        circuit.cx(qr[1], qr[0])
        dag = circuit_to_dag(circuit)

        pass_ = NumTensorFactors()
        _ = pass_.run(dag)

        self.assertEqual(pass_.property_set['num_tensor_factors'], 1)