Files
kompas3d-mcp/tests/Kompas.Mcp.Tests/DimensionOrientationsTests.cs
T
mikhail 8e0ab374af feat: drawing_add_linear_dimension — линейный размер на виде (API7)
Веха 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>
2026-05-27 18:01:02 +03:00

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|).
}