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"); }
public void should_filter_based_on_expression() { var processor = new Filter(m => m.Headers.ContainsKey("This") || ((string)m.Payload).Contains("!")); var message = new Message( "boo".ToMessageLabel(), new Dictionary<string, object> { { "This", "That" } }, "Body"); var result = processor.Apply(message).ToList(); result.Should().HaveCount(1); result.Single().Label.Name.Should().Be("boo"); message = new Message( "boo".ToMessageLabel(), new Dictionary<string, object>(), "Bo!dy"); result = processor.Apply(message).ToList(); result.Should().HaveCount(1); result.Single().Label.Name.Should().Be("boo"); message = new Message( "boo".ToMessageLabel(), new Dictionary<string, object>(), "Body"); result = processor.Apply(message).ToList(); result.Should().BeEmpty(); }