Базовый класс IntegrationTestBase (IAsyncLifetime) закрывает все открытые
документы КОМПАС после КАЖДОГО теста (DocumentService.CloseAllAsync) — чтобы не
копились вкладки-пустышки и упавший Assert не оставлял открытый документ. Все
интеграционные тест-классы переведены на него (: base(fx)); индивидуальные
finally CloseAsync сохранены как первичная очистка.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- mirror_body: ChooseBodies() в interop не приводится к ksChooseBodies (null) и не нужен —
o3d_mirrorAllOperation по умолчанию отражает все тела, сохраняя оригинал (проверено тестом);
убран нерабочий вызов (P2 fail-fast вскрыл, что приведение всегда падает)
- добавлен тест CircularPattern_reverse_flips_rotation_direction (проводка inverce) — P2
- комментарий класса FeatureOpsTests: пакеты B и C — P3
- 101 тест (60 unit + 41 integration)
- CreateSketchOn проверяет entity.Create() (улучшает все пути создания эскиза)
- loft-сообщение считает сечения после дедупликации
- тест loft: проверка габарита 20x20x40
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- thickness через RequirePositive (NaN-safe) + проверка angle на IsFinite
- описание side нейтральное (ksRibSideEnum), без 'ортогонально'
- тест: проверка объёма L-уголка (before), комментарий side=left
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
RibAsync (o3d_ribOperation): SetSketch + index/angle/side + SetThinParam.
SketchGeometry.RibSide маппинг (left/right/up/down). Инструмент rib в FeatureTools.
Эмпирически: контур ребра висит в зазоре (не касается тела), side=left для косынки.
Integration: L-уголок + ребро в углу → объём растёт.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- сообщение shell считает грани после дедупликации (Distinct)
- тест переименован (open_cap) + комментарий о симметрии торцов
- RCW-долг транзитов shell задокументирован в OPEN_QUESTIONS v2-2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>