コード例 #1
0
        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());
        }
コード例 #2
0
        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>());
        }
コード例 #3
0
        public void Read_ThrowsArgumentNull_MessageReader()
        {
            var deserializer = new ODataCollectionDeserializer(new DefaultODataDeserializerProvider());

            Assert.ThrowsArgumentNull(
                () => deserializer.Read(messageReader: null, type: typeof(int[]), readContext: new ODataDeserializerContext()),
                "messageReader");
        }
コード例 #4
0
        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'.");
        }
コード例 #5
0
        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>());
        }
コード例 #6
0
        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(_addressCollectionType, new DefaultODataDeserializerProvider());

            // Act
            var result = deserializer.Read(reader, new ODataDeserializerContext {
                Model = _model, ResourceType = typeof(IEdmObject)
            });

            // Assert
            IEdmObject edmObject = Assert.IsType <EdmComplexObjectCollection>(result);

            Assert.Equal(_addressCollectionType, edmObject.GetEdmType());
        }