/// <summary>
        /// Handle a CountSegment
        /// </summary>
        /// <param name="segment">the segment to handle</param>
        public override void Handle(CountSegment segment)
        {
            _navigationSource = null;

            _pathTemplate.Add(ODataSegmentKinds.Count); // $count
            _pathUriLiteral.Add(ODataSegmentKinds.Count);
        }
Esempio n. 2
0
        public void InequalityIsCorrect()
        {
            BatchSegment segment1 = BatchSegment.Instance;
            CountSegment segment2 = CountSegment.Instance;

            segment1.Equals(segment2).Should().BeFalse();
        }
        public void InequalityIsCorrect()
        {
            NavigationPropertySegment navigationPropertySegment1 = new NavigationPropertySegment(HardCodedTestModel.GetPersonMyDogNavProp(), null);
            NavigationPropertySegment navigationPropertySegment2 = new NavigationPropertySegment(HardCodedTestModel.GetDogMyPeopleNavProp(), null);
            CountSegment segment = CountSegment.Instance;

            Assert.False(navigationPropertySegment1.Equals(navigationPropertySegment2));
            Assert.False(navigationPropertySegment1.Equals(segment));
        }
Esempio n. 4
0
        public static string ToUriLiteral(this CountSegment segment)
        {
            if (segment == null)
            {
                throw Error.ArgumentNull("segment");
            }

            return(ODataSegmentKinds.Count);
        }
Esempio n. 5
0
        public void Translate_CountSegment_To_CountPathSegment_Works()
        {
            // Arrange
            CountSegment segment = CountSegment.Instance;

            // Act
            IEnumerable <ODataPathSegment> segments = _translator.Translate(segment);

            // Assert
            ODataPathSegment pathSegment = Assert.Single(segments);

            Assert.IsType <CountPathSegment>(pathSegment);
        }
Esempio n. 6
0
        public void Translate_ReturnsODataActionImportSegment()
        {
            // Arrange
            ODataTemplateTranslateContext context = new ODataTemplateTranslateContext();

            // Act
            ODataPathSegment actual = CountSegmentTemplate.Instance.Translate(context);

            // Assert
            Assert.NotNull(actual);
            CountSegment countSegment = Assert.IsType <CountSegment>(actual);

            Assert.Same(CountSegment.Instance, countSegment);
        }
Esempio n. 7
0
        public void TryTranslateCountSegmentTemplate_ReturnsODataCountSegment()
        {
            // Arrange
            ODataTemplateTranslateContext context = new ODataTemplateTranslateContext();

            // Act
            bool ok = CountSegmentTemplate.Instance.TryTranslate(context);

            // Assert
            Assert.True(ok);
            ODataPathSegment actual       = Assert.Single(context.Segments);
            CountSegment     countSegment = Assert.IsType <CountSegment>(actual);

            Assert.Same(CountSegment.Instance, countSegment);
        }
Esempio n. 8
0
        public override void Handle(CountSegment segment)
        {
            this.ThrowIfResolved();

            this.NavigationSource = null;
            this.Property         = null;
            this.Type             = segment.EdmType;
            this.ElementType      = this.GetElementType(this.Type);

            this.IsRawValue = true;

            this.childSegments.Add(segment);

            this.canonicalSegments.Add(segment);
        }
Esempio n. 9
0
        /// <summary>
        /// Translate CountSegment to linq expression.
        /// </summary>
        /// <param name="segment">The CountSegment</param>
        /// <returns>The linq expression</returns>
        public override Expression Translate(CountSegment segment)
        {
            if (!(this.LastProcessedSegment is EntitySetSegment || this.LastProcessedSegment is NavigationPropertySegment))
            {
                throw new InvalidOperationException("Unsupported URI segment before CountSegment");
            }

            Type instanceType = EdmClrTypeUtils.GetInstanceType((this.LastProcessedSegment.EdmType as EdmCollectionType).ElementType);

            // A set return now is a IEnumable, try to convert to IQueryable.
            this.ResultExpression = Expression.Call(typeof(Queryable), AsQueryableMethod, new Type[] { instanceType }, this.ResultExpression);

            this.ResultExpression     = Expression.Call(typeof(Queryable), CountMethodName, new Type[] { instanceType }, this.ResultExpression);
            this.LastProcessedSegment = segment;
            return(this.ResultExpression);
        }
Esempio n. 10
0
        public void InequalityIsCorrect()
        {
            KeySegment segment1 = new KeySegment(new List <KeyValuePair <string, object> >()
            {
                new KeyValuePair <string, object>("key", "value1")
            }, HardCodedTestModel.GetPersonType(), HardCodedTestModel.GetPeopleSet());
            KeySegment segment2 = new KeySegment(new List <KeyValuePair <string, object> >()
            {
                new KeyValuePair <string, object>("key", "value1")
            }, HardCodedTestModel.GetDogType(), HardCodedTestModel.GetDogsSet());
            KeySegment segment3 = new KeySegment(new List <KeyValuePair <string, object> >()
            {
                new KeyValuePair <string, object>("key", "value2")
            }, HardCodedTestModel.GetPersonType(), HardCodedTestModel.GetPeopleSet());
            CountSegment segment4 = CountSegment.Instance;

            segment1.Equals(segment2).Should().BeFalse();
            segment1.Equals(segment3).Should().BeFalse();
            segment1.Equals(segment4).Should().BeFalse();
        }
Esempio n. 11
0
        public override void Handle(CountSegment segment)
        {
            this.ThrowIfResolved();

            this.NavigationSource = null;
            this.Property = null;
            this.Type = segment.EdmType;
            this.ElementType = this.GetElementType(this.Type);

            this.IsRawValue = true;

            this.childSegments.Add(segment);

            this.canonicalSegments.Add(segment);
        }
 /// <summary>
 /// Translate a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 /// <returns>Defined by the implementer.</returns>
 public override string Translate(CountSegment segment)
 {
     throw new NotImplementedException();
 }
Esempio n. 13
0
 /// <summary>
 /// Handle a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Handle</param>
 public virtual void Handle(CountSegment segment)
 {
     throw new NotImplementedException();
 }
Esempio n. 14
0
        private static IEdmNavigationSource GetTargetNavigationSource(IEdmNavigationSource previous, ODataPathSegment segment)
        {
            if (segment == null)
            {
                return(null);
            }

            EntitySetSegment entitySet = segment as EntitySetSegment;

            if (entitySet != null)
            {
                return(entitySet.EntitySet);
            }

            SingletonSegment singleton = segment as SingletonSegment;

            if (singleton != null)
            {
                return(singleton.Singleton);
            }

            TypeSegment cast = segment as TypeSegment;

            if (cast != null)
            {
                return(cast.NavigationSource);
            }

            KeySegment key = segment as KeySegment;

            if (key != null)
            {
                return(key.NavigationSource);
            }

            OperationSegment opertion = segment as OperationSegment;

            if (opertion != null)
            {
                return(opertion.EntitySet);
            }

            OperationImportSegment import = segment as OperationImportSegment;

            if (import != null)
            {
                return(import.EntitySet);
            }

            PropertySegment property = segment as PropertySegment;

            if (property != null)
            {
                return(previous); // for property, return the previous, or return null????
            }

            MetadataSegment metadata = segment as MetadataSegment;

            if (metadata != null)
            {
                return(null);
            }

            CountSegment count = segment as CountSegment;

            if (count != null)
            {
                return(null);
            }

            OperationImportSegment operationImport = segment as OperationImportSegment;

            if (operationImport != null)
            {
                return(null);
            }

            throw new Exception("Not supported segment in endpoint routing convention!");
        }
Esempio n. 15
0
 public override bool Translate(CountSegment segment)
 {
     return(GetNextSegment() is CountSegment);
 }
Esempio n. 16
0
 /// <summary>
 /// Translate a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 /// <returns>Translated WebApi path segment.</returns>
 public override IEnumerable <ODataPathSegment> Translate(CountSegment segment)
 {
     yield return(new CountPathSegment());
 }
 /// <summary>
 /// Translate a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 /// <returns>UserDefinedValue</returns>
 /// <exception cref="System.ArgumentNullException">Throws if the input segment is null.</exception>
 public override bool Translate(CountSegment segment)
 {
     ExceptionUtils.CheckArgumentNotNull(segment, "segment");
     return(false);
 }
Esempio n. 18
0
 public override string Translate(CountSegment segment)
 {
     return("($count)");
 }
 /// <summary>
 /// Handle a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Handle</param>
 public override void Handle(CountSegment segment)
 {
     CommonHandler(segment);
 }
Esempio n. 20
0
 /// <summary>
 /// Handle a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Handle</param>
 public virtual void Handle(CountSegment segment)
 {
     throw new NotImplementedException();
 }
Esempio n. 21
0
 /// <summary>
 /// Translate a CountSegment.
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 public override void Handle(CountSegment segment)
 {
     _segmentTemplates.Add(CountSegmentTemplate.Instance);
 }
 /// <summary>
 /// Translate a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 /// <returns>Defined by the implementer.</returns>
 public override string Translate(CountSegment segment)
 {
     return(string.Empty);
 }
 /// <summary>
 /// Translate a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 /// <returns>Defined by the implementer.</returns>
 public override string Translate(CountSegment segment)
 {
     Debug.Assert(segment != null, "segment != null");
     return("/" + segment.Identifier);
 }
 /// <summary>
 /// Handle a CountSegment
 /// </summary>
 /// <param name="segment">the segment to handle</param>
 public override void Handle(CountSegment segment)
 {
 }
Esempio n. 25
0
 /// <summary>
 /// Translate a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 /// <returns>Defined by the implementer.</returns>
 public virtual T Translate(CountSegment segment)
 {
     throw new NotImplementedException();
 }
 /// <summary>
 /// Translate a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 /// <returns>Translated the path segment template.</returns>
 public override ODataSegmentTemplate Translate(CountSegment segment)
 {
     return(CountSegmentTemplate.Instance);
 }
Esempio n. 27
0
 /// <summary>
 /// Translate CountSegment to linq expression.
 /// </summary>
 /// <param name="segment">The CountSegment</param>
 /// <returns>The linq expression</returns>
 public override Expression Translate(CountSegment segment)
 {
     throw new NotImplementedException("CountSegment translation is not supported");
 }
 /// <summary>
 /// Translate a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 /// <returns>Translated the path segment template.</returns>
 public override ODataPathSegmentTemplate Translate(CountSegment segment)
 {
     return(new ODataPathSegmentTemplate <CountSegment>());
 }
Esempio n. 29
0
 /// <summary>
 /// Translate a CountSegment
 /// </summary>
 /// <param name="segment">the segment to Translate</param>
 /// <returns>Translated odata path segment.</returns>
 public override ODataPathSegment Translate(CountSegment segment)
 {
     return(segment);
 }
Esempio n. 30
0
 /// <summary>
 /// Handle validating a CountSegment
 /// </summary>
 /// <param name="segment">The count segment to valdiate.</param>
 public override void Handle(CountSegment segment)
 {
     ValidateItem(segment);
 }