def test_auto_replacer_adds_tags(test_gate_filter): # Test that AutoReplacer puts back the tags backend = DummyEngine(save_commands=True) eng = MainEngine(backend=backend, engine_list=[_replacer.AutoReplacer(), test_gate_filter]) assert len(decompositions[TestGate.__class__.__name__]) == 2 assert len(backend.received_commands) == 0 qb = eng.allocate_qubit() cmd = Command(eng, TestGate, (qb, )) cmd.tags = ["AddedTag"] eng.send([cmd]) eng.flush() assert len(backend.received_commands) == 3 assert backend.received_commands[1].gate == X assert len(backend.received_commands[1].tags) == 1 assert backend.received_commands[1].tags[0] == "AddedTag"
def test_command_printer_measure_mapped_qubit(): eng = MainEngine(_printer.CommandPrinter(accept_input=False), []) qb1 = WeakQubitRef(engine=eng, idx=1) qb2 = WeakQubitRef(engine=eng, idx=2) cmd0 = Command(engine=eng, gate=Allocate, qubits=([qb1], )) cmd1 = Command(engine=eng, gate=Measure, qubits=([qb1], ), controls=[], tags=[LogicalQubitIDTag(2)]) with pytest.raises(NotYetMeasuredError): int(qb1) with pytest.raises(NotYetMeasuredError): int(qb2) eng.send([cmd0, cmd1]) eng.flush() with pytest.raises(NotYetMeasuredError): int(qb1) assert int(qb2) == 0
def test_simulator_measure_mapped_qubit(sim): eng = MainEngine(sim, []) qb1 = WeakQubitRef(engine=eng, idx=1) qb2 = WeakQubitRef(engine=eng, idx=2) cmd0 = Command(engine=eng, gate=Allocate, qubits=([qb1], )) cmd1 = Command(engine=eng, gate=X, qubits=([qb1], )) cmd2 = Command(engine=eng, gate=Measure, qubits=([qb1], ), controls=[], tags=[LogicalQubitIDTag(2)]) with pytest.raises(NotYetMeasuredError): int(qb1) with pytest.raises(NotYetMeasuredError): int(qb2) eng.send([cmd0, cmd1, cmd2]) eng.flush() with pytest.raises(NotYetMeasuredError): int(qb1) assert int(qb2) == 1