using Kompas.Mcp.Core.Conversion;

namespace Kompas.Mcp.Tests;

/// <summary>Юнит-тесты маппинга формата STEP в коды конвертера КОМПАС. COM не требуется.</summary>
[Trait("Category", "Unit")]
public sealed class StepFormatTests
{
    [Theory]
    [InlineData(StepFormat.Auto, 3)]    // ksConverterToSTEP
    [InlineData(StepFormat.Ap203, 203)] // ksConverterToSTEP_AP203
    [InlineData(StepFormat.Ap214, 214)] // ksConverterToSTEP_AP214
    [InlineData(StepFormat.Ap242, 242)] // ksConverterToSTEP_AP242
    public void Export_code_matches_converter_enum(StepFormat fmt, int expected)
        => Assert.Equal(expected, StepFormats.ExportConverterCode(fmt));

    [Fact]
    public void Import_code_is_ksConverterFromStep()
        => Assert.Equal(-3, StepFormats.ImportConverterCode);

    [Theory]
    [InlineData("auto", StepFormat.Auto)]
    [InlineData("step", StepFormat.Auto)]
    [InlineData("ap214", StepFormat.Ap214)]
    [InlineData("214", StepFormat.Ap214)]
    [InlineData("AP203", StepFormat.Ap203)]
    [InlineData("ap242", StepFormat.Ap242)]
    public void Parse_maps_known_strings(string input, StepFormat expected)
        => Assert.Equal(expected, StepFormats.Parse(input));

    [Fact]
    public void Parse_rejects_unknown_format()
        => Assert.Throws<ArgumentException>(() => StepFormats.Parse("iges"));
}
