Files
kompas3d-mcp/tests/Kompas.Mcp.Tests/FeatureNameTests.cs
T
mikhail 461e731857 Дерево построения: имя у каждой операции, скругление пакетом по точкам
Имя (name) прокидывается до создания объекта: API5 — ksEntity.name перед Create(),
API7-пути (примитив, отверстие, булева, рез, перенос грани) — IModelObject.Name перед
Update(). Читается назад через ksFeature.name, который только на чтение. Без имени
дерево состоит из «Эскиз:1» и «Элемент выдавливания:3».

fillet_edge/chamfer_edge принимают список точек: на теле с сотнями рёбер list_edges
неподъёмен, а выбор по точке брал одно ребро — четыре угла давали четыре операции.
Ненайденные рёбра перечисляются ВСЕ сразу, модель при этом не мутируется.
2026-07-31 16:35:44 +03:00

51 lines
1.9 KiB
C#

using Kompas.Mcp.Core.Modeling;
namespace Kompas.Mcp.Tests;
/// <summary>
/// Имя операции в дереве построения. Дерево из «Эскиз:1…Эскиз:5» нечитаемо, поэтому имя
/// принимается у каждой операции — но кривое имя (с переводом строки, гигантское) в дереве
/// отображается искажённо, и лучше сказать об этом сразу.
/// </summary>
[Trait("Category", "Unit")]
public sealed class FeatureNameTests
{
[Fact]
public void Name_is_trimmed()
=> Assert.Equal("Контур плашки", FeatureName.Normalize(" Контур плашки "));
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData(" ")]
public void Empty_name_means_leave_the_kompas_default(string? name)
=> Assert.Null(FeatureName.Normalize(name));
[Fact]
public void Too_long_name_is_rejected_with_the_limit_in_the_message()
{
var ex = Assert.Throws<ArgumentException>(() => FeatureName.Normalize(new string('я', FeatureName.MaxLength + 1)));
Assert.Contains(FeatureName.MaxLength.ToString(), ex.Message, StringComparison.Ordinal);
}
[Fact]
public void Name_at_the_limit_is_accepted()
{
var name = new string('я', FeatureName.MaxLength);
Assert.Equal(name, FeatureName.Normalize(name));
}
[Theory]
[InlineData("Эскиз\nвторая строка")]
[InlineData("Эскиз\tтабуляция")]
public void Control_characters_are_rejected(string name)
=> Assert.Throws<ArgumentException>(() => FeatureName.Normalize(name));
[Fact]
public void Parameter_name_reaches_the_message()
{
var ex = Assert.Throws<ArgumentException>(() => FeatureName.Normalize("a\nb", "sketchName"));
Assert.Equal("sketchName", ex.ParamName);
}
}