public void CastWithComplexTypeShouldWork() { this.dottedIdentifierBinder = new DottedIdentifierBinder(FakeBindMethods.BindSingleComplexProperty, this.bindingState); var castToken = new DottedIdentifierToken("Fully.Qualified.Namespace.HomeAddress", new DummyToken()); var resultNode = this.dottedIdentifierBinder.BindDottedIdentifier(castToken); resultNode.ShouldBeSingleResourceCastNode(HardCodedTestModel.GetHomeAddressReference()); }
public void CastWithOpenTypeShouldThrow() { this.dottedIdentifierBinder = new DottedIdentifierBinder(FakeBindMethods.BindMethodReturningASingleOpenProperty, this.bindingState); var castToken = new DottedIdentifierToken("Fully.Qualified.Namespace.Lion", new EndPathToken("Critics", new DummyToken())); Action bind = () => this.dottedIdentifierBinder.BindDottedIdentifier(castToken); bind.Throws <ODataException>(Strings.MetadataBinder_HierarchyNotFollowed(HardCodedTestModel.GetLionType().FullName(), "<null>")); }
public void CastOnEntityCollectionParentTokenShouldResultInCollectionCastNode() { this.dottedIdentifierBinder = new DottedIdentifierBinder(FakeBindMethods.BindMethodThatReturnsEntitySetNode, this.bindingState); var castToken = new DottedIdentifierToken("Fully.Qualified.Namespace.Person", new DummyToken()); var resultNode = this.dottedIdentifierBinder.BindDottedIdentifier(castToken); resultNode.ShouldBeCollectionCastNode(HardCodedTestModel.GetPersonTypeReference()) .Source.Should().BeSameAs(FakeBindMethods.FakeEntityCollectionNode); }
public void OR_NonFlagEnumValues_Error() { this.dottedIdentifierBinder = new DottedIdentifierBinder(FakeBindMethods.BindMethodThatReturnsEntitySetNode, this.bindingState); // NonFlagShape can't OR 2 member values 'Rectangle,foursquare' var castToken = new DottedIdentifierToken("Fully.Qualified.Namespace.NonFlagShape'Rectangle,foursquare'", new DummyToken()); Action parse = () => this.dottedIdentifierBinder.BindDottedIdentifier(castToken); parse.ShouldThrow <ODataException>().WithMessage(ODataErrorStrings.Binder_IsNotValidEnumConstant("Fully.Qualified.Namespace.NonFlagShape'Rectangle,foursquare'")); }
public void CastOnDerivedTypeEntityCollectionParentTokenShouldResultInCollectionCastNode() { this.dottedIdentifierBinder = new DottedIdentifierBinder(FakeBindMethods.BindMethodThatReturnsEntitySetNode, this.bindingState); var castToken = new DottedIdentifierToken("Fully.Qualified.Namespace.Employee", new DummyToken()); var resultNode = this.dottedIdentifierBinder.BindDottedIdentifier(castToken); var source = resultNode.ShouldBeCollectionCastNode(HardCodedTestModel.GetEmployeeTypeReference()).Source; Assert.Same(FakeBindMethods.FakeEntityCollectionNode, source); }
public DottedIdentifierBinderTests() { IEdmEntitySet set = HardCodedTestModel.GetPeopleSet(); CollectionResourceNode entityCollectionNode = new EntitySetNode(set); var implicitParameter = new ResourceRangeVariable(ExpressionConstants.It, HardCodedTestModel.GetPersonTypeReference(), entityCollectionNode); this.bindingState = new BindingState(this.configuration) { ImplicitRangeVariable = implicitParameter }; this.bindingState.RangeVariables.Push(new BindingState(this.configuration) { ImplicitRangeVariable = implicitParameter }.ImplicitRangeVariable); this.dottedIdentifierBinder = new DottedIdentifierBinder(FakeBindMethods.BindMethodReturningASinglePerson, this.bindingState); }