public void Read_Roundtrip_EnumCollection() { // Arrange Color[] colors = { Color.Blue, Color.Green }; ODataCollectionSerializer serializer = new ODataCollectionSerializer(SerializerProvider); ODataCollectionDeserializer deserializer = new ODataCollectionDeserializer(DeserializerProvider); MemoryStream stream = new MemoryStream(); ODataMessageWrapper message = new ODataMessageWrapper(stream); ODataMessageWriterSettings settings = new ODataMessageWriterSettings { ODataUri = new ODataUri { ServiceRoot = new Uri("http://any/") } }; 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 }; // Act serializer.WriteObject(colors, colors.GetType(), messageWriter, writeContext); stream.Seek(0, SeekOrigin.Begin); IEnumerable readAddresses = deserializer.Read(messageReader, typeof(Color[]), readContext) as IEnumerable; // Assert Assert.Equal(colors, readAddresses.Cast <Color>()); }
public void Read_Roundtrip_PrimitiveCollection() { // Arrange int[] numbers = Enumerable.Range(0, 100).ToArray(); ODataCollectionSerializer serializer = new ODataCollectionSerializer(SerializerProvider); ODataCollectionDeserializer deserializer = new ODataCollectionDeserializer(DeserializerProvider); MemoryStream stream = new MemoryStream(); ODataMessageWrapper message = new ODataMessageWrapper(stream); ODataMessageWriterSettings settings = new ODataMessageWriterSettings { ODataUri = new ODataUri { ServiceRoot = new Uri("http://any/") } }; 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 }; // Act serializer.WriteObject(numbers, numbers.GetType(), messageWriter, writeContext); stream.Seek(0, SeekOrigin.Begin); IEnumerable readnumbers = deserializer.Read(messageReader, typeof(int[]), readContext) as IEnumerable; // Assert Assert.Equal(numbers, readnumbers.Cast <int>()); }
public void Read_ThrowsArgumentNull_MessageReader() { var deserializer = new ODataCollectionDeserializer(new DefaultODataDeserializerProvider()); Assert.ThrowsArgumentNull( () => deserializer.Read(messageReader: null, type: typeof(int[]), readContext: new ODataDeserializerContext()), "messageReader"); }
public void Read_ThrowsArgumentNull_MessageReader() { // Arrange var deserializer = new ODataCollectionDeserializer(DeserializerProvider); // Act & Assert Assert.ThrowsArgumentNull( () => deserializer.Read(messageReader: null, type: typeof(int[]), readContext: new ODataDeserializerContext()), "messageReader"); }
public void Read_ThrowsArgumentMustBeOfType_Type() { var deserializer = new ODataCollectionDeserializer(new DefaultODataDeserializerProvider()); Assert.ThrowsArgument( () => deserializer.Read(messageReader: ODataTestUtil.GetMockODataMessageReader(), type: typeof(int), readContext: new ODataDeserializerContext { Model = _model }), "type", "The argument must be of type 'Collection'."); }
public void Read_Roundtrip_ComplexCollection() { Address[] addresses = new[] { new Address { City = "Redmond", ZipCode = "1", Street = "A", State = "123" }, new Address { City = "Seattle", ZipCode = "2", Street = "S", State = "321" } }; ODataCollectionSerializer serializer = new ODataCollectionSerializer(new DefaultODataSerializerProvider()); ODataCollectionDeserializer deserializer = new ODataCollectionDeserializer(_deserializerProvider); MemoryStream stream = new MemoryStream(); ODataMessageWrapper message = new ODataMessageWrapper(stream); ODataMessageWriterSettings settings = new ODataMessageWriterSettings { ODataUri = new ODataUri { ServiceRoot = new Uri("http://any/") } }; 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(addresses, addresses.GetType(), messageWriter, writeContext); stream.Seek(0, SeekOrigin.Begin); IEnumerable readAddresses = deserializer.Read(messageReader, typeof(Address[]), readContext) as IEnumerable; Assert.Equal(addresses, readAddresses.Cast <Address>(), new AddressComparer()); }
public void Read_ReturnsEdmComplexObjectCollection_TypelessMode() { // Arrange HttpContent content = new StringContent("{ 'value': [ { 'City' : 'Redmond' } ] }"); content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); IODataRequestMessage request = new ODataMessageWrapper(content.ReadAsStreamAsync().Result, content.Headers); ODataMessageReader reader = new ODataMessageReader(request, new ODataMessageReaderSettings(), _model); var deserializer = new ODataCollectionDeserializer(new DefaultODataDeserializerProvider()); ODataDeserializerContext readContext = new ODataDeserializerContext { Model = _model, ResourceType = typeof(IEdmObject), ResourceEdmType = _addressCollectionType }; // Act var result = deserializer.Read(reader, typeof(IEdmObject), readContext); // Assert IEdmObject edmObject = Assert.IsType <EdmComplexObjectCollection>(result); Assert.Equal(_addressCollectionType, edmObject.GetEdmType()); }