File: MediaTypeAssert.cs
Web Access
Project: src\src\Mvc\shared\Mvc.Core.TestCommon\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj (Microsoft.AspNetCore.Mvc.Core.TestCommon)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Extensions.Primitives;
using Microsoft.Net.Http.Headers;
using Xunit.Sdk;
 
namespace Microsoft.AspNetCore.Mvc;
 
public class MediaTypeAssert
{
    public static void Equal(string left, string right)
    {
        Equal(new StringSegment(left), new StringSegment(right));
    }
 
    public static void Equal(string left, StringSegment right)
    {
        Equal(new StringSegment(left), right);
    }
 
    public static void Equal(StringSegment left, string right)
    {
        Equal(left, new StringSegment(right));
    }
 
    public static void Equal(StringSegment left, StringSegment right)
    {
        if (!left.HasValue && !right.HasValue)
        {
            return;
        }
        else if (!left.HasValue || !right.HasValue)
        {
            throw EqualException.ForMismatchedValues(left.ToString(), right.ToString());
        }
 
        if (!MediaTypeHeaderValue.TryParse(left.Value, out var leftMediaType) ||
            !MediaTypeHeaderValue.TryParse(right.Value, out var rightMediaType) ||
            !leftMediaType.Equals(rightMediaType))
        {
            throw EqualException.ForMismatchedValues(left.ToString(), right.ToString());
        }
    }
}