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); }
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); }
public ExpandBinderUnitTests() { this.binderForPerson = new SelectExpandBinder(this.V4configuration, HardCodedTestModel.GetPersonType(), HardCodedTestModel.GetPeopleSet()); this.binderForAddress = new SelectExpandBinder(this.V4configuration, HardCodedTestModel.GetAddressType(), null); }
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); }