public void SupportedMediaTypes_Contains_MultipartFormdata(MultipartJsonMediaTypeFormatter sut)
        {
            var actual = sut.SupportedMediaTypes
                .SingleOrDefault(mediaType => mediaType.MediaType == "multipart/form-data");

            Assert.NotNull(actual);
        }
        public void SupportedEncodings_Contains_Utf16(MultipartJsonMediaTypeFormatter sut)
        {
            var actual = sut.SupportedEncodings
                .SingleOrDefault(encoding => encoding.WebName == "utf-16");

            Assert.NotNull(actual);
        }
        public void CanReadType_JsonDictionaryContract_ReturnsTrue(MultipartJsonMediaTypeFormatter sut)
        {
            var types = new[]
            {
                typeof(Dictionary<string,TestModel>), typeof(Dictionary<int,TestModel>)
            };

            foreach (var t in types)
            {
                Assert.True(sut.CanReadType(t), string.Format("CanReadType must support {0}", t.FullName));
            }
        }
        public void CanReadType_JsonPrimitiveContract_ReturnsFalse(MultipartJsonMediaTypeFormatter sut)
        {
            var types = new[]
            {
                typeof(bool), typeof(string), typeof(int), typeof(long), typeof(int?), typeof(DateTime)
            };

            foreach (var t in types)
            {
                Assert.False(sut.CanReadType(t), string.Format("CanReadType must not support {0}", t.FullName));
            }
        }
        public void CanWriteType_Any_ReturnsFalse(MultipartJsonMediaTypeFormatter sut)
        {
            var types = new[]
            {
                typeof(bool), typeof(int), typeof(Nullable<>), typeof(Dictionary<,>), typeof(List<>), typeof(object)
            };

            foreach (var t in types)
            {
                Assert.False(sut.CanWriteType(t), string.Format("CanWriteType supports {0}, but should not have.", t.FullName));
            }
        }
 public void SupportedEncodings_Contains_Items(MultipartJsonMediaTypeFormatter sut)
 {
     Assert.NotEmpty(sut.SupportedEncodings);
 }
 public void SupportedMediaTypes_Contains_OneItem(MultipartJsonMediaTypeFormatter sut)
 {
     Assert.Equal(1, sut.SupportedMediaTypes.Count);
 }
        public async Task ReadFromStreamAsync_NotJsonObjectContent_Throws(
            MultipartJsonMediaTypeFormatter sut,
            MultipartFormDataContent content,
            ObjectContent<string> stringContent,
            IFormatterLogger formatterLogger)
        {
            content.Add(stringContent, "StringValue");
            // HACK: ContentLength set just to bypass sanity checks in ReadFromStreamAsync.
            content.Headers.ContentLength = 1;

            await Assert.ThrowsAsync<InvalidOperationException>(() =>
                sut.ReadFromStreamAsync(typeof(string), null, content, formatterLogger));
        }
        public async Task ReadFromStreamAsync_NullContent_ReturnsDefault(
            MultipartJsonMediaTypeFormatter sut,
            Type type,
            IFormatterLogger formatterLogger)
        {
            var actual = await sut.ReadFromStreamAsync(type, null, null, formatterLogger);
            var expected = MediaTypeFormatter.GetDefaultValueForType(type);

            Assert.Equal(expected, actual);
        }
        public async Task ReadFromStreamAsync_ContentNotMultipartFormData_ThrowsInvalidOperationException(
            MultipartJsonMediaTypeFormatter sut,
            ObjectContent<string> content,
            IFormatterLogger formatterLogger)
        {
            Assert.False(content.IsMimeMultipartContent());

            await Assert.ThrowsAsync<InvalidOperationException>(() =>
                sut.ReadFromStreamAsync(content.ObjectType, null, content, formatterLogger));
        }