public void CreateODataValue_ReturnsDateTimeOffset_ForDateTime_WithDifferentTimeZone(DateTime value) { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = typeof(DateTime).GetEdmPrimitiveTypeReference(); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); var request = RequestFactory.Create(); ODataSerializerContext context = new ODataSerializerContext { Request = request, TimeZone = tzi }; DateTimeOffset expected = value.Kind == DateTimeKind.Unspecified ? new DateTimeOffset(value, tzi.GetUtcOffset(value)) : TimeZoneInfo.ConvertTime(new DateTimeOffset(value), tzi); // Act ODataValue odataValue = serializer.CreateODataValue(value, edmPrimitiveType, context); // Assert ODataPrimitiveValue primitiveValue = Assert.IsType <ODataPrimitiveValue>(odataValue); Assert.Equal(expected, primitiveValue.Value); }
public void CreateODataValue_ReturnsDateTimeOffset_ForDateTime_WithDifferentTimeZone(DateTime value) { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(DateTime)); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); var configuration = RoutingConfigurationFactory.CreateWithRootContainer("OData"); configuration.SetTimeZoneInfo(tzi); var request = RequestFactory.Create(configuration, "OData"); ODataSerializerContext context = new ODataSerializerContext { Request = request }; DateTimeOffset expected = value.Kind == DateTimeKind.Unspecified ? new DateTimeOffset(value, TimeZoneInfoHelper.TimeZone.GetUtcOffset(value)) : TimeZoneInfo.ConvertTime(new DateTimeOffset(value), TimeZoneInfoHelper.TimeZone); // Act ODataValue odataValue = serializer.CreateODataValue(value, edmPrimitiveType, context); // Assert ODataPrimitiveValue primitiveValue = Assert.IsType <ODataPrimitiveValue>(odataValue); Assert.Equal(expected, primitiveValue.Value); }
[InlineData("China Standard Time")] // +8:00 public void CreateODataValue_ReturnsDateTimeOffsetMaxValue_ForDateTimeMaxValue(string timeZoneId) { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = typeof(DateTime).GetEdmPrimitiveTypeReference(); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); DateTime dt = DateTime.MaxValue; TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); var request = RequestFactory.Create(); ODataSerializerContext context = new ODataSerializerContext { Request = request, TimeZone = timeZone }; // Act ODataValue odataValue = serializer.CreateODataValue(dt, edmPrimitiveType, context); // Assert ODataPrimitiveValue primitiveValue = Assert.IsType <ODataPrimitiveValue>(odataValue); if (timeZone.BaseUtcOffset.Hours > 0) { Assert.Equal(new DateTimeOffset(dt, timeZone.GetUtcOffset(dt)), primitiveValue.Value); } else { Assert.Equal(DateTimeOffset.MaxValue, primitiveValue.Value); } }
[InlineData("China Standard Time")] // +8:00 public void CreateODataValue_ReturnsDateTimeOffsetMaxValue_ForDateTimeMaxValue(string timeZoneId) { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(DateTime)); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); DateTime dt = DateTime.MaxValue; TimeZoneInfoHelper.TimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); // Act ODataValue odataValue = serializer.CreateODataValue(dt, edmPrimitiveType, new ODataSerializerContext()); // Assert ODataPrimitiveValue primitiveValue = Assert.IsType <ODataPrimitiveValue>(odataValue); if (TimeZoneInfoHelper.TimeZone.BaseUtcOffset.Hours > 0) { Assert.Equal(new DateTimeOffset(dt, TimeZoneInfoHelper.TimeZone.GetUtcOffset(dt)), primitiveValue.Value); } else { Assert.Equal(DateTimeOffset.MaxValue, primitiveValue.Value); } }
public void CreateODataValue_ReturnsODataNullValue_ForNullValue() { IEdmPrimitiveTypeReference edmPrimitiveType = EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(string)); var serializer = new ODataPrimitiveSerializer(); var odataValue = serializer.CreateODataValue(null, edmPrimitiveType, new ODataSerializerContext()); Assert.IsType <ODataNullValue>(odataValue); }
public void CreateODataValue_ReturnsODataNullValue_ForNullValue() { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = typeof(string).GetEdmPrimitiveTypeReference(); var serializer = new ODataPrimitiveSerializer(); // Act var odataValue = serializer.CreateODataValue(null, edmPrimitiveType, new ODataSerializerContext()); // Assert Assert.IsType <ODataNullValue>(odataValue); }
public void CreateODataValue_PrimitiveValue() { IEdmPrimitiveTypeReference edmPrimitiveType = EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(int)); var serializer = new ODataPrimitiveSerializer(); var odataValue = serializer.CreateODataValue(20, edmPrimitiveType, writeContext: null); Assert.NotNull(odataValue); ODataPrimitiveValue primitiveValue = Assert.IsType <ODataPrimitiveValue>(odataValue); Assert.Equal(20, primitiveValue.Value); }
public void CreateODataValue_ReturnsDateTimeOffset_ForDateTime_ByDefault() { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = typeof(DateTime).GetEdmPrimitiveTypeReference(); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); DateTime dt = new DateTime(2014, 10, 27); // Act ODataValue odataValue = serializer.CreateODataValue(dt, edmPrimitiveType, new ODataSerializerContext()); // Assert ODataPrimitiveValue primitiveValue = Assert.IsType <ODataPrimitiveValue>(odataValue); Assert.Equal(new DateTimeOffset(dt), primitiveValue.Value); }
public void CreateODataValue_PrimitiveValue() { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = typeof(int).GetEdmPrimitiveTypeReference(); var serializer = new ODataPrimitiveSerializer(); // Act var odataValue = serializer.CreateODataValue(20, edmPrimitiveType, writeContext: null); // Assert Assert.NotNull(odataValue); ODataPrimitiveValue primitiveValue = Assert.IsType <ODataPrimitiveValue>(odataValue); Assert.Equal(20, primitiveValue.Value); }
public void CreateODataValue_ReturnsTimeOfDay_ForTimeSpan() { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = typeof(TimeOfDay).GetEdmPrimitiveTypeReference(); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); TimeSpan ts = new TimeSpan(0, 10, 11, 12, 13); // Act ODataValue odataValue = serializer.CreateODataValue(ts, edmPrimitiveType, new ODataSerializerContext()); // Assert ODataPrimitiveValue primitiveValue = Assert.IsType <ODataPrimitiveValue>(odataValue); Assert.IsType <TimeOfDay>(primitiveValue.Value); Assert.Equal(new TimeOfDay(ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds), primitiveValue.Value); }
public void CreateODataValue_ReturnsDate_ForDateTime() { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(Date)); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); DateTime dt = new DateTime(2014, 10, 27); // Act ODataValue odataValue = serializer.CreateODataValue(dt, edmPrimitiveType, new ODataSerializerContext()); // Assert ODataPrimitiveValue primitiveValue = Assert.IsType <ODataPrimitiveValue>(odataValue); Assert.IsType <Date>(primitiveValue.Value); Assert.Equal(new Date(dt.Year, dt.Month, dt.Day), primitiveValue.Value); }