Esempio n. 1
0
            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");
            }
Esempio n. 2
0
            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");
            }