0038790902
- 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>
32 lines
876 B
C#
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));
|
|
}
|
|
}
|