public void TryUriStringToPrimitiveWithValidDurationLiteralShouldReturnValidTimeSpan() { object output; UriPrimitiveTypeParser.TryUriStringToPrimitive("duration'P1D'", EdmCoreModel.Instance.GetDuration(false /*isNullable*/), out output).Should().BeTrue(); output.ShouldBeEquivalentTo(new TimeSpan(1, 0, 0, 0)); }
/// <summary> /// Parses typed literals. /// </summary> /// <param name="expressionLexer">The expression lexer.</param> /// <param name="targetTypeReference">Expected type to be parsed.</param> /// <returns>The literal token produced by building the given literal.</returns> private static object ParseTypedLiteral(this ExpressionLexer expressionLexer, IEdmPrimitiveTypeReference targetTypeReference) { object targetValue; string reason; if (!UriPrimitiveTypeParser.TryUriStringToPrimitive(expressionLexer.CurrentToken.Text, targetTypeReference, out targetValue, out reason)) { string message; if (reason == null) { message = ODataErrorStrings.UriQueryExpressionParser_UnrecognizedLiteral( targetTypeReference.FullName(), expressionLexer.CurrentToken.Text, expressionLexer.CurrentToken.Position, expressionLexer.ExpressionText); } else { message = ODataErrorStrings.UriQueryExpressionParser_UnrecognizedLiteralWithReason( targetTypeReference.FullName(), expressionLexer.CurrentToken.Text, expressionLexer.CurrentToken.Position, expressionLexer.ExpressionText, reason); } throw new ODataException(message); } expressionLexer.NextToken(); return(targetValue); }
private static bool TryParse <T>(string input, IEdmPrimitiveTypeReference asType, out T realResult) { object result; bool parseSuceeded = UriPrimitiveTypeParser.TryUriStringToPrimitive(input, asType, out result); realResult = (T)result; return(parseSuceeded); }
public void InvalidTimeOfDayShouldReturnFalse() { object output; var list = new string[] { "1:5:20,0", "-20:3:40.900", "24:14:40.090" }; foreach (var s in list) { UriPrimitiveTypeParser.TryUriStringToPrimitive(s, EdmCoreModel.Instance.GetTimeOfDay(true), out output).Should().BeFalse(); } }
public void TryUriStringToPrimitiveWithOverflowingDurationLiteralShouldReturnFalse() { object output; UriPrimitiveTypeParser.TryUriStringToPrimitive("duration'P999999999D'", EdmCoreModel.Instance.GetDuration(false /*isNullable*/), out output).Should().BeFalse(); }
public void InvalidDateShouldReturnFalse() { object output; UriPrimitiveTypeParser.TryUriStringToPrimitive("-1000-00-01", EdmCoreModel.Instance.GetDate(true), out output).Should().BeFalse(); }
public void InvalidDateTimeOffsetShouldReturnFalse() { object output; UriPrimitiveTypeParser.TryUriStringToPrimitive("Ct >dvDTrz", EdmCoreModel.Instance.GetDateTimeOffset(true), out output).Should().BeFalse(); }