public void should_change_message_payload() { var processor = new Translator( m => string.Format("Got : {0}", ((Boo)m.Payload).A)); var payload = new Boo { A = 10 }; var message = new Message<Boo>( "boo".ToMessageLabel(), new Dictionary<string, object> { { "This", "That" } }, payload); var result = processor.Apply(message).ToList(); result.Should().HaveCount(1); result.Single().Label.Name.Should().Be("boo"); result.Single().Payload.Should().Be("Got : 10"); }
public void should_process_in_predefined_order() { var splitter = new Splitter( m => { var p = (string)m.Payload; return p .ToCharArray() .Select(c => Tuple.Create(c)); }); var filter = new Filter(m => char.IsLetter(((Tuple<char>)m.Payload).Item1)); var translator = new Translator(m => char.IsLower(((Tuple<char>)m.Payload).Item1) ? "lower" : "upper"); var router = new ContentBasedRouter(m => ((string)m.Payload + " route").ToMessageLabel()); var processor = new Pipeline( splitter, filter, translator, router); var message = new Message( "boo".ToMessageLabel(), new Dictionary<string, object> { { "This", "That" } }, "B1o-d,y"); var result = processor.Apply(message).ToList(); result.Should().HaveCount(4); result.Should().OnlyContain(m => m.Headers.ContainsKey("This")); result[0].Label.Name.Should().Be("upper route"); result[1].Label.Name.Should().Be("lower route"); result[2].Label.Name.Should().Be("lower route"); result[3].Label.Name.Should().Be("lower route"); result[0].Payload.Should().Be("upper"); result[1].Payload.Should().Be("lower"); result[2].Payload.Should().Be("lower"); result[3].Payload.Should().Be("lower"); }