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())); }
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"); }
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"); }
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)); }
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(); }
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(); }