742a97177b
Веха 2D-ЧЕРТЁЖ, инкремент 2 (оформление). DrawingService.FillTitleBlockAsync: LayoutSheets.ItemByNumber[1].Stamp.Text[id].Str = text → Update(). Enum StampField → номер графы ГОСТ (designation=2, name=1, material=3). Заполнение нескольких граф за вызов; перезапись (Str замещает, Clear не нужен — подтверждено спайком). Новый инструмент drawing_fill_title_block; ReadStampCellAsync для проверки. Ревью Codex спека учтено: Update() результат проверяется; null-checks (LayoutSheets/sheet/Stamp); RequireActiveDrawing выделен (сохраняет cast-проверку); ColumnId switch с дефолтным throw; счётчик = непустые поля; name=графа 1 однозначно. Валидация — чистый StampFields (ColumnId + Collect). Тесты: +7 unit (StampFields), +4 integration (DrawingStampTests: заполнение+reread 3 граф, перезапись, пустой ввод, не-чертёж). Итого 123 unit + 65 integration = 188. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
using Kompas.Mcp.Core.Drawings;
|
|
|
|
namespace Kompas.Mcp.Tests;
|
|
|
|
[Trait("Category", "Unit")]
|
|
public sealed class StampFieldsTests
|
|
{
|
|
[Theory]
|
|
[InlineData(StampField.Designation, 2)]
|
|
[InlineData(StampField.Name, 1)]
|
|
[InlineData(StampField.Material, 3)]
|
|
public void ColumnId_maps_known_fields(StampField field, int expected)
|
|
=> Assert.Equal(expected, StampFields.ColumnId(field));
|
|
|
|
[Fact]
|
|
public void ColumnId_throws_on_unknown()
|
|
=> Assert.Throws<ArgumentOutOfRangeException>(() => StampFields.ColumnId((StampField)999));
|
|
|
|
[Fact]
|
|
public void Collect_skips_null_empty_and_whitespace()
|
|
=> Assert.Empty(StampFields.Collect(null, "", " "));
|
|
|
|
[Fact]
|
|
public void Collect_trims_and_maps_provided_fields()
|
|
{
|
|
var result = StampFields.Collect(" ДЕТАЛЬ.001 ", null, "Сталь 45");
|
|
|
|
Assert.Equal(2, result.Count);
|
|
Assert.Contains(result, t => t.ColumnId == 2 && t.Text == "ДЕТАЛЬ.001"); // designation
|
|
Assert.Contains(result, t => t.ColumnId == 3 && t.Text == "Сталь 45"); // material
|
|
Assert.DoesNotContain(result, t => t.ColumnId == 1); // name не задан
|
|
}
|
|
|
|
[Fact]
|
|
public void Collect_includes_name_as_column_1()
|
|
{
|
|
var result = StampFields.Collect(null, "Кронштейн", null);
|
|
Assert.Single(result);
|
|
Assert.Equal((1, "Кронштейн"), result[0]);
|
|
}
|
|
}
|