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_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(_addressCollectionType, new DefaultODataSerializerProvider(_model));
            ODataCollectionDeserializer deserializer = new ODataCollectionDeserializer(_addressCollectionType, _deserializerProvider);


            MemoryStream        stream  = new MemoryStream();
            ODataMessageWrapper message = new ODataMessageWrapper(stream);

            serializer.WriteObject(addresses, new ODataMessageWriter(message as IODataResponseMessage, new ODataMessageWriterSettings(), _model), new ODataSerializerContext {
                ServiceOperationName = "Property"
            });
            stream.Seek(0, SeekOrigin.Begin);
            IEnumerable readAddresses = deserializer.Read(new ODataMessageReader(message as IODataResponseMessage, new ODataMessageReaderSettings(), _model), new ODataDeserializerContext()) as IEnumerable;

            Assert.Equal(addresses, readAddresses.Cast <Address>(), new AddressComparer());
        }
        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_Roundtrip_PrimitiveCollection()
        {
            int[] numbers = Enumerable.Range(0, 100).ToArray();

            ODataCollectionSerializer   serializer   = new ODataCollectionSerializer(new DefaultODataSerializerProvider());
            ODataCollectionDeserializer deserializer = new ODataCollectionDeserializer(_deserializerProvider);

            MemoryStream           stream        = new MemoryStream();
            ODataMessageWrapper    message       = new ODataMessageWrapper(stream);
            ODataMessageWriter     messageWriter = new ODataMessageWriter(message as IODataResponseMessage, new ODataMessageWriterSettings(), _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(numbers, numbers.GetType(), messageWriter, writeContext);
            stream.Seek(0, SeekOrigin.Begin);
            IEnumerable readnumbers = deserializer.Read(messageReader, typeof(int[]), readContext) as IEnumerable;

            Assert.Equal(numbers, readnumbers.Cast <int>());
        }
        public void WriteObject_Throws_ArgumentNull_MessageWriter()
        {
            // Arrange
            ODataSerializerProvider   provider   = new Mock <ODataSerializerProvider>().Object;
            ODataCollectionSerializer serializer = new ODataCollectionSerializer(provider);

            // Act & Assert
            ExceptionAssert.ThrowsArgumentNull(
                () => serializer.WriteObject(graph: null, type: typeof(int[]), messageWriter: null, writeContext: null),
                "messageWriter");
        }
        public void Read_Roundtrip_PrimitiveCollection()
        {
            int[] numbers = Enumerable.Range(0, 100).ToArray();

            ODataCollectionSerializer   serializer   = new ODataCollectionSerializer(_intCollectionType, new DefaultODataSerializerProvider(_model));
            ODataCollectionDeserializer deserializer = new ODataCollectionDeserializer(_intCollectionType, _deserializerProvider);

            MemoryStream        stream  = new MemoryStream();
            ODataMessageWrapper message = new ODataMessageWrapper(stream);

            serializer.WriteObject(numbers, new ODataMessageWriter(message as IODataResponseMessage, new ODataMessageWriterSettings(), _model), new ODataSerializerContext {
                ServiceOperationName = "Property"
            });
            stream.Seek(0, SeekOrigin.Begin);
            IEnumerable readnumbers = deserializer.Read(new ODataMessageReader(message as IODataResponseMessage, new ODataMessageReaderSettings(), _model), new ODataDeserializerContext()) as IEnumerable;

            Assert.Equal(numbers, readnumbers.Cast <int>());
        }
        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());
        }
Exemplo n.º 8
0
 public void WriteObject_Throws_ArgumentNull_MessageWriter()
 {
     ExceptionAssert.ThrowsArgumentNull(
         () => _serializer.WriteObject(graph: null, type: typeof(int[]), messageWriter: null, writeContext: null),
         "messageWriter");
 }