public void WriteTopLevelUIntPropertyShouldWork() { var settings = new ODataMessageWriterSettings(); settings.ODataUri.ServiceRoot = new Uri("http://host/service"); settings.SetContentType(ODataFormat.Json); var model = new EdmModel(); model.GetUInt32("MyNS", false); IODataRequestMessage request = new InMemoryMessage() { Stream = new MemoryStream() }; var writer = new ODataMessageWriter(request, settings, model); Action write = () => writer.WriteProperty(new ODataProperty() { Name = "Id", Value = (UInt32)123 }); write.ShouldNotThrow(); request.GetStream().Position = 0; var reader = new StreamReader(request.GetStream()); string output = reader.ReadToEnd(); output.Should().Be("{\"@odata.context\":\"http://host/service/$metadata#MyNS.UInt32\",\"value\":123}"); }
public void WriteTopLevelStringPropertyWithStringEscapeOnlyControlsOptionShouldWork() { var settings = new ODataMessageWriterSettings(); var containerBuilder = new Test.OData.DependencyInjection.TestContainerBuilder(); containerBuilder.AddDefaultODataServices(); containerBuilder.AddService <IJsonWriterFactory>(ServiceLifetime.Singleton, sp => new DefaultJsonWriterFactory(ODataStringEscapeOption.EscapeOnlyControls)); settings.ODataUri.ServiceRoot = new Uri("http://host/service"); settings.SetContentType(ODataFormat.Json); var model = new EdmModel(); IODataRequestMessage request = new InMemoryMessage() { Stream = new MemoryStream(), Container = containerBuilder.BuildContainer() }; var writer = new ODataMessageWriter(request, settings, model); Action write = () => writer.WriteProperty(new ODataProperty() { Name = "Name", Value = "ия" }); write.ShouldNotThrow(); request.GetStream().Position = 0; var reader = new StreamReader(request.GetStream()); string output = reader.ReadToEnd(); output.Should().Be("{\"@odata.context\":\"http://host/service/$metadata#Edm.String\",\"value\":\"ия\"}"); }