Exemplo n.º 1
0
        public void Should_optimize_rules_of_multiple_types()
        {
            var engine = RulesEngineFactory.New(x =>
            {
                x.Rule <FirstRule>();
                x.Rule <SecondRule>();
            });


            FactHandle <Destination>[] destinations;
            using (var session = engine.CreateSession())
            {
                object first = new FirstSegmentImpl {
                    SourceId = "public"
                };
                session.Add(first);
                object second = new SecondSegmentImpl {
                    Amount = 10001.0m
                };
                session.Add(second);

                session.Run();

                destinations = session.Facts <Destination>().ToArray();
            }

            Assert.AreEqual(2, destinations.Length);

            Assert.AreEqual("90210", destinations[0].Fact.Address);
            Assert.AreEqual("74011", destinations[1].Fact.Address);
        }
        public void Should_optimize_rules_of_multiple_types()
        {
            var engine = RulesEngineFactory.New(x =>
                {
                    x.Rule<FirstRule>();
                    x.Rule<SecondRule>();
                });

            FactHandle<Destination>[] destinations;
            using(var session = engine.CreateSession())
            {
                object first = new FirstSegmentImpl {SourceId = "public"};
                session.Add(first);
                object second = new SecondSegmentImpl {Amount = 10001.0m};
                session.Add(second);

                session.Run();

                destinations = session.Facts<Destination>().ToArray();
            }

            Assert.AreEqual(2, destinations.Length);

            Assert.AreEqual("90210", destinations[0].Fact.Address);
            Assert.AreEqual("74011", destinations[1].Fact.Address);
        }