5272066bef
drawing_add_rough (знак шероховатости: ISymbols2DContainer.Roughs + IRoughParams, SignType ksRoughSignEnum, значение Ra/Rz через RoughParamText.Str), drawing_add_text (свободная надпись: IDrawingContainer.DrawingTexts + IText.Str), drawing_set_technical_requirements (блок тех. требований уровня документа: IDrawingDocument.TechnicalDemand.Text). - DrawingService: AddRoughAsync/AddTextAsync/SetTechnicalRequirementsAsync + ReadTechnicalRequirementsAsync + счётчики; RequireDrawingContainer/RequireTechnicalDemand - RoughSignType (enum + Parse/ToKompas), DrawingAnnotationResult (Value read-back из COM) - RequireNonEmptyText в DrawingValidation - 13 unit + 13 интеграционных тестов (всего 267 зелёных), сборка Release чистая Спайк подтвердил: значение шероховатости через IRoughParams.RoughParamText.Str (round-trip); текст НЕ в IView.ObjectCount (счёт по DrawingTexts.Count); тех. требования IsCreated False→True при первом Text.Str+Update, многострочно через \n. Ревью Codex спека учтено (height убран — это высота блока, не шрифт; guards; read-back возврат). Спек — docs/superpowers/specs/. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
30 lines
1.3 KiB
C#
30 lines
1.3 KiB
C#
using Kompas.Mcp.Core.Drawings;
|
||
|
||
namespace Kompas.Mcp.Tests;
|
||
|
||
[Trait("Category", "Unit")]
|
||
public sealed class RoughSignTypesTests
|
||
{
|
||
[Theory]
|
||
[InlineData("delete", RoughSignType.DeleteMaterial)]
|
||
[InlineData("without", RoughSignType.WithoutDeleteMaterial)]
|
||
[InlineData("none", RoughSignType.NoProcessing)]
|
||
[InlineData(" DELETE ", RoughSignType.DeleteMaterial)]
|
||
[InlineData("с удалением", RoughSignType.DeleteMaterial)]
|
||
[InlineData("без удаления", RoughSignType.WithoutDeleteMaterial)]
|
||
[InlineData("без указания", RoughSignType.NoProcessing)]
|
||
public void Parse_maps_known(string value, RoughSignType expected)
|
||
=> Assert.Equal(expected, RoughSignTypes.Parse(value));
|
||
|
||
[Fact]
|
||
public void Parse_throws_on_unknown()
|
||
=> Assert.Throws<ArgumentException>(() => RoughSignTypes.Parse("polished"));
|
||
|
||
[Fact]
|
||
public void Parse_throws_on_null()
|
||
=> Assert.Throws<ArgumentNullException>(() => RoughSignTypes.Parse(null!));
|
||
|
||
// ToKompas (→ ksRoughSignEnum) намеренно НЕ покрыт unit-тестом: тестовый проект не ссылается на
|
||
// Kompas6Constants (граница проекта, как у AngleDimensionTypes/DimensionOrientations).
|
||
}
|