246233727c
drawing_add_radial_dimension (R окружности/дуги; NominalValue = радиус) и drawing_add_angular_dimension (угол между двумя сторонами; angleType min/max/more выбирает измеряемый сектор) через API7 ISymbols2DContainer. Завершают базовое семейство размеров чертежа (после линейного и диаметрального). - DrawingService: AddRadialDimensionAsync/AddAngularDimensionAsync + счётчики - AngleDimensionType (enum + Parse/ToKompas, по образцу DimensionOrientations) - DrawingDimensionResult.Value — единице-нейтральный (мм / градусы) - 9 unit + 13 интеграционных тестов (всего 240 зелёных) Спайк подтвердил: радиальный NominalValue = РАДИУС (не диаметр, вопреки справке); у углового измеряемый угол выбирает angleType (min=90°/more=270°), а (x3,y3) лишь позиционирует дугу. Спек и ревью Codex — docs/superpowers/specs/. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
31 lines
1.4 KiB
C#
31 lines
1.4 KiB
C#
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°, выбор сектора).
|
||
}
|