예제 #1
0
 public RulesEngine(ILogger logger = null, ReSettings reSettings = null)
 {
     _logger               = logger ?? new NullLogger <RulesEngine>();
     _reSettings           = reSettings ?? new ReSettings();
     _ruleExpressionParser = new RuleExpressionParser(_reSettings);
     _ruleCompiler         = new RuleCompiler(new RuleExpressionBuilderFactory(_reSettings, _ruleExpressionParser), _reSettings, _logger);
     _actionFactory        = new ActionFactory(GetActionRegistry(_reSettings));
 }
예제 #2
0
        public void RuleCompiler_NullCheck()
        {
            Assert.Throws <ArgumentNullException>(() => new RuleCompiler(null, null));
            var reSettings = new ReSettings();
            var parser     = new RuleExpressionParser(reSettings);

            Assert.Throws <ArgumentNullException>(() => new RuleCompiler(new RuleExpressionBuilderFactory(reSettings, parser), null));
        }
예제 #3
0
        public void RuleCompiler_CompileRule_ThrowsException()
        {
            var reSettings = new ReSettings();
            var parser     = new RuleExpressionParser(reSettings);
            var compiler   = new RuleCompiler(new RuleExpressionBuilderFactory(reSettings, parser), new NullLogger <RuleCompiler>());

            Assert.Throws <ArgumentNullException>(() => compiler.CompileRule(null, null));
            Assert.Throws <ArgumentNullException>(() => compiler.CompileRule(null, new RuleParameter[] { null }));
        }
        public void RuleGetExpressionBuilderTest(RuleExpressionType expressionType, Type expectedExpressionBuilderType)
        {
            var reSettings        = new ReSettings();
            var parser            = new RuleExpressionParser(reSettings);
            var objBuilderFactory = new RuleExpressionBuilderFactory(reSettings, parser);
            var builder           = objBuilderFactory.RuleGetExpressionBuilder(expressionType);

            var builderType = builder.GetType();

            Assert.Equal(expectedExpressionBuilderType.ToString(), builderType.ToString());
        }
예제 #5
0
 internal ParamCompiler(ReSettings reSettings, RuleExpressionParser ruleExpressionParser)
 {
     _reSettings           = reSettings;
     _ruleExpressionParser = ruleExpressionParser;
 }
 public RuleExpressionBuilderFactory(ReSettings reSettings, RuleExpressionParser expressionParser)
 {
     _reSettings = reSettings;
     _lambdaExpressionBuilder = new LambdaExpressionBuilder(_reSettings, expressionParser);
 }
 public OutputExpressionAction(RuleExpressionParser ruleExpressionParser)
 {
     _ruleExpressionParser = ruleExpressionParser;
 }