Files
kompas3d-mcp/tests/Kompas.Mcp.Tests/Integration/ConnectionTests.cs
T
mikhail 0038790902 feat(core): STA dispatcher + KOMPAS connection session (S3)
- KompasDispatcher: выделенный STA-поток + очередь задач, InvokeAsync<T>,
  inline-выполнение вложенных вызовов, корректный Dispose
- NativeMethods: attach к запущенному COM (CLSIDFromProgID + GetActiveObject,
  замена отсутствующего в .NET 8 Marshal.GetActiveObject)
- KompasSession: подключение через API5 (KompasObject) -> API7 (IApplication),
  attach/launch, версия/редакция, освобождение COM на STA-потоке
- tests: 5 unit-тестов диспетчера + 3 интеграционных теста подключения (зелёные)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 23:42:52 +03:00

32 lines
876 B
C#

namespace Kompas.Mcp.Tests.Integration;
/// <summary>Интеграция: подключение к КОМПАС. Требует установленный КОМПАС-3D.</summary>
[Trait("Category", "Integration")]
[Collection(KompasCollection.Name)]
public sealed class ConnectionTests
{
private readonly KompasFixture _fx;
public ConnectionTests(KompasFixture fx) => _fx = fx;
[Fact]
public void Connects_to_kompas()
{
Assert.True(_fx.Session.IsConnected);
}
[Fact]
public void Reports_version_24()
{
Assert.False(string.IsNullOrWhiteSpace(_fx.Info.Version));
Assert.StartsWith("24", _fx.Info.Version);
}
[Fact]
public void Reports_progid_and_edition()
{
Assert.Contains("Application.5", _fx.Info.ProgId);
Assert.False(string.IsNullOrWhiteSpace(_fx.Info.Edition));
}
}