コード例 #1
0
 public SelectExpandBinderTests()
 {
     BinderForPerson = new SelectExpandBinder(this.V4configuration,
                                              new ODataPathInfo(HardCodedTestModel.GetPersonType(), HardCodedTestModel.GetPeopleSet()), null);
     BinderForAddress = new SelectExpandBinder(this.V4configuration,
                                               new ODataPathInfo(HardCodedTestModel.GetAddressType(), null), null);
 }
コード例 #2
0
        public void EqualsOnComplexTypesWithDifferentNullabilityIsSupported()
        {
            var notNullableType = new EdmComplexTypeReference(HardCodedTestModel.GetAddressType(), false);
            var nullableType    = new EdmComplexTypeReference(HardCodedTestModel.GetAddressType(), true);

            IEdmTypeReference left      = notNullableType;
            IEdmTypeReference right     = nullableType;
            SingleValueNode   leftNode  = new SingleValuePropertyAccessNode(new ConstantNode(null) /*parent*/, new EdmStructuralProperty(new EdmEntityType("MyNamespace", "MyEntityType"), "myPropertyName", left));
            SingleValueNode   rightNode = new SingleValuePropertyAccessNode(new ConstantNode(null) /*parent*/, new EdmStructuralProperty(new EdmEntityType("MyNamespace", "MyEntityType"), "myPropertyName", right));
            var result = TypePromotionUtils.PromoteOperandTypes(BinaryOperatorKind.Equal, leftNode, rightNode, out left, out right);

            result.Should().BeTrue();
            left.ShouldBeEquivalentTo(nullableType);
            right.ShouldBeEquivalentTo(nullableType);

            // Reverse order
            left      = nullableType;
            right     = notNullableType;
            leftNode  = new SingleValuePropertyAccessNode(new ConstantNode(null) /*parent*/, new EdmStructuralProperty(new EdmEntityType("MyNamespace", "MyEntityType"), "myPropertyName", left));
            rightNode = new SingleValuePropertyAccessNode(new ConstantNode(null) /*parent*/, new EdmStructuralProperty(new EdmEntityType("MyNamespace", "MyEntityType"), "myPropertyName", right));
            result    = TypePromotionUtils.PromoteOperandTypes(BinaryOperatorKind.Equal, leftNode, rightNode, out left, out right);

            result.Should().BeTrue();
            left.ShouldBeEquivalentTo(nullableType);
            right.ShouldBeEquivalentTo(nullableType);
        }
コード例 #3
0
 public ExpandBinderUnitTests()
 {
     this.binderForPerson  = new SelectExpandBinder(this.V4configuration, HardCodedTestModel.GetPersonType(), HardCodedTestModel.GetPeopleSet());
     this.binderForAddress = new SelectExpandBinder(this.V4configuration, HardCodedTestModel.GetAddressType(), null);
 }
コード例 #4
0
        public void CreateImplicitParameterNodeFromNonEntityCollectionShouldCreateNonResourceRangeVariableReferenceNode()
        {
            var resultNode = NodeFactory.CreateImplicitRangeVariable(new ODataPath(new[] { new PropertySegment(HardCodedTestModel.GetPersonPreviousAddressesProp()) }));

            resultNode.ShouldBeResourceRangeVariable(ExpressionConstants.It).TypeReference.Definition.Should().Be(HardCodedTestModel.GetAddressType());
            resultNode.Name.Should().Be(ExpressionConstants.It);
        }