public void WriteObject_Throws_RootElementNameMissing() { ODataSerializerContext writeContext = new ODataSerializerContext(); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); Assert.Throws<ArgumentException>( () => serializer.WriteObject(42, typeof(int), ODataTestUtil.GetMockODataMessageWriter(), writeContext), "The 'RootElementName' property is required on 'ODataSerializerContext'.\r\nParameter name: writeContext"); }
public void WriteObject_EdmPrimitives(object graph) { IEdmPrimitiveTypeReference edmPrimitiveType = EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(int)); var serializer = new ODataPrimitiveSerializer(); ODataSerializerContext writecontext = new ODataSerializerContext() { RootElementName = "PropertyName", Model = EdmCoreModel.Instance }; ODataMessageWriterSettings settings = new ODataMessageWriterSettings { ODataUri = new ODataUri { ServiceRoot = new Uri("http://any/"), } }; ODataMessageWriter writer = new ODataMessageWriter( new ODataMessageWrapper(new MemoryStream()) as IODataResponseMessage, settings); Assert.DoesNotThrow(() => serializer.WriteObject(graph, typeof(int), writer, writecontext)); }
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_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(primitiveValue.Value, 20); }
public void Property_ODataPayloadKind() { var serializer = new ODataPrimitiveSerializer(); Assert.Equal(serializer.ODataPayloadKind, ODataPayloadKind.Property); }
public void ConvertUnsupportedPrimitives_NonStandardEdmPrimitives(object graph, object result) { Assert.Equal( result, ODataPrimitiveSerializer.ConvertUnsupportedPrimitives(graph)); }
public void ConvertUnsupportedPrimitives_DoesntChangeStandardEdmPrimitives(object graph, string type, string value) { Assert.Equal( graph, ODataPrimitiveSerializer.ConvertUnsupportedPrimitives(graph)); }
public void CreateODataValue_ReturnsDateTimeOffset_ForDateTime_ByDefault() { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(DateTime)); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); DateTime dt = new DateTime(2014, 10, 27); TimeZoneInfoHelper.TimeZone = null; // 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 Read_MappedPrimitive(object obj, object expected) { // Arrange IEdmModel model = CreateModel(); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); ODataPrimitiveDeserializer deserializer = new ODataPrimitiveDeserializer(); MemoryStream stream = new MemoryStream(); ODataMessageWrapper message = new ODataMessageWrapper(stream); ODataMessageWriterSettings settings = new ODataMessageWriterSettings { ODataUri = new ODataUri { ServiceRoot = new Uri("http://any/"), } }; settings.SetContentType(ODataFormat.Json); ODataMessageWriter messageWriter = new ODataMessageWriter(message as IODataResponseMessage, settings, model); ODataMessageReader messageReader = new ODataMessageReader(message as IODataResponseMessage, new ODataMessageReaderSettings(), model); ODataSerializerContext writeContext = new ODataSerializerContext { RootElementName = "Property", Model = model }; ODataDeserializerContext readContext = new ODataDeserializerContext { Model = model }; Type type = obj == null ? typeof(int) : expected.GetType(); serializer.WriteObject(obj, type, messageWriter, writeContext); stream.Seek(0, SeekOrigin.Begin); // Act && Assert Assert.Equal(expected, deserializer.Read(messageReader, type, readContext)); }
public void WriteObject_EdmPrimitives(object graph, string type, string value) { // Arrange ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); ODataSerializerContext writecontext = new ODataSerializerContext() { RootElementName = "PropertyName", Model = EdmCoreModel.Instance }; ODataMessageWriterSettings settings = new ODataMessageWriterSettings { ODataUri = new ODataUri { ServiceRoot = new Uri("http://any/"), } }; MemoryStream stream = new MemoryStream(); ODataMessageWriter writer = new ODataMessageWriter( new ODataMessageWrapper(stream) as IODataResponseMessage, settings); string expect = "{\"@odata.context\":\"http://any/$metadata#" + type + "\","; if (type == "Edm.Null") { expect += "\"@odata.null\":" + value + "}"; } else { expect += "\"value\":" + value + "}"; } // Act serializer.WriteObject(graph, typeof(int), writer, writecontext); // Assert stream.Seek(0, SeekOrigin.Begin); string result = new StreamReader(stream).ReadToEnd(); Assert.Equal(expect, result); }
public void CreateODataValue_ReturnsTimeOfDay_ForTimeSpan() { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(TimeOfDay)); 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); }
public void CreateODataValue_ReturnsDateTimeOffset_ForDateTime_WithDifferentTimeZone(DateTime value, DateTimeOffset expect) { // Arrange IEdmPrimitiveTypeReference edmPrimitiveType = EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(DateTime)); ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); HttpConfiguration configuration = new HttpConfiguration(); configuration.SetTimeZoneInfo(tzi); HttpRequestMessage request = new HttpRequestMessage(); request.SetConfiguration(configuration); ODataSerializerContext context = new ODataSerializerContext{ Request = request }; // Act ODataValue odataValue = serializer.CreateODataValue(value, edmPrimitiveType, context); // Assert ODataPrimitiveValue primitiveValue = Assert.IsType<ODataPrimitiveValue>(odataValue); Assert.Equal(expect, 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 Property_ODataPayloadKind() { var serializer = new ODataPrimitiveSerializer(); Assert.Equal(serializer.ODataPayloadKind, ODataPayloadKind.Property); }
public void Read_DateTimePrimitive(DateTimeOffset expected, DateTime value, TimeZoneInfo timeZoneInfo) { // Arrange IEdmModel model = CreateModel(); HttpRequestMessage request = new HttpRequestMessage(); request.SetConfiguration(new HttpConfiguration()); if (timeZoneInfo != null) { request.GetConfiguration().SetTimeZoneInfo(timeZoneInfo); } else { request.GetConfiguration().SetTimeZoneInfo(TimeZoneInfo.Local); } ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); ODataPrimitiveDeserializer deserializer = new ODataPrimitiveDeserializer(); MemoryStream stream = new MemoryStream(); ODataMessageWrapper message = new ODataMessageWrapper(stream); ODataMessageWriterSettings settings = new ODataMessageWriterSettings { ODataUri = new ODataUri { ServiceRoot = new Uri("http://any/"), } }; settings.SetContentType(ODataFormat.Json); ODataMessageWriter messageWriter = new ODataMessageWriter(message as IODataResponseMessage, settings, model); ODataMessageReader messageReader = new ODataMessageReader(message as IODataResponseMessage, new ODataMessageReaderSettings(), model); ODataSerializerContext writeContext = new ODataSerializerContext { RootElementName = "Property", Model = model, Request = request }; ODataDeserializerContext readContext = new ODataDeserializerContext { Model = model, Request = request }; serializer.WriteObject(value, typeof(DateTimeOffset), messageWriter, writeContext); stream.Seek(0, SeekOrigin.Begin); // Act && Assert Assert.Equal(expected, deserializer.Read(messageReader, typeof(DateTimeOffset), readContext)); }
public void Read_Primitive(object obj) { // Arrange IEdmModel model = EdmCoreModel.Instance; ODataPrimitiveSerializer serializer = new ODataPrimitiveSerializer(); ODataPrimitiveDeserializer deserializer = new ODataPrimitiveDeserializer(); MemoryStream stream = new MemoryStream(); ODataMessageWrapper message = new ODataMessageWrapper(stream); ODataMessageWriterSettings settings = new ODataMessageWriterSettings(); settings.SetServiceDocumentUri(new Uri("http://any/")); settings.SetContentType(ODataFormat.Atom); ODataMessageWriter messageWriter = new ODataMessageWriter(message as IODataResponseMessage, settings, model); ODataMessageReader messageReader = new ODataMessageReader(message as IODataResponseMessage, new ODataMessageReaderSettings(), model); ODataSerializerContext writeContext = new ODataSerializerContext { RootElementName = "Property", Model = model }; ODataDeserializerContext readContext = new ODataDeserializerContext { Model = model }; serializer.WriteObject(obj, typeof(int), messageWriter, writeContext); stream.Seek(0, SeekOrigin.Begin); // Act & Assert Assert.Equal(obj, deserializer.Read(messageReader, typeof(int), readContext)); }