public void InequalityIsCorrect() { EntitySetSegment segment1 = new EntitySetSegment(HardCodedTestModel.GetPeopleSet()); EntitySetSegment segment2 = new EntitySetSegment(HardCodedTestModel.GetDogsSet()); BatchSegment segment3 = BatchSegment.Instance; segment1.Equals(segment2).Should().BeFalse(); segment1.Equals(segment3).Should().BeFalse(); }
public void Translate_EntitySetSegment_To_EntitySetPathSegment_Works() { // Arrange IEdmEntitySet entityset = _model.FindDeclaredEntitySet("RoutingCustomers"); EntitySetSegment segment = new EntitySetSegment(entityset); // Act IEnumerable<ODataPathSegment> segments = _translator.Translate(segment); // Assert ODataPathSegment pathSegment = Assert.Single(segments); EntitySetPathSegment entitySetPathSegment = Assert.IsType<EntitySetPathSegment>(pathSegment); Assert.Same(entityset, entitySetPathSegment.EntitySetBase); }
/// <summary> /// Translate an EntitySetSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Defined by the implementer.</returns> public override string Translate(EntitySetSegment segment) { Debug.Assert(segment != null, "segment != null"); return("/" + segment.EntitySet.Name); }
/// <summary> /// Translate an EntitySetSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Defined by the implementer.</returns> public virtual T Translate(EntitySetSegment segment) { throw new NotImplementedException(); }
/// <summary> /// Translate an EntitySetSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Translated odata path segment.</returns> public override ODataPathSegment Translate(EntitySetSegment segment) { return(segment); }
public void TargetEdmEntitySetIsEntitySet() { EntitySetSegment segment = new EntitySetSegment(HardCodedTestModel.GetPeopleSet()); segment.TargetEdmNavigationSource.Should().BeSameAs(HardCodedTestModel.GetPeopleSet()); }
/// <summary> /// Tries to parse a segment as an entity set or singleton. /// </summary> /// <param name="identifier">The name of the segment</param> /// <param name="parenthesisExpression">The parenthesis expression</param> /// <returns>Whether or not the identifier referred to an entity set or singleton.</returns> private bool TryCreateSegmentForNavigationSource(string identifier, string parenthesisExpression) { ODataPathSegment segment = null; IEdmEntitySet targetEdmEntitySet; IEdmSingleton targetEdmSingleton; IEdmNavigationSource source = this.configuration.Resolver.ResolveNavigationSource(this.configuration.Model, identifier); if ((targetEdmEntitySet = source as IEdmEntitySet) != null) { segment = new EntitySetSegment(targetEdmEntitySet) { Identifier = identifier }; } else if ((targetEdmSingleton = source as IEdmSingleton) != null) { segment = new SingletonSegment(targetEdmSingleton) { Identifier = identifier }; } if (segment != null) { this.parsedSegments.Add(segment); this.TryBindKeyFromParentheses(parenthesisExpression); return true; } return false; }
/// <summary> /// Handle an EntitySetSegment /// </summary> /// <param name="segment">the segment to Handle</param> public virtual void Handle(EntitySetSegment segment) { throw new NotImplementedException(); }
/// <summary> /// Remove redundant entity set path to keep the last non-contained entity set. /// </summary> private void RemoveRedundantEntitySetPath() { List<ODataPathSegment> newSegments = new List<ODataPathSegment>(); // Find the last non-contained navigation property segment. var navigationPropertySegment = this.lastSegment as NavigationPropertySegment; while (navigationPropertySegment == null || navigationPropertySegment.NavigationProperty.ContainsTarget || navigationPropertySegment.NavigationProperty.TargetMultiplicity() == EdmMultiplicity.One) { newSegments.Insert(0, this.lastSegment); this.RemoveLastSegment(); navigationPropertySegment = this.lastSegment as NavigationPropertySegment; // Have traversed all segments. if (this.lastSegment == null) { break; } } // Translate the last non-contained property segment to entity set segment. if (navigationPropertySegment != null) { var entitySetSegment = new EntitySetSegment(navigationPropertySegment.NavigationSource as IEdmEntitySet); newSegments.Insert(0, entitySetSegment); } // Set segments to newSegments. this.segments.Clear(); this.segments = newSegments; this.lastSegment = this.segments.Last(); }
public void EqualityIsCorrect() { EntitySetSegment segment1 = new EntitySetSegment(HardCodedTestModel.GetPeopleSet()); EntitySetSegment segment2 = new EntitySetSegment(HardCodedTestModel.GetPeopleSet()); segment1.Equals(segment2).Should().BeTrue(); }
public void TypeComuptedCorrecretly() { EntitySetSegment segment = new EntitySetSegment(HardCodedTestModel.GetPeopleSet()); segment.EdmType.Should().BeOfType<EdmCollectionType>(); segment.EdmType.As<EdmCollectionType>().ShouldBeEquivalentTo<IEdmType>(new EdmCollectionType(new EdmEntityTypeReference(HardCodedTestModel.GetPersonType(), false))); }
public void EntitySetSetCorrectly() { EntitySetSegment segment = new EntitySetSegment(HardCodedTestModel.GetPeopleSet()); segment.EntitySet.Name.Should().Be(HardCodedTestModel.GetPeopleSet().Name); }
public void SingleResultIsFalse() { EntitySetSegment segment = new EntitySetSegment(HardCodedTestModel.GetPeopleSet()); segment.SingleResult.Should().BeFalse(); }
public void TargetKindIsResource() { EntitySetSegment segment = new EntitySetSegment(HardCodedTestModel.GetPeopleSet()); segment.TargetKind.Should().Be(RequestTargetKind.Resource); }
public void TargetEdmTypeIsTypeOfEntitySet() { EntitySetSegment segment = new EntitySetSegment(HardCodedTestModel.GetPeopleSet()); segment.TargetEdmType.Should().BeSameAs(HardCodedTestModel.GetPeopleSet().EntityType()); }
public override INavigatable Translate(EntitySetSegment segment) { return(this.modelContext.GetEntitySetOrThrow(segment.EntitySet.Name)); }
public override void Handle(EntitySetSegment segment) { this.ThrowIfResolved(); this.NavigationSource = segment.EntitySet; this.Property = null; this.Type = segment.EdmType; this.ElementType = this.GetElementType(this.Type); this.PushParentSegment(); this.childSegments.Add(segment); if (segment.EntitySet is IEdmEntitySet) { this.canonicalSegments.Clear(); } this.canonicalSegments.Add(segment); }
public override bool Translate(EntitySetSegment segment) { return(GetNextSegment() is EntitySetSegment entitySetSegment && entitySetSegment.EntitySet == segment.EntitySet); }
/// <summary> /// Translate an EntitySetSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Translated the path segment template.</returns> public override ODataSegmentTemplate Translate(EntitySetSegment segment) { return(new EntitySetSegmentTemplate(segment)); }
private void RemoveRedundantContainingPathSegments() { // Find the last non-contained navigation property segment: // Collection valued: entity set // -or- // Single valued: singleton // Copy over other path segments such as: not a navigation path segment, contained navigation property, // single valued navigation property with navigation source targetting an entity set (we won't have key // information for that navigation property.) _segments.Reverse(); NavigationPropertySegment navigationPropertySegment = null; List<ODataPathSegment> newSegments = new List<ODataPathSegment>(); foreach (ODataPathSegment segment in _segments) { navigationPropertySegment = segment as NavigationPropertySegment; if (navigationPropertySegment != null) { EdmNavigationSourceKind navigationSourceKind = navigationPropertySegment.NavigationSource.NavigationSourceKind(); if ((navigationPropertySegment.NavigationProperty.TargetMultiplicity() == EdmMultiplicity.Many && navigationSourceKind == EdmNavigationSourceKind.EntitySet) || (navigationSourceKind == EdmNavigationSourceKind.Singleton)) { break; } } newSegments.Insert(0, segment); } // Start the path with the navigation source of the navigation property found above. if (navigationPropertySegment != null) { IEdmNavigationSource navigationSource = navigationPropertySegment.NavigationSource; Contract.Assert(navigationSource != null); if (navigationSource.NavigationSourceKind() == EdmNavigationSourceKind.Singleton) { SingletonSegment singletonSegment = new SingletonSegment((IEdmSingleton)navigationSource); newSegments.Insert(0, singletonSegment); } else { Contract.Assert(navigationSource.NavigationSourceKind() == EdmNavigationSourceKind.EntitySet); EntitySetSegment entitySetSegment = new EntitySetSegment((IEdmEntitySet)navigationSource); newSegments.Insert(0, entitySetSegment); } } _segments = newSegments; }
/// <summary> /// Handle a EntitySetSegment /// </summary> /// <param name="segment">the segment to handle</param> public override void Handle(EntitySetSegment segment) { }