56 lines
2.0 KiB
C#
56 lines
2.0 KiB
C#
using CliFx;
|
|
using CliFx.Attributes;
|
|
using CliFx.Infrastructure;
|
|
using Shouldly;
|
|
using Xunit;
|
|
|
|
namespace ZB.MOM.WW.OtOpcUa.Driver.AbCip.Cli.Tests;
|
|
|
|
/// <summary>The CLI <c>--transport</c> flag reaches <see cref="AbCipDriverOptions.Transport"/>.</summary>
|
|
[Trait("Category", "Unit")]
|
|
public sealed class AbCipTransportOptionTests
|
|
{
|
|
[Command("capture-transport")]
|
|
private sealed class CapturingCommand : AbCipCommandBase
|
|
{
|
|
public static AbCipTransport? Captured;
|
|
|
|
public override ValueTask ExecuteAsync(IConsole console)
|
|
{
|
|
Captured = BuildOptions([]).Transport;
|
|
return default;
|
|
}
|
|
}
|
|
|
|
/// <summary>Verifies the default is libplctag when the flag is absent.</summary>
|
|
[Fact]
|
|
public async Task Transport_defaults_to_libplctag()
|
|
{
|
|
CapturingCommand.Captured = null;
|
|
using var console = new FakeInMemoryConsole();
|
|
var app = new CliApplicationBuilder().AddCommand(typeof(CapturingCommand)).UseConsole(console).Build();
|
|
|
|
var exit = await app.RunAsync(["capture-transport", "--gateway", "ab://1.2.3.4/1,0"]);
|
|
|
|
exit.ShouldBe(0, console.ReadErrorString());
|
|
CapturingCommand.Captured.ShouldBe(AbCipTransport.Libplctag);
|
|
}
|
|
|
|
/// <summary>Verifies CliFx parses <c>--transport</c> (case-insensitive) into the options.</summary>
|
|
[Theory]
|
|
[InlineData("native", AbCipTransport.Native)]
|
|
[InlineData("Native", AbCipTransport.Native)]
|
|
[InlineData("libplctag", AbCipTransport.Libplctag)]
|
|
public async Task Transport_flag_is_parsed_by_the_cli(string value, AbCipTransport expected)
|
|
{
|
|
CapturingCommand.Captured = null;
|
|
using var console = new FakeInMemoryConsole();
|
|
var app = new CliApplicationBuilder().AddCommand(typeof(CapturingCommand)).UseConsole(console).Build();
|
|
|
|
var exit = await app.RunAsync(["capture-transport", "--gateway", "ab://1.2.3.4/1,0", "--transport", value]);
|
|
|
|
exit.ShouldBe(0, console.ReadErrorString());
|
|
CapturingCommand.Captured.ShouldBe(expected);
|
|
}
|
|
}
|