public void CanWriteStrings(
        object value,
        bool useDeclaredTypeAsString)
    {
        // Arrange
        var expectedContentType = new StringSegment("text/plain");

        var formatter = new StringOutputFormatter();
        var type      = useDeclaredTypeAsString ? typeof(string) : typeof(object);

        var context = new OutputFormatterWriteContext(
            new DefaultHttpContext(),
            new TestHttpResponseStreamWriterFactory().CreateWriter,
            type,
            value);

        context.ContentType = new StringSegment("text/plain");

        // Act
        var result = formatter.CanWriteResult(context);

        // Assert
        Assert.True(result);
        Assert.Equal(expectedContentType, context.ContentType);
    }
    public void CanWriteResult_DefaultContentType()
    {
        // Arrange
        var formatter = new StringOutputFormatter();
        var context   = new OutputFormatterWriteContext(
            new DefaultHttpContext(),
            new TestHttpResponseStreamWriterFactory().CreateWriter,
            typeof(string),
            "Thisisastring");

        // Act
        var result = formatter.CanWriteResult(context);

        // Assert
        Assert.True(result);
        Assert.Equal(new StringSegment("text/plain"), context.ContentType);
    }
    public void CannotWriteUnsupportedMediaType(string contentType)
    {
        // Arrange
        var formatter           = new StringOutputFormatter();
        var expectedContentType = new StringSegment(contentType);

        var context = new OutputFormatterWriteContext(
            new DefaultHttpContext(),
            new TestHttpResponseStreamWriterFactory().CreateWriter,
            typeof(string),
            "Thisisastring");

        context.ContentType = new StringSegment(contentType);

        // Act
        var result = formatter.CanWriteResult(context);

        // Assert
        Assert.False(result);
        Assert.Equal(expectedContentType, context.ContentType);
    }