def test_repr(): cirq.testing.assert_equivalent_repr(cirq_pasqal.PasqalGateset(), setup_code='import cirq_pasqal') cirq.testing.assert_equivalent_repr( cirq_pasqal.PasqalGateset(include_additional_controlled_ops=False), setup_code='import cirq_pasqal', )
def test_decomposition(op: cirq.Operation): circuit = cirq.Circuit(op) gs = cirq_pasqal.PasqalGateset() gs2 = cirq_pasqal.PasqalGateset(include_additional_controlled_ops=False) for gateset in [gs, gs2]: decomposed_circuit = cirq.optimize_for_target_gateset(circuit, gateset=gateset) for new_op in decomposed_circuit.all_operations(): assert gs.validate(new_op)
def test_gateset(op: cirq.Operation, expected: bool): gs = cirq_pasqal.PasqalGateset() assert gs.validate(op) == expected assert gs.validate(cirq.Circuit(op)) == expected
def test_control_gates_not_included(op: cirq.Operation, expected: bool): gs = cirq_pasqal.PasqalGateset(include_additional_controlled_ops=False) assert gs.validate(op) == expected assert gs.validate(cirq.Circuit(op)) == expected
"op", [ cirq.H(Q) ** 0.5, cirq.X(Q), cirq.SWAP(Q, Q2), cirq.ISWAP(Q, Q2), cirq.CCNOT(Q, Q2, Q3), cirq.CCZ(Q, Q2, Q3), cirq.ParallelGate(cirq.X, num_copies=3)(Q, Q2, Q3), cirq.SWAP(Q, Q2).controlled_by(Q3), ], ) @pytest.mark.parametrize( "gs", [ cirq_pasqal.PasqalGateset(), cirq_pasqal.PasqalGateset(include_additional_controlled_ops=False), ], ) def test_decomposition(op: cirq.Operation, gs: cirq.CompilationTargetGateset): circuit = cirq.Circuit(op) decomposed_circuit = cirq.optimize_for_target_gateset( circuit, gateset=gs, ignore_failures=False ) gs.validate(decomposed_circuit) @pytest.mark.parametrize( "gs", [ cirq_pasqal.PasqalGateset(),