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());
        }
Пример #2
0
        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'"));
        }
Пример #5
0
        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);
        }