File: Routing\RouteKeyTest.cs
Web Access
Project: src\src\Components\Components\test\Microsoft.AspNetCore.Components.Tests.csproj (Microsoft.AspNetCore.Components.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.AspNetCore.Components.Routing;
 
public class RouteKeyTest
{
    [Fact]
    public void RouteKey_Default_Equality()
    {
        // Arrange
        var key1 = default(RouteKey);
        var key2 = default(RouteKey);
 
        // Act & Assert
        Assert.Equal(key1.GetHashCode(), key2.GetHashCode());
        Assert.True(key1.Equals(key2));
    }
 
    [Fact]
    public void RouteKey_WithNoAdditionalAssemblies_Equality()
    {
        // Arrange
        var key1 = new RouteKey(typeof(string).Assembly, null);
        var key2 = new RouteKey(typeof(string).Assembly, null);
 
        // Act & Assert
        Assert.Equal(key1.GetHashCode(), key2.GetHashCode());
        Assert.True(key1.Equals(key2));
    }
 
    [Fact]
    public void RouteKey_WithNoAdditionalAssemblies_DifferentAssemblies()
    {
        // Arrange
        var key1 = new RouteKey(typeof(string).Assembly, null);
        var key2 = new RouteKey(typeof(ComponentBase).Assembly, null);
 
        // Act & Assert
        Assert.NotEqual(key1.GetHashCode(), key2.GetHashCode());
        Assert.False(key1.Equals(key2));
    }
 
    [Fact]
    public void RouteKey_DefaultAgainstNonDefault()
    {
        // Arrange
        var key1 = default(RouteKey);
        var key2 = new RouteKey(typeof(string).Assembly, null);
 
        // Act & Assert
        Assert.NotEqual(key1.GetHashCode(), key2.GetHashCode());
        Assert.False(key1.Equals(key2));
    }
 
    [Fact]
    public void RouteKey_WithAdditionalAssemblies()
    {
        // Arrange
        var key1 = new RouteKey(typeof(string).Assembly, new[] { typeof(ComponentBase).Assembly, GetType().Assembly });
        var key2 = new RouteKey(typeof(string).Assembly, new[] { typeof(ComponentBase).Assembly, GetType().Assembly });
 
        // Act & Assert
        Assert.Equal(key1.GetHashCode(), key2.GetHashCode());
        Assert.True(key1.Equals(key2));
    }
 
    [Fact]
    public void RouteKey_WithAdditionalAssemblies_DifferentOrder()
    {
        // Arrange
        var key1 = new RouteKey(typeof(string).Assembly, new[] { typeof(ComponentBase).Assembly, GetType().Assembly });
        var key2 = new RouteKey(typeof(string).Assembly, new[] { GetType().Assembly, typeof(ComponentBase).Assembly });
 
        // Act & Assert
        Assert.Equal(key1.GetHashCode(), key2.GetHashCode());
        Assert.True(key1.Equals(key2));
    }
 
    [Fact]
    public void RouteKey_WithAdditionalAssemblies_DifferentAppAssemblies()
    {
        // Arrange
        var key1 = new RouteKey(typeof(string).Assembly, new[] { GetType().Assembly });
        var key2 = new RouteKey(typeof(ComponentBase).Assembly, new[] { GetType().Assembly, });
 
        // Act & Assert
        Assert.NotEqual(key1.GetHashCode(), key2.GetHashCode());
        Assert.False(key1.Equals(key2));
    }
 
    [Fact]
    public void RouteKey_WithAdditionalAssemblies_DifferentAdditionalAssemblies()
    {
        // Arrange
        var key1 = new RouteKey(typeof(ComponentBase).Assembly, new[] { typeof(object).Assembly });
        var key2 = new RouteKey(typeof(ComponentBase).Assembly, new[] { GetType().Assembly, });
 
        // Act & Assert
        Assert.Equal(key1.GetHashCode(), key2.GetHashCode());
        Assert.False(key1.Equals(key2));
    }
}