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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #4
0
        [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);
            }
        }
Exemple #5
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #11
0
        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);
        }