Beispiel #1
0
        public void FirstTestName()
        {
            var engine = new MagnumRulesEngine();

            RuleDeclaration rule = CreateOnlineOrderRule();

            engine.Add(rule);
            rule = CreateCustomerExistsRule();
            engine.Add(rule);
            rule = CreateActiveNotPreferredRule();
            engine.Add(rule);
            rule = CreatePreferredRule();
            engine.Add(rule);

            var visitor = new StringNodeVisitor();

            engine.Visit(visitor);

            Trace.WriteLine(visitor.Result);


            using (StatefulSession session = engine.CreateSession())
            {
                session.Assert(CurrentOrder);

                session.Run();
            }
        }
Beispiel #2
0
        public void Only_those_that_are_matched_should_be_called()
        {
            var junction = new JoinNode <Customer>(_constantNode);

            junction.AddSuccessor(_actionNode);

            var alphaNodeA = new AlphaNode <Customer>();

            alphaNodeA.AddSuccessor(junction);

            var joinJunction = new JoinNode <Customer>(alphaNodeA);

            var alphaNodeB = new AlphaNode <Customer>();

            alphaNodeB.AddSuccessor(joinJunction);

            var actionNode = new ActionNode <Customer>(x => _secondaryCalled.Complete(x.Element.Object));

            var joinJunction2 = new JoinNode <Customer>(alphaNodeA);

            joinJunction2.AddSuccessor(actionNode);

            var alphaNodeC = new AlphaNode <Customer>();

            alphaNodeC.AddSuccessor(joinJunction2);

            var tree = new TypeNode <Customer>();

            var isPreferred = new ConditionNode <Customer>(x => x.Preferred);

            isPreferred.AddSuccessor(alphaNodeA);

            tree.AddSuccessor(isPreferred);

            tree.AddSuccessor(alphaNodeB);

            var isActive = new ConditionNode <Customer>(x => x.Active);

            isActive.AddSuccessor(alphaNodeC);
            tree.AddSuccessor(isActive);

            var visitor = new StringNodeVisitor();

            tree.Visit(visitor);

            Trace.WriteLine(visitor.Result);



            tree.Activate(_context);
            _session.Run();

            _primaryCalled.IsCompleted.ShouldBeTrue();
            _secondaryCalled.IsCompleted.ShouldBeFalse();
        }
		public void Setup()
		{
			_order = new OrderSubmitted();

			_overLimit = MockRepository.GenerateMock<Action<OrderSubmitted>>();
			_overLimit.Expect(x => x(_order));

			_underLimit = MockRepository.GenerateMock<Action<OrderSubmitted>>();
			_underLimit.Expect(x => x(_order)).Repeat.Never();

			_engine = new MagnumRulesEngine();

			AddOverLimitRule();
			AddUnderLimitRule();

			StringNodeVisitor visitor = new StringNodeVisitor();
			_engine.Visit(visitor);

			Trace.WriteLine(visitor.Result);
		}
Beispiel #4
0
        public void Setup()
        {
            _order = new OrderSubmitted();

            _overLimit = MockRepository.GenerateMock <Action <OrderSubmitted> >();
            _overLimit.Expect(x => x(_order));

            _underLimit = MockRepository.GenerateMock <Action <OrderSubmitted> >();
            _underLimit.Expect(x => x(_order)).Repeat.Never();

            _engine = new MagnumRulesEngine();

            AddOverLimitRule();
            AddUnderLimitRule();

            StringNodeVisitor visitor = new StringNodeVisitor();

            _engine.Visit(visitor);

            Trace.WriteLine(visitor.Result);
        }
        public void Only_those_that_are_matched_should_be_called()
        {
            var junction = new JoinNode<Customer>(_constantNode);
            junction.AddSuccessor(_actionNode);

            var alphaNodeA = new AlphaNode<Customer>();
            alphaNodeA.AddSuccessor(junction);

            var joinJunction = new JoinNode<Customer>(alphaNodeA);

            var alphaNodeB = new AlphaNode<Customer>();
            alphaNodeB.AddSuccessor(joinJunction);

            var actionNode = new ActionNode<Customer>(x => _secondaryCalled.Complete(x.Element.Object));

            var joinJunction2 = new JoinNode<Customer>(alphaNodeA);
            joinJunction2.AddSuccessor(actionNode);

            var alphaNodeC = new AlphaNode<Customer>();
            alphaNodeC.AddSuccessor(joinJunction2);

            var tree = new TypeNode<Customer>();

            var isPreferred = new ConditionNode<Customer>(x => x.Preferred);
            isPreferred.AddSuccessor(alphaNodeA);

            tree.AddSuccessor(isPreferred);

            tree.AddSuccessor(alphaNodeB);

            var isActive = new ConditionNode<Customer>(x => x.Active);
            isActive.AddSuccessor(alphaNodeC);
            tree.AddSuccessor(isActive);

            var visitor = new StringNodeVisitor();
            tree.Visit(visitor);

            Trace.WriteLine(visitor.Result);

            tree.Activate(_context);
            _session.Run();

            _primaryCalled.IsCompleted.ShouldBeTrue();
            _secondaryCalled.IsCompleted.ShouldBeFalse();
        }
Beispiel #6
0
 public void Setup()
 {
     _visitor = new StringNodeVisitor();
 }
Beispiel #7
0
		public void FirstTestName()
		{
			var engine = new MagnumRulesEngine();

			RuleDeclaration rule = CreateOnlineOrderRule();
			engine.Add(rule);
			rule = CreateCustomerExistsRule();
			engine.Add(rule);
			rule = CreateActiveNotPreferredRule();
			engine.Add(rule);
			rule = CreatePreferredRule();
			engine.Add(rule);

			var visitor = new StringNodeVisitor();
			engine.Visit(visitor);

			Trace.WriteLine(visitor.Result);


			using (StatefulSession session = engine.CreateSession())
			{
				session.Assert(CurrentOrder);

				session.Run();
			}
		}