Example #1
0
        /// <inheritdoc/>
        public IRuleBuilder <TContext, TSubject> Then(Action <TSubject> thenClause)
        {
            if (_rule.WhenClause == null)
            {
                throw new InvalidRuleException(Messages.WhenClauseMustPrecedeThenClause);
            }

            _rule.AddThenClause(ruleContext => thenClause(( TSubject )ruleContext.Subject));

            return(this);
        }
Example #2
0
        public void Rule_WithThenClauses_ThenClausesAreCallable()
        {
            var customer = new Customer ();
            var ruleEngineContext = new RuleEngineContext<Customer> ( customer );

            var rule = new Rule ( "Name" );

            Action<IRuleEngineContext> thenClause1 = e => ( ( Customer )e.Subject ).Age = 20;
            rule.AddThenClause ( thenClause1 );

            Action<IRuleEngineContext> thenClause2 = e => ( ( Customer )e.Subject ).Age++;
            rule.AddThenClause ( thenClause2 );

            foreach ( var clause in rule.ThenClauses )
            {
                clause ( ruleEngineContext );
            }

            Assert.AreEqual ( 21, customer.Age );
        }