def test_forwarder_engine(): backend = DummyEngine(save_commands=True) engine0 = DummyEngine() main_engine = MainEngine(backend=backend, engine_list=[engine0]) def cmd_mod_fun(cmd): cmd.tags = "NewTag" return cmd forwarder_eng = _basics.ForwarderEngine(backend, cmd_mod_fun) engine0.next_engine = forwarder_eng forwarder_eng2 = _basics.ForwarderEngine(engine0) main_engine.next_engine = forwarder_eng2 qubit = main_engine.allocate_qubit() H | qubit # Test if H gate was sent through forwarder_eng and tag was added received_commands = [] # Remove Allocate and Deallocate gates for cmd in backend.received_commands: if not (isinstance(cmd.gate, FastForwardingGate) or isinstance(cmd.gate, ClassicalInstructionGate)): received_commands.append(cmd) for cmd in received_commands: print(cmd) assert len(received_commands) == 1 assert received_commands[0].gate == H assert received_commands[0].tags == "NewTag"