public void GetEdmTypeSerializer_Caches_CreateEdmTypeSerializerOutput()
        {
            // Arrange
            DefaultODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider();
            IEdmTypeReference edmType = new Mock <IEdmTypeReference>().Object;

            // Act
            var serializer1 = serializerProvider.GetEdmTypeSerializer(edmType);
            var serializer2 = serializerProvider.GetEdmTypeSerializer(edmType);

            // Assert
            Assert.Same(serializer2, serializer1);
        }
        public void GetEdmTypeSerializer_ThrowsArgumentNull_EdmType()
        {
            DefaultODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider();

            Assert.ThrowsArgumentNull(
                () => serializerProvider.GetEdmTypeSerializer(edmType: null),
                "edmType");
        }
        public void GetEdmTypeSerializer_Returns_SetEdmTypeSerializerInput()
        {
            // Arrange
            DefaultODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider();
            IEdmTypeReference      edmType    = EdmCoreModel.Instance.GetInt32(isNullable: true);
            ODataEdmTypeSerializer serializer = new Mock <ODataEdmTypeSerializer>(edmType, ODataPayloadKind.Property).Object;

            serializerProvider.SetEdmTypeSerializer(edmType, serializer);

            // Act & Assert
            Assert.Same(serializer, serializerProvider.GetEdmTypeSerializer(edmType));
        }
        public void GetODataSerializer_Enum()
        {
            var serializerProvider        = new DefaultODataSerializerProvider(_edmModel);
            IEdmTypeReference edmEnumType = new EdmEnumTypeReference(new EdmEnumType("ODataDemo", "SupplierRating"), isNullable: false);
            var serializer = serializerProvider.GetEdmTypeSerializer(edmEnumType);

            Assert.NotNull(serializer);
            var enumSerializer = Assert.IsType <ODataEnumSerializer>(serializer);

            Assert.Equal(enumSerializer.EdmType, edmEnumType);
            Assert.Equal(enumSerializer.ODataPayloadKind, ODataPayloadKind.Property);
            Assert.Equal(enumSerializer.SerializerProvider, serializerProvider);
        }
        public void GetEdmTypeSerializer_Caches_CreateEdmTypeSerializerOutput()
        {
            // Arrange
            DefaultODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider();
            IEdmTypeReference edmType = new Mock<IEdmTypeReference>().Object;

            // Act
            var serializer1 = serializerProvider.GetEdmTypeSerializer(edmType);
            var serializer2 = serializerProvider.GetEdmTypeSerializer(edmType);

            // Assert
            Assert.Same(serializer2, serializer1);
        }
        public void GetEdmTypeSerializer_ThrowsArgumentNull_EdmType()
        {
            DefaultODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider();

            Assert.ThrowsArgumentNull(
                () => serializerProvider.GetEdmTypeSerializer(edmType: null),
                "edmType");
        }
        public void GetEdmTypeSerializer_Returns_SetEdmTypeSerializerInput()
        {
            // Arrange
            DefaultODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider();
            IEdmTypeReference edmType = EdmCoreModel.Instance.GetInt32(isNullable: true);
            ODataEntrySerializer serializer = new Mock<ODataEntrySerializer>(edmType, ODataPayloadKind.Property).Object;
            serializerProvider.SetEdmTypeSerializer(edmType, serializer);

            // Act & Assert
            Assert.Same(serializer, serializerProvider.GetEdmTypeSerializer(edmType));
        } 
        public void GetODataSerializer_Enum()
        {
            var serializerProvider = new DefaultODataSerializerProvider(_edmModel);
            IEdmTypeReference edmEnumType = new EdmEnumTypeReference(new EdmEnumType("ODataDemo", "SupplierRating"), isNullable: false);
            var serializer = serializerProvider.GetEdmTypeSerializer(edmEnumType);

            Assert.NotNull(serializer);
            var enumSerializer = Assert.IsType<ODataEnumSerializer>(serializer);
            Assert.Equal(enumSerializer.EdmType, edmEnumType);
            Assert.Equal(enumSerializer.ODataPayloadKind, ODataPayloadKind.Property);
            Assert.Equal(enumSerializer.SerializerProvider, serializerProvider);
        }