910d120c8a
Веха 2D-ЧЕРТЁЖ, инкремент 4. DrawingService.AddDiametralDimensionAsync: (ISymbols2DContainer)view.DiametralDimensions.Add → Xc/Yc/Radius/Angle(рад) + AutoNominalValue → Update → Valid → NominalValue (= диаметр 2R). angle в градусах (DimensionAngles.ToRadians). Новый инструмент drawing_add_diametral_dimension. Рефактор по ревью Codex: извлечён RequireSymbols2DContainer(viewNumber) (общий для линейных/диаметральных размеров); AutoNominalValue выставляется явно (как у линейного); DimensionType — COM-дефолт; ToRadians — чистый helper с unit-тестом. Валидаторы: RequirePositiveRadius (новый). Тесты: +10 unit (ToRadians, RequirePositiveRadius), +4 integration (DrawingDiametralTests: диаметр=2R, адресация вида, radius<=0, нет видов). Итого 141 unit + 76 integration = 217. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
37 lines
1.5 KiB
C#
37 lines
1.5 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|).
|
|
|
|
[Theory]
|
|
[InlineData(0, 0)]
|
|
[InlineData(90, Math.PI / 2)]
|
|
[InlineData(180, Math.PI)]
|
|
[InlineData(-45, -Math.PI / 4)]
|
|
public void ToRadians_converts_degrees(double degrees, double expected)
|
|
=> Assert.Equal(expected, DimensionAngles.ToRadians(degrees), 9);
|
|
|
|
[Fact]
|
|
public void ToRadians_throws_on_non_finite()
|
|
=> Assert.Throws<ArgumentException>(() => DimensionAngles.ToRadians(double.NaN));
|
|
}
|