def test_qudit(self) -> None: circuit = Circuit(3, [2, 3, 3]) assert len(circuit.get_gate_set()) == 0 circuit.append_gate(U3Gate(), [0]) assert len(circuit.get_gate_set()) == 1 assert U3Gate() in circuit.get_gate_set() circuit.append_gate(XGate(), [0]) assert len(circuit.get_gate_set()) == 2 assert U3Gate() in circuit.get_gate_set() assert XGate() in circuit.get_gate_set() circuit.append_gate(ZGate(), [0]) assert len(circuit.get_gate_set()) == 3 assert U3Gate() in circuit.get_gate_set() assert XGate() in circuit.get_gate_set() assert ZGate() in circuit.get_gate_set() circuit.append_gate(TGate(), [0]) assert len(circuit.get_gate_set()) == 4 assert U3Gate() in circuit.get_gate_set() assert XGate() in circuit.get_gate_set() assert ZGate() in circuit.get_gate_set() assert TGate() in circuit.get_gate_set() circuit.append_gate(CSUMGate(), [1, 2]) assert len(circuit.get_gate_set()) == 5 assert U3Gate() in circuit.get_gate_set() assert XGate() in circuit.get_gate_set() assert ZGate() in circuit.get_gate_set() assert TGate() in circuit.get_gate_set() assert CSUMGate() in circuit.get_gate_set()
def test_removing_gate(self) -> None: circuit = Circuit(1) assert len(circuit.get_gate_set()) == 0 circuit.append_gate(U3Gate(), [0]) circuit.append_gate(XGate(), [0]) circuit.append_gate(ZGate(), [0]) circuit.append_gate(TGate(), [0]) assert len(circuit.get_gate_set()) == 4 assert U3Gate() in circuit.get_gate_set() assert XGate() in circuit.get_gate_set() assert ZGate() in circuit.get_gate_set() assert TGate() in circuit.get_gate_set() circuit.remove(TGate()) assert len(circuit.get_gate_set()) == 3 assert U3Gate() in circuit.get_gate_set() assert XGate() in circuit.get_gate_set() assert ZGate() in circuit.get_gate_set() circuit.remove(XGate()) assert len(circuit.get_gate_set()) == 2 assert U3Gate() in circuit.get_gate_set() assert ZGate() in circuit.get_gate_set() circuit.remove(ZGate()) assert len(circuit.get_gate_set()) == 1 assert U3Gate() in circuit.get_gate_set() circuit.remove(U3Gate()) assert len(circuit.get_gate_set()) == 0
def simple_circuit() -> Circuit: """Provides a simple circuit fixture.""" circuit = Circuit(2) circuit.append_gate(XGate(), [0]) circuit.append_gate(CNOTGate(), [0, 1]) circuit.append_gate(XGate(), [1]) circuit.append_gate(CNOTGate(), [1, 0]) return circuit
def test_example(self) -> None: circuit = Circuit(2) circuit.append_gate(HGate(), [0]) assert circuit.find_available_cycle([1]) == 0 circuit.append_gate(XGate(), [0]) circuit.append_gate(ZGate(), [1]) assert circuit.find_available_cycle([1]) == 1
def test_example(self) -> None: circuit = Circuit(2) circuit.append_gate(HGate(), [0]) circuit.append_gate(XGate(), [0]) circuit.append_gate(ZGate(), [1]) assert not circuit.is_cycle_unoccupied(0, [0]) assert circuit.is_cycle_unoccupied(1, [1])
def test_invalid_value_2(self) -> None: circuit = Circuit(2) circuit.append_gate(HGate(), [0]) circuit.append_gate(CNOTGate(), [0, 1]) try: circuit.point(XGate()) except ValueError: return assert False, 'Should not have reached here.'
def test_example(self) -> None: circuit = Circuit(1) opH = Operation(HGate(), [0]) circuit.append(opH) assert circuit.point(opH).__repr__( ) == 'CircuitPoint(cycle=0, qudit=0)' opX = Operation(XGate(), [0]) circuit.append(opX) assert circuit.point(opX).__repr__( ) == 'CircuitPoint(cycle=1, qudit=0)'
IdentityGate(1), IdentityGate(2), IdentityGate(3), IdentityGate(4), ISwapGate(), # PermutationGate(), # TODO SGate(), SdgGate(), SqrtCNOTGate(), SwapGate(), SXGate(), SqrtXGate(), TGate(), TdgGate(), ConstantUnitaryGate(TOFFOLI), # TODO XGate(), XXGate(), YGate(), ZGate(), # PauliGate(), # TODO RXGate(), RYGate(), RZGate(), U1Gate(), U2Gate(), U3Gate(), U8Gate(), DaggerGate(TGate()), DaggerGate(CZGate()), DaggerGate(U1Gate()), DaggerGate(U8Gate()),
def test_get_gate_set(self, simple_circuit: Circuit) -> None: gate_set = simple_circuit.get_gate_set() assert isinstance(gate_set, set) assert len(gate_set) == 2 assert XGate() in gate_set assert CNOTGate() in gate_set