public void should_change_message_label() { var processor = new ContentBasedRouter(m => string.Format("l-{0}", ((string)m.Payload).Length).ToMessageLabel()); 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("l-4"); result.Single().Payload.Should().Be("Body"); message = new Message( "boo".ToMessageLabel(), new Dictionary<string, object> { { "This", "That" } }, "Another"); result = processor.Apply(message).ToList(); result.Should().HaveCount(1); result.Single().Label.Name.Should().Be("l-7"); }
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"); }