8e0ab374af
Веха 2D-ЧЕРТЁЖ, инкремент 3. DrawingService.AddLinearDimensionAsync: (ISymbols2D Container)view (QI) → LineDimensions.Add → X1..Y3 (локальная СК вида) + Orientation + AutoNominalValue → Update → проверка Valid → ((IDimensionText)dim).NominalValue. Свой enum DimensionOrientation (horizontal/vertical/parallel). Новый инструмент drawing_add_linear_dimension. DrawingViewsResult += ViewNumbers (адресация видов). Находка: размеры НЕ в IView.ObjectCount (он про геометрию IDrawingContainer) — проверка попадания в вид через ISymbols2DContainer.LineDimensions.Count. Ревью Codex спека учтено: RequireDistinctPoints (нулевая длина) + Valid после Update; контракт «первый несистемный вид»; null-check Add; AutoNominalValue явно; ViewNumbers required + текст ответа create_standard_views; тесты адресации/негатив. Тесты: +8 unit (DimensionOrientations, DrawingValidation), +5 integration (DrawingDimensionTests). Итого 131 unit + 70 integration = 201. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
25 lines
1.1 KiB
C#
25 lines
1.1 KiB
C#
using Kompas.Mcp.Core.Drawings;
|
|
|
|
namespace Kompas.Mcp.Tests;
|
|
|
|
[Trait("Category", "Unit")]
|
|
public sealed class DimensionOrientationsTests
|
|
{
|
|
[Theory]
|
|
[InlineData("horizontal", DimensionOrientation.Horizontal)]
|
|
[InlineData("vertical", DimensionOrientation.Vertical)]
|
|
[InlineData("parallel", DimensionOrientation.Parallel)]
|
|
[InlineData("ГОРИЗОНТАЛЬНЫЙ", DimensionOrientation.Horizontal)]
|
|
[InlineData(" vertical ", DimensionOrientation.Vertical)]
|
|
public void Parse_maps_known(string value, DimensionOrientation expected)
|
|
=> Assert.Equal(expected, DimensionOrientations.Parse(value));
|
|
|
|
[Fact]
|
|
public void Parse_throws_on_unknown()
|
|
=> Assert.Throws<ArgumentException>(() => DimensionOrientations.Parse("diagonal"));
|
|
|
|
// ToKompas (→ ksLineDimensionOrientationEnum) намеренно НЕ покрыт unit-тестом: тестовый проект
|
|
// не ссылается на Kompas6Constants (граница проекта). Маппинг тривиален и проверяется интеграцией
|
|
// (horizontal → |X2-X1|, vertical → |Y2-Y1|).
|
|
}
|