public void NonEntityTypeIsPassedThrough() { IEdmType nonEntityType = ModelBuildingHelpers.BuildValidComplexType(); ValueSegment segment = new ValueSegment(nonEntityType); Assert.Same(nonEntityType, segment.EdmType); }
/// <summary> /// Handle a ValueSegment /// </summary> /// <param name="segment">the segment to handle</param> public override void Handle(ValueSegment segment) { Contract.Assert(segment != null); NavigationSource = null; _path.Add(ODataSegmentKinds.Value); }
public void NonEntityTypeIsPassedThrough() { IEdmType nonEntityType = ModelBuildingHelpers.BuildValidComplexType(); ValueSegment segment = new ValueSegment(nonEntityType); segment.EdmType.Should().BeSameAs(nonEntityType); }
public void EqualityIsCorrect() { IEdmEntityType entityType = ModelBuildingHelpers.BuildValidEntityType(); ValueSegment segment1 = new ValueSegment(entityType); ValueSegment segment2 = new ValueSegment(entityType); segment1.Equals(segment2).Should().BeTrue(); }
public async Task VisitAsync(ODataPath path) { NotFound = false; BadRequest = false; Result = null; ResultType = null; PropertySetter = null; Index = 0; foreach (var segment in path) { await(segment switch { TypeSegment typeSegment => VisitAsync(typeSegment), NavigationPropertySegment navigationPropertySegment => VisitAsync(navigationPropertySegment), EntitySetSegment entitySetSegment => VisitAsync(entitySetSegment), SingletonSegment singletonSegment => VisitAsync(singletonSegment), KeySegment keySegment => VisitAsync(keySegment), PropertySegment propertySegment => VisitAsync(propertySegment), AnnotationSegment annotationSegment => VisitAsync(annotationSegment), OperationImportSegment operationImportSegment => VisitAsync(operationImportSegment), OperationSegment operationSegment => VisitAsync(operationSegment), DynamicPathSegment dynamicPathSegment => VisitAsync(dynamicPathSegment), CountSegment countSegment => VisitAsync(countSegment), FilterSegment filterSegment => VisitAsync(filterSegment), ReferenceSegment referenceSegment => VisitAsync(referenceSegment), EachSegment eachSegment => VisitAsync(eachSegment), NavigationPropertyLinkSegment navigationPropertyLinkSegment => VisitAsync(navigationPropertyLinkSegment), ValueSegment valueSegment => VisitAsync(valueSegment), BatchSegment batchSegment => VisitAsync(batchSegment), BatchReferenceSegment batchReferenceSegment => VisitAsync(batchReferenceSegment), MetadataSegment metadataSegment => VisitAsync(metadataSegment), PathTemplateSegment pathTemplateSegment => VisitAsync(pathTemplateSegment), _ => throw new NotSupportedException() });
public void EqualityIsCorrect() { IEdmEntityType entityType = ModelBuildingHelpers.BuildValidEntityType(); ValueSegment segment1 = new ValueSegment(entityType); ValueSegment segment2 = new ValueSegment(entityType); Assert.True(segment1.Equals(segment2)); }
/// <summary> /// Handle a ValueSegment /// </summary> /// <param name="segment">the segment to handle</param> public override void Handle(ValueSegment segment) { // do nothing for the navigation source for $value. // It means to use the previous the navigation source _pathTemplate.Add(ODataSegmentKinds.Value); // $value _pathUriLiteral.Add(ODataSegmentKinds.Value); }
/// <summary> /// Handle a ValueSegment /// </summary> /// <param name="segment">the segment to handle</param> public override void Handle(ValueSegment segment) { // do nothing for the navigation source for $value. // It means to use the previous the navigation source Contract.Assert(segment != null); _pathUriLiteral.Add(ODataSegmentKinds.Value); }
public void InequalityIsCorrect() { ValueSegment segment1 = new ValueSegment(ModelBuildingHelpers.BuildValidEntityType()); ValueSegment segment2 = new ValueSegment(ModelBuildingHelpers.BuildValidComplexType()); BatchSegment segment3 = BatchSegment.Instance; segment1.Equals(segment2).Should().BeFalse(); segment1.Equals(segment3).Should().BeFalse(); }
public void UpdateView(double timestart, double timeend) { StreamReader fin = new StreamReader("simulog.log"); while (!fin.EndOfStream) { string text = fin.ReadLine(); string[] args = text.Split(' '); string name = args[0]; int time = int.Parse(args[1]); ValueSegment vs = null, vsp = null; SimulateDataModel sdmodel = vddict[name]; switch (sdmodel.Type) { case "BIT": vs = new BitSegment(); vs.Value = Int32.Parse(args[2]); break; case "WORD": vs = new WordSegment(); vs.Value = Int32.Parse(args[2]); break; case "DWORD": vs = new DWordSegment(); vs.Value = Int64.Parse(args[2]); break; case "FLOAT": vs = new FloatSegment(); vs.Value = float.Parse(args[2]); break; } if (sdmodel.Values.Count() == 0) { vsp = vs.Clone(); vsp.Value = 0; vsp.TimeStart = (int)(timestart); vs.TimeStart = vsp.TimeEnd = time; sdmodel.Add(vsp); sdmodel.Add(vs); } else { vsp = sdmodel.Values.Last(); vs.TimeStart = vsp.TimeEnd = time; sdmodel.Add(vs); } } foreach (SimulateDataModel sdmodel in vddict.Values) { if (sdmodel.Values.Count() > 0) { sdmodel.Values.Last().TimeEnd = (int)(timeend); } } }
public static string ToUriLiteral(this ValueSegment segment) { if (segment == null) { throw Error.ArgumentNull("segment"); } return(ODataSegmentKinds.Value); }
public void TranslateWithValueSegmentReturnsThrows() { IsCollectionTranslator translator = new IsCollectionTranslator(); var segment = new ValueSegment(ModelBuildingHelpers.BuildValidEntityType()); Action translateAction = () => translator.Translate(segment); translateAction.Throws <NotImplementedException>(segment.ToString()); }
public void InequalityIsCorrect() { ValueSegment segment1 = new ValueSegment(ModelBuildingHelpers.BuildValidEntityType()); ValueSegment segment2 = new ValueSegment(ModelBuildingHelpers.BuildValidComplexType()); BatchSegment segment3 = BatchSegment.Instance; Assert.False(segment1.Equals(segment2)); Assert.False(segment1.Equals(segment3)); }
private void ProcessValue(StringBuilder sb, ValueSegment segment, QueryBuildInfo buildInfo) { sb.Append("?"); var param = new QueryExecParam(); param.Index = buildInfo.ExecInfo.Params.Count; param.Type = segment.Type; param.Value = segment.Values[0]; buildInfo.ExecInfo.Params.Add(param); }
public void ODataPathSegmentHandler_Handles_ValueSegment() { // Arrange ODataPathSegmentHandler handler = new ODataPathSegmentHandler(); IEdmType intType = EdmCoreModel.Instance.GetInt32(false).Definition; ValueSegment segment = new ValueSegment(intType); // Act handler.Handle(segment); // Assert Assert.Equal("$value", handler.PathLiteral); Assert.Null(handler.NavigationSource); }
public void Translate_ValueSegment_To_ValuePathSegment_Works() { // Arrange IEdmEntityType entityType = _model.FindDeclaredType("System.Web.OData.Routing.RoutingCustomer") as IEdmEntityType; ValueSegment segment = new ValueSegment(entityType); // Act IEnumerable <ODataPathSegment> segments = _translator.Translate(segment); // Assert ODataPathSegment pathSegment = Assert.Single(segments); Assert.IsType <ValuePathSegment>(pathSegment); }
public override void Handle(ValueSegment segment) { this.ThrowIfResolved(); this.NavigationSource = null; this.Type = segment.EdmType; this.ElementType = this.GetElementType(this.Type); this.IsRawValue = true; this.childSegments.Add(segment); this.canonicalSegments.Add(segment); }
/// <summary> /// Translate ValueSegment to linq expression. /// </summary> /// <param name="segment">The ValueSegment</param> /// <returns>The linq expression</returns> public override Expression Translate(ValueSegment segment) { // The last segment could be one of the following types // 1. PropertySegment type: query a property // 2. KeySegment type: query a stream. E.g. Photo(1)/$value // 3. NavigationPropertySegment: People('someone')/Photo/$value if (this.LastProcessedSegment is PropertySegment || this.LastProcessedSegment is KeySegment || this.LastProcessedSegment is NavigationPropertySegment) { this.LastProcessedSegment = segment; return(this.ResultExpression); } throw new InvalidOperationException("Unsupported URI segment before ValueSegment"); }
public void ODataPathSegmentToTemplateHandler_Handles_Value() { // Arrange ODataPathSegmentToTemplateHandler handler = new ODataPathSegmentToTemplateHandler(null); IEdmType intType = EdmCoreModel.Instance.GetInt32(false).Definition; ValueSegment segment = new ValueSegment(intType); // Act handler.Handle(segment); // Assert ODataSegmentTemplate segmentTemplate = Assert.Single(handler.Templates); Assert.IsType <ValueSegmentTemplate>(segmentTemplate); }
public void TranslateValueTemplateReturnsAsExpected(EdmPrimitiveTypeKind kind) { // Arrange IEdmPrimitiveType primitive = EdmCoreModel.Instance.GetPrimitiveType(kind); ODataTemplateTranslateContext context = new ODataTemplateTranslateContext(); ValueSegmentTemplate valueSegment = new ValueSegmentTemplate(primitive); // Act ODataPathSegment segment = valueSegment.Translate(context); // Assert ValueSegment odataValueSegment = Assert.IsType <ValueSegment>(segment); Assert.Same(primitive, odataValueSegment.EdmType); }
public void SetValue(SimulateDataModel sour, SimulateDataModel dest, int sourstart, int sourend, int deststart, int destend) { sour.SortByTime(); destend = deststart + (sourend - sourstart); IEnumerator <ValueSegment> souriter = sour.Values.GetEnumerator(); souriter.MoveNext(); ValueSegment sourvseg = souriter.Current; while (sourvseg != null && sourvseg.TimeEnd < sourstart) { if (!souriter.MoveNext()) { break; } sourvseg = souriter.Current; } RemoveValue(dest, deststart, destend); sourvseg = souriter.Current; while (sourvseg != null && sourvseg.TimeStart < sourend) { int vsegstart = sourvseg.TimeStart; int vsegend = sourvseg.TimeEnd; if (vsegstart < sourstart) { vsegstart = sourstart; } if (vsegend > sourend) { vsegend = sourend; } if (vsegstart > vsegend) { continue; } ValueSegment vseg = sourvseg.Clone(); vseg.TimeStart = vsegstart + (deststart - sourstart); vseg.TimeEnd = vsegend + (deststart - sourstart); dest.Add(vseg); if (!souriter.MoveNext()) { break; } sourvseg = souriter.Current; } }
public void TryMatchMediaType_MatchRequest_WithBinaryPrimitivePropertyRequest() { // Arrange EdmEntityType entity = new EdmEntityType("NS", "Entity"); EdmStructuralProperty property = entity.AddStructuralProperty("Data", EdmCoreModel.Instance.GetBinary(true)); PropertySegment propertySegment = new PropertySegment(property); ValueSegment valueSegment = new ValueSegment(property.Type.Definition); HttpRequest request = new DefaultHttpContext().Request; request.ODataFeature().Path = new ODataPath(propertySegment, valueSegment); // Act double mapResult = Mapping.TryMatchMediaType(request); // Assert Assert.Equal(1.0, mapResult); }
public void TryMatchMediaType_MatchRequest_WithPrimitiveRawValueRequest() { // Arrange EdmEnumType colorType = new EdmEnumType("NS", "Color"); EdmEntityType entity = new EdmEntityType("NS", "Entity"); EdmStructuralProperty property = entity.AddStructuralProperty("Color", new EdmEnumTypeReference(colorType, false)); PropertySegment propertySegment = new PropertySegment(property); ValueSegment valueSegment = new ValueSegment(property.Type.Definition); HttpRequest request = new DefaultHttpContext().Request; request.ODataFeature().Path = new ODataPath(propertySegment, valueSegment); // Act double mapResult = Mapping.TryMatchMediaType(request); // Assert Assert.Equal(1.0, mapResult); }
/// <summary> /// Handle a ValueSegment /// </summary> /// <param name="segment">the segment to Handle</param> public virtual void Handle(ValueSegment segment) { throw new NotImplementedException(); }
public void EntityTypeIsConvertedToStream() { ValueSegment segment = new ValueSegment(ModelBuildingHelpers.BuildValidEntityType()); segment.EdmType.Should().BeSameAs(EdmCoreModel.Instance.GetStream(false).Definition); }
public void SingleResultIsTrue() { ValueSegment segment = new ValueSegment(HardCodedTestModel.GetPersonType()); segment.SingleResult.Should().BeTrue(); }
public void IdentifierIsValueSegment() { ValueSegment segment = new ValueSegment(HardCodedTestModel.GetPersonType()); segment.Identifier.Should().Be(UriQueryConstants.ValueSegment); }
/// <summary> /// Translate ValueSegment to linq expression. /// </summary> /// <param name="segment">The ValueSegment</param> /// <returns>The linq expression</returns> public override Expression Translate(ValueSegment segment) { throw new NotImplementedException("ValueSegment translation is not supported"); }
public void Translate_ValueSegment_To_ValuePathSegment_Works() { // Arrange IEdmEntityType entityType = _model.FindDeclaredType("System.Web.OData.Routing.RoutingCustomer") as IEdmEntityType; ValueSegment segment = new ValueSegment(entityType); // Act IEnumerable<ODataPathSegment> segments = _translator.Translate(segment); // Assert ODataPathSegment pathSegment = Assert.Single(segments); Assert.IsType<ValuePathSegment>(pathSegment); }
/// <summary> /// Translate a ValueSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Defined by the implementer.</returns> public override string Translate(ValueSegment segment) { return(string.Empty); }
/// <summary> /// Initializes a new instance of the <see cref="ValueSegmentTemplate" /> class. /// </summary> /// <param name="segment">The value segment.</param> public ValueSegmentTemplate(ValueSegment segment) { Segment = segment ?? throw Error.ArgumentNull(nameof(segment)); }
/// <summary> /// Translate a ValueSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Translated the path segment template.</returns> public override ODataSegmentTemplate Translate(ValueSegment segment) { return(new ValueSegmentTemplate(segment)); }
/// <summary> /// Translate a ValueSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Defined by the implementer.</returns> public virtual T Translate(ValueSegment segment) { throw new NotImplementedException(); }
/// <summary> /// Translate a ValueSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Translated WebApi path segment.</returns> public override IEnumerable <ODataPathSegment> Translate(ValueSegment segment) { yield return(new ValuePathSegment()); }
/// <summary> /// Try to handle the segment as $value. /// </summary> /// <param name="text">The segment text.</param> /// <returns>Whether the segment was $value.</returns> private bool TryCreateValueSegment(string text) { string identifier; string parenthesisExpression; ExtractSegmentIdentifierAndParenthesisExpression(text, out identifier, out parenthesisExpression); if (!this.IdentifierIs(UriQueryConstants.ValueSegment, identifier)) { return false; } if (parenthesisExpression != null) { throw ExceptionUtil.CreateSyntaxError(); } ODataPathSegment previous = this.parsedSegments[this.parsedSegments.Count - 1]; ODataPathSegment segment = new ValueSegment(previous.EdmType); if ((previous.TargetKind == RequestTargetKind.Primitive) || (previous.TargetKind == RequestTargetKind.Enum)) { segment.CopyValuesFrom(previous); } else { segment.TargetEdmType = previous.TargetEdmType; } segment.Identifier = UriQueryConstants.ValueSegment; segment.SingleResult = true; CheckSingleResult(previous.SingleResult, previous.Identifier); if (previous.TargetKind == RequestTargetKind.Primitive) { segment.TargetKind = RequestTargetKind.PrimitiveValue; } else if (previous.TargetKind == RequestTargetKind.Enum) { segment.TargetKind = RequestTargetKind.EnumValue; } else if (previous.TargetKind == RequestTargetKind.OpenProperty) { segment.TargetKind = RequestTargetKind.OpenPropertyValue; } else { // If the previous segment is an entity, we expect it to be an MLE. We cannot validate our assumption // until later when we get the actual instance of the entity because the type hierarchy can contain // a mix of MLE and non-MLE types. segment.TargetKind = RequestTargetKind.MediaResource; } this.parsedSegments.Add(segment); return true; }
/// <summary> /// Translate a ValueSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Defined by the implementer.</returns> public override string Translate(ValueSegment segment) { throw new NotImplementedException(); }
/// <summary> /// Translate a ValueSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Translated odata path segment.</returns> public override ODataPathSegment Translate(ValueSegment segment) { return(segment); }
/// <summary> /// Translate a ValueSegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Translated the path segment template.</returns> public override ODataPathSegmentTemplate Translate(ValueSegment segment) { return(new ODataPathSegmentTemplate <ValueSegment>()); }