File: FSharpNavigateToMatchKindTests.cs
Web Access
Project: src\src\VisualStudio\ExternalAccess\FSharpTest\Microsoft.CodeAnalysis.ExternalAccess.FSharp.UnitTests.csproj (Microsoft.CodeAnalysis.ExternalAccess.FSharp.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
#nullable disable
 
using System;
using System.Collections.Generic;
using Microsoft.CodeAnalysis.ExternalAccess.FSharp.Internal.NavigateTo;
using Microsoft.CodeAnalysis.ExternalAccess.FSharp.NavigateTo;
using Microsoft.CodeAnalysis.NavigateTo;
using Xunit;
 
namespace Microsoft.CodeAnalysis.ExternalAccess.FSharp.UnitTests;
 
public class FSharpNavigateToMatchKindTests
{
    public static IEnumerable<object[]> enumValues()
    {
        foreach (var number in Enum.GetValues(typeof(FSharpNavigateToMatchKind)))
        {
            yield return new object[] { number };
        }
    }
 
    internal static NavigateToMatchKind GetExpectedNavigateToMatchKind(FSharpNavigateToMatchKind kind)
    {
        switch (kind)
        {
            case FSharpNavigateToMatchKind.Exact:
                {
                    return NavigateToMatchKind.Exact;
                }
            case FSharpNavigateToMatchKind.Prefix:
                {
                    return NavigateToMatchKind.Prefix;
                }
            case FSharpNavigateToMatchKind.Substring:
                {
                    return NavigateToMatchKind.Substring;
                }
            case FSharpNavigateToMatchKind.Regular:
                {
                    return NavigateToMatchKind.Regular;
                }
            case FSharpNavigateToMatchKind.None:
                {
                    return NavigateToMatchKind.None;
                }
            case FSharpNavigateToMatchKind.CamelCaseExact:
                {
                    return NavigateToMatchKind.CamelCaseExact;
                }
            case FSharpNavigateToMatchKind.CamelCasePrefix:
                {
                    return NavigateToMatchKind.CamelCasePrefix;
                }
            case FSharpNavigateToMatchKind.CamelCaseNonContiguousPrefix:
                {
                    return NavigateToMatchKind.CamelCaseNonContiguousPrefix;
                }
            case FSharpNavigateToMatchKind.CamelCaseSubstring:
                {
                    return NavigateToMatchKind.CamelCaseSubstring;
                }
            case FSharpNavigateToMatchKind.CamelCaseNonContiguousSubstring:
                {
                    return NavigateToMatchKind.CamelCaseNonContiguousSubstring;
                }
            case FSharpNavigateToMatchKind.Fuzzy:
                {
                    return NavigateToMatchKind.Fuzzy;
                }
            default:
                {
                    throw ExceptionUtilities.UnexpectedValue(kind);
                }
        }
    }
 
    [Theory]
    [MemberData(nameof(enumValues))]
    internal void MapsCorrectly(FSharpNavigateToMatchKind kind)
    {
        var actual = FSharpNavigateToMatchKindHelpers.ConvertTo(kind);
        var expected = GetExpectedNavigateToMatchKind(kind);
        Assert.Equal(expected, actual);
    }
}