56ed2cb0cf
Задать формат (A0–A5/user) и ориентацию (книжная/альбомная) листа чертежа через API7 ILayoutSheet.Format (ISheetFormat). Стандартный формат — размеры авто; user — явные width/height (landscape игнорируется, ориентация из соотношения сторон). - DrawingService.SetSheetFormatAsync + RequireLayoutSheet - PaperFormat (enum + Parse/ToKompas/FromKompas), SheetFormatResult - DrawingValidation.ValidateFormatDimensions (user: >0; стандартный: размеры запрещены) - 19 unit + 7 интеграционных тестов (всего 304 зелёных), сборка Release чистая Спайк подтвердил: дефолт A4 portrait; стандартный формат пересчитывает W/H авто (A3 landscape→420×297); user применяет width/height. Ревью спека pi/glm-5.1 + pi/kimi-k2.6 учтено (FromKompas для дружелюбного имени, запрет размеров у стандартного, sheetNumber>0, landscape игнорируется для user). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
29 lines
961 B
C#
29 lines
961 B
C#
using Kompas.Mcp.Core.Drawings;
|
|
|
|
namespace Kompas.Mcp.Tests;
|
|
|
|
[Trait("Category", "Unit")]
|
|
public sealed class PaperFormatsTests
|
|
{
|
|
[Theory]
|
|
[InlineData("A4", PaperFormat.A4)]
|
|
[InlineData("a3", PaperFormat.A3)]
|
|
[InlineData(" A2 ", PaperFormat.A2)]
|
|
[InlineData("a0", PaperFormat.A0)]
|
|
[InlineData("A5", PaperFormat.A5)]
|
|
[InlineData("user", PaperFormat.User)]
|
|
[InlineData("USER", PaperFormat.User)]
|
|
public void Parse_maps_known(string value, PaperFormat expected)
|
|
=> Assert.Equal(expected, PaperFormats.Parse(value));
|
|
|
|
[Fact]
|
|
public void Parse_throws_on_unknown()
|
|
=> Assert.Throws<ArgumentException>(() => PaperFormats.Parse("A6"));
|
|
|
|
[Fact]
|
|
public void Parse_throws_on_null()
|
|
=> Assert.Throws<ArgumentNullException>(() => PaperFormats.Parse(null!));
|
|
|
|
// ToKompas/FromKompas (↔ ksDocumentFormatEnum) — граница проекта, проверяются интеграцией.
|
|
}
|