예제 #1
0
        public void TestEvaluate()
        {
            _andNode.AddChildNode(new SupportBoolExprNode(true));
            _andNode.AddChildNode(new SupportBoolExprNode(true));
            SupportExprNodeUtil.Validate(_andNode);
            Assert.IsTrue(_andNode.Evaluate(new EvaluateParams(null, false, null)).AsBoolean());

            _andNode = new ExprAndNodeImpl();
            _andNode.AddChildNode(new SupportBoolExprNode(true));
            _andNode.AddChildNode(new SupportBoolExprNode(false));
            SupportExprNodeUtil.Validate(_andNode);
            Assert.IsFalse(_andNode.Evaluate(new EvaluateParams(null, false, null)).AsBoolean());
        }
예제 #2
0
        public void TestEvaluate()
        {
            andNode.AddChildNode(new SupportBoolExprNode(true));
            andNode.AddChildNode(new SupportBoolExprNode(true));
            SupportExprNodeUtil.Validate(container, andNode);
            Assert.IsTrue((bool)andNode.Forge.ExprEvaluator.Evaluate(null, false, null));

            andNode = new ExprAndNodeImpl();
            andNode.AddChildNode(new SupportBoolExprNode(true));
            andNode.AddChildNode(new SupportBoolExprNode(false));
            SupportExprNodeUtil.Validate(container, andNode);
            Assert.IsFalse((bool)andNode.Forge.ExprEvaluator.Evaluate(null, false, null));
        }
예제 #3
0
        public void TestValidate()
        {
            // test success
            _andNode.AddChildNode(new SupportExprNode(typeof(Boolean)));
            _andNode.AddChildNode(new SupportExprNode(typeof(Boolean)));
            _andNode.Validate(SupportExprValidationContextFactory.MakeEmpty(_container));

            // test failure, type mismatch
            _andNode.AddChildNode(new SupportExprNode(typeof(string)));
            try
            {
                _andNode.Validate(SupportExprValidationContextFactory.MakeEmpty(_container));
                Assert.Fail();
            }
            catch (ExprValidationException)
            {
                // Expected
            }

            // test failed - with just one child
            _andNode = new ExprAndNodeImpl();
            _andNode.AddChildNode(new SupportExprNode(typeof(Boolean)));
            try
            {
                _andNode.Validate(SupportExprValidationContextFactory.MakeEmpty(_container));
                Assert.Fail();
            }
            catch (ExprValidationException)
            {
                // Expected
            }
        }
예제 #4
0
        public static ExprNode ConnectExpressionsByLogicalAnd(
            IList<ExprNode> nodes,
            ExprNode optionalAdditionalFilter)
        {
            if (nodes.IsEmpty()) {
                return optionalAdditionalFilter;
            }

            if (optionalAdditionalFilter == null) {
                if (nodes.Count == 1) {
                    return nodes[0];
                }

                return ConnectExpressionsByLogicalAnd(nodes);
            }

            if (nodes.Count == 1) {
                return ConnectExpressionsByLogicalAnd(Collections.List(nodes[0], optionalAdditionalFilter));
            }

            ExprAndNode andNode = ConnectExpressionsByLogicalAnd(nodes);
            andNode.AddChildNode(optionalAdditionalFilter);
            return andNode;
        }