private async Task TestInputFormatter <TResolver>(Type modelType) where TResolver : IJsonFormatterResolver <byte, TResolver>, new()
        {
            var httpContext = new DefaultHttpContext();

            httpContext.Features.Set <IHttpResponseFeature>(new TestResponseFeature());
            var model     = _fixture.Create(modelType);
            var inputData = JsonSerializer.NonGeneric.Utf8.Serialize <TResolver>(model);

            using (httpContext.Request.Body = new MemoryStream(inputData))
            {
                httpContext.Request.ContentType = "application/json";

                var formatter = new SpanJsonInputFormatter <TResolver>();

                var formatterContext = CreateInputFormatterContext(modelType, httpContext);

                // Act
                var result = await formatter.ReadAsync(formatterContext).ConfigureAwait(false);

                // Assert
                Assert.False(result.HasError);
                Assert.NotNull(result.Model);
                Assert.IsType(modelType, result.Model);
                Assert.Equal(model, result.Model, GenericEqualityComparer.Default);
            }
        }
        public void SupportedMediaTypes(string type)
        {
            var httpContext = new DefaultHttpContext();

            httpContext.Features.Set <IHttpResponseFeature>(new TestResponseFeature());
            httpContext.Request.ContentType = type;

            var formatter        = new SpanJsonInputFormatter <ExcludeNullsOriginalCaseResolver <byte> >();
            var formatterContext = CreateInputFormatterContext(typeof(string), httpContext);

            Assert.True(formatter.CanRead(formatterContext));
        }