public void Output_is_in_same_context_as_input() { var sut = new Execute_task(); var msg = new Message("a/b/x.in", "hello"); var task = new Task(msg, new Operation("x", (input, outputCont, _) => { outputCont(new Message("x.out", input.Data.ToString() + "x")); })); var results = new List<IMessage>(); sut.Result += _ => results.Add(_); sut.Process(task); Assert.AreEqual("hellox", results[0].Data.ToString()); Assert.AreEqual("a/b/x.out", results[0].Port.Fullname); }
public void Operation_with_single_output() { var sut = new Execute_task(); var msg = new Message("x.in", "hello"); var task = new Task(msg, new Operation("x", (input, outputCont, _) => { outputCont(input); })); IMessage result = null; sut.Result += _ => result = _; sut.Process(task); Assert.AreSame(msg, result); }
public void Operation_with_multiple_outputs() { var sut = new Execute_task(); var msg = new Message("x.in", "hello"); var task = new Task(msg, new Operation("x", (input, outputCont, _) => { outputCont(new Message("1", input.Data.ToString() + "x")); outputCont(new Message("2", input.Data.ToString() + "y")); })); var results = new List<IMessage>(); sut.Result += _ => results.Add(_); sut.Process(task); Assert.AreEqual("1", results[0].Port.Fullname); Assert.AreEqual("hellox", results[0].Data.ToString()); Assert.AreEqual("2", results[1].Port.Fullname); Assert.AreEqual("helloy", results[1].Data.ToString()); }
public Process_message() { // Build _map = new Map_message_to_input_ports(); var output = new Output_result(); _create = new Create_task(); var exec = new Execute_task(); var nest = new Nest_message_flow(); // Bind _process += _map.Process; _map.Result += _ => Message(_); _map.Result += output.Process; output.Result += _ => Result(_); output.Continue +=_create.Process; _create.Result += exec.Process; _create.UnknownOperation += nest.Process; exec.Result += _ => Continue(_); exec.HandledException += _ => Continue(_); exec.UnhandledException += _ => UnhandledException(_); nest.Result += _map.Process; _execute += exec.Process; }