using Kompas.Mcp.Core.Drawings;

namespace Kompas.Mcp.Tests;

[Trait("Category", "Unit")]
public sealed class AngleDimensionTypesTests
{
    [Theory]
    [InlineData("min", AngleDimensionType.Min)]
    [InlineData("max", AngleDimensionType.Max)]
    [InlineData("more", AngleDimensionType.More)]
    [InlineData("  MIN ", AngleDimensionType.Min)]
    [InlineData("минимальный", AngleDimensionType.Min)]
    [InlineData("максимальный", AngleDimensionType.Max)]
    [InlineData("больше180", AngleDimensionType.More)]
    public void Parse_maps_known(string value, AngleDimensionType expected)
        => Assert.Equal(expected, AngleDimensionTypes.Parse(value));

    [Fact]
    public void Parse_throws_on_unknown()
        => Assert.Throws<ArgumentException>(() => AngleDimensionTypes.Parse("acute"));

    [Fact]
    public void Parse_throws_on_null()
        => Assert.Throws<ArgumentNullException>(() => AngleDimensionTypes.Parse(null!));

    // ToKompas (→ ksAngleDimTypeEnum) намеренно НЕ покрыт unit-тестом: тестовый проект не ссылается
    // на Kompas6Constants (граница проекта, как у DimensionOrientations.ToKompas). Маппинг тривиален
    // и проверяется интеграцией (min → острый угол 90°, выбор сектора).
}
