56 lines
2.4 KiB
C#
56 lines
2.4 KiB
C#
using Kompas.Mcp.Core.Interop;
|
|
|
|
namespace Kompas.Mcp.Tests;
|
|
|
|
/// <summary>
|
|
/// Разбор значения <c>LocalServer32</c>. Тесты кроссплатформенные намеренно: значения — всегда
|
|
/// Windows-пути, но гоняются они и на Linux-раннере, поэтому разбор в локаторе не опирается
|
|
/// на <c>Path</c>.
|
|
/// </summary>
|
|
[Trait("Category", "Unit")]
|
|
public sealed class KompasInstallLocatorTests
|
|
{
|
|
[Theory]
|
|
// Реальное значение на v24 Home — путь в кавычках.
|
|
[InlineData("\"C:\\Program Files\\ASCON\\KOMPAS-3D v24 Home\\Bin\\kHome.Exe\"",
|
|
"C:\\Program Files\\ASCON\\KOMPAS-3D v24 Home\\Bin\\kHome.Exe")]
|
|
[InlineData("C:\\ASCON\\Bin\\kompas.exe", "C:\\ASCON\\Bin\\kompas.exe")]
|
|
// Без кавычек аргументы отрезаются по расширению, а не по первому пробелу.
|
|
[InlineData("C:\\Program Files\\ASCON\\Bin\\kHome.Exe /automation",
|
|
"C:\\Program Files\\ASCON\\Bin\\kHome.Exe")]
|
|
public void ParseServerCommand_extracts_executable(string raw, string expected)
|
|
=> Assert.Equal(expected, KompasInstallLocator.ParseServerCommand(raw));
|
|
|
|
[Theory]
|
|
[InlineData(null)]
|
|
[InlineData("")]
|
|
[InlineData(" ")]
|
|
public void ParseServerCommand_returns_null_for_empty(string? raw)
|
|
=> Assert.Null(KompasInstallLocator.ParseServerCommand(raw));
|
|
|
|
[Fact]
|
|
public void ParseServerCommand_returns_null_for_unclosed_quote()
|
|
=> Assert.Null(KompasInstallLocator.ParseServerCommand("\"C:\\ASCON\\Bin\\kHome.Exe"));
|
|
|
|
[Fact]
|
|
public void InstallRootFromServerCommand_strips_bin_subdirectory()
|
|
{
|
|
var root = KompasInstallLocator.InstallRootFromServerCommand(
|
|
"\"C:\\Program Files\\ASCON\\KOMPAS-3D v24 Home\\Bin\\kHome.Exe\"");
|
|
|
|
Assert.Equal("C:\\Program Files\\ASCON\\KOMPAS-3D v24 Home", root);
|
|
}
|
|
|
|
[Fact]
|
|
public void InstallRootFromServerCommand_keeps_directory_when_not_bin()
|
|
{
|
|
var root = KompasInstallLocator.InstallRootFromServerCommand("\"C:\\ASCON\\KOMPAS\\kHome.Exe\"");
|
|
|
|
Assert.Equal("C:\\ASCON\\KOMPAS", root);
|
|
}
|
|
|
|
[Fact]
|
|
public void InstallRootFromServerCommand_returns_null_for_empty()
|
|
=> Assert.Null(KompasInstallLocator.InstallRootFromServerCommand(null));
|
|
}
|