public void NonSingleValueQueryNodeShouldFail()
        {
            this.unaryOperatorBinder = new UnaryOperatorBinder(this.BindMethodThatReturnsCollectionQueryNode);
            var    unaryOperatorToken = new UnaryOperatorToken(UnaryOperatorKind.Negate, new LiteralToken("foo"));
            Action bind = () => this.unaryOperatorBinder.BindUnaryOperator(unaryOperatorToken);

            bind.Throws <ODataException>(Strings.MetadataBinder_UnaryOperatorOperandNotSingleValue(UnaryOperatorKind.Negate.ToString()));
        }
示例#2
0
        public void ExtensionSingleValueQueryNodeWithValidTypeReferenceShouldResultInUnaryOperatorNode()
        {
            this.unaryOperatorBinder           = new UnaryOperatorBinder(this.BindMethodThatReturnsSingleValueExtensionQueryNode);
            this.extensionSingleValueQueryNode = new SingleValueQueryNodeWithTypeReference();
            var unaryOperatorQueryToken = new UnaryOperatorToken(UnaryOperatorKind.Negate, new LiteralToken("foo"));
            var resultNode = this.unaryOperatorBinder.BindUnaryOperator(unaryOperatorQueryToken);

            resultNode.ShouldBeUnaryOperatorNode(UnaryOperatorKind.Negate).And.TypeReference.FullName().Should().Be("Edm.Int32");
        }
示例#3
0
        public void NotOperatorShouldResultInUnaryOperatorNode()
        {
            this.unaryOperatorBinder           = new UnaryOperatorBinder(this.BindMethodThatReturnsSingleValueQueryNode);
            this.parameterSingleValueQueryNode = new SingleValueFunctionCallNode("func", null, EdmCoreModel.Instance.GetBoolean(false));
            var unaryOperatorQueryToken = new UnaryOperatorToken(UnaryOperatorKind.Not, new LiteralToken("foo"));
            var resultNode = this.unaryOperatorBinder.BindUnaryOperator(unaryOperatorQueryToken);

            resultNode.ShouldBeUnaryOperatorNode(UnaryOperatorKind.Not).And.TypeReference.FullName().Should().Be("Edm.Boolean");
        }
示例#4
0
        public void NegateOperatorShouldResultInUnaryOperatorNode()
        {
            this.unaryOperatorBinder           = new UnaryOperatorBinder(this.BindMethodThatReturnsSingleValueQueryNode);
            this.parameterSingleValueQueryNode = new UnaryOperatorNode(UnaryOperatorKind.Negate, new UnaryOperatorNode(UnaryOperatorKind.Not, new ConstantNode(null)));
            var unaryOperatorQueryToken = new UnaryOperatorToken(UnaryOperatorKind.Negate, new LiteralToken(true));
            var resultNode = this.unaryOperatorBinder.BindUnaryOperator(unaryOperatorQueryToken);

            resultNode.ShouldBeUnaryOperatorNode(UnaryOperatorKind.Negate);
        }
        public void SingleValueQueryNodeWithImcompatibleTypeReferenceShouldFail()
        {
            this.unaryOperatorBinder           = new UnaryOperatorBinder(this.BindMethodThatReturnsSingleValueQueryNode);
            this.parameterSingleValueQueryNode = new SingleValueFunctionCallNode("func", null, EdmCoreModel.Instance.GetDateTimeOffset(false));
            var    unaryOperatorQueryToken = new UnaryOperatorToken(UnaryOperatorKind.Negate, new LiteralToken("foo"));
            Action bind = () => this.unaryOperatorBinder.BindUnaryOperator(unaryOperatorQueryToken);

            bind.Throws <ODataException>(Strings.MetadataBinder_IncompatibleOperandError("Edm.DateTimeOffset", UnaryOperatorKind.Negate));
        }
示例#6
0
        public void NegateOperatorOnNullLiteralShouldResultInUnaryOperatorNodeWithNullType()
        {
            this.unaryOperatorBinder           = new UnaryOperatorBinder(this.BindMethodThatReturnsSingleValueQueryNode);
            this.parameterSingleValueQueryNode = new ConstantNode(null);
            var unaryOperatorQueryToken = new UnaryOperatorToken(UnaryOperatorKind.Negate, new LiteralToken(true));
            var resultNode = this.unaryOperatorBinder.BindUnaryOperator(unaryOperatorQueryToken);

            resultNode.ShouldBeUnaryOperatorNode(UnaryOperatorKind.Negate)
            .And.Operand.ShouldBeConstantQueryNode <object>(null);
            resultNode.As <UnaryOperatorNode>().TypeReference.Should().BeNull();
        }
示例#7
0
        public void NegateOperatorOnOpenPropertyShouldResultInUnaryOperatorNodeWithNullType()
        {
            const string OpenPropertyName = "SomeProperty";

            this.unaryOperatorBinder           = new UnaryOperatorBinder(this.BindMethodThatReturnsSingleValueQueryNode);
            this.parameterSingleValueQueryNode = new SingleValueOpenPropertyAccessNode(new ConstantNode(null), OpenPropertyName);
            var unaryOperatorQueryToken = new UnaryOperatorToken(UnaryOperatorKind.Negate, new LiteralToken(true));
            var resultNode = this.unaryOperatorBinder.BindUnaryOperator(unaryOperatorQueryToken);

            resultNode.ShouldBeUnaryOperatorNode(UnaryOperatorKind.Negate)
            .And.Operand.ShouldBeSingleValueOpenPropertyAccessQueryNode(OpenPropertyName);
            resultNode.As <UnaryOperatorNode>().TypeReference.Should().BeNull();
        }