File: MediaTypeHeaderValueComparerTests.cs
Web Access
Project: src\src\Http\Headers\test\Microsoft.Net.Http.Headers.Tests.csproj (Microsoft.Net.Http.Headers.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Microsoft.Net.Http.Headers;
 
public class MediaTypeHeaderValueComparerTests
{
    public static IEnumerable<object[]> SortValues
    {
        get
        {
            yield return new object[] {
                    new string[]
                        {
                            "application/*",
                            "text/plain",
                            "text/*+json;q=0.8",
                            "text/plain;q=1.0",
                            "text/plain",
                            "text/*+json;q=0.6",
                            "text/plain;q=0",
                            "*/*;q=0.8",
                            "*/*;q=1",
                            "text/*;q=1",
                            "text/plain;q=0.8",
                            "text/*;q=0.8",
                            "text/*;q=0.6",
                            "text/*+json;q=0.4",
                            "text/*;q=1.0",
                            "*/*;q=0.4",
                            "text/plain;q=0.6",
                            "text/xml",
                        },
                    new string[]
                        {
                            "text/plain",
                            "text/plain;q=1.0",
                            "text/plain",
                            "text/xml",
                            "application/*",
                            "text/*;q=1",
                            "text/*;q=1.0",
                            "*/*;q=1",
                            "text/plain;q=0.8",
                            "text/*+json;q=0.8",
                            "text/*;q=0.8",
                            "*/*;q=0.8",
                            "text/plain;q=0.6",
                            "text/*+json;q=0.6",
                            "text/*;q=0.6",
                            "text/*+json;q=0.4",
                            "*/*;q=0.4",
                            "text/plain;q=0",
                        }
                };
        }
    }
 
    [Theory]
    [MemberData(nameof(SortValues))]
    public void SortMediaTypeHeaderValuesByQFactor_SortsCorrectly(IEnumerable<string> unsorted, IEnumerable<string> expectedSorted)
    {
        var unsortedValues = MediaTypeHeaderValue.ParseList(unsorted.ToList());
        var expectedSortedValues = MediaTypeHeaderValue.ParseList(expectedSorted.ToList());
 
        var actualSorted = unsortedValues.OrderByDescending(m => m, MediaTypeHeaderValueComparer.QualityComparer).ToList();
 
        Assert.Equal(expectedSortedValues, actualSorted);
    }
}