feat: verify Tornado PGM cut sequence
This commit is contained in:
@@ -263,6 +263,79 @@ public sealed class SmokeCommandLineTests
|
||||
Assert.Equal("invalid-port", parsed.ErrorCode);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Parse_PgmCutsSequenceRequiresItsOwnLongAcknowledgementAndFixedInputs()
|
||||
{
|
||||
var complete = ValidPgmCutsArguments();
|
||||
var missingAcknowledgement = SmokeCommandLine.Parse(
|
||||
complete.Where(value => value != SmokeCommandLine.PgmCutsSequenceAcknowledgementFlag)
|
||||
.ToArray());
|
||||
var wrongAcknowledgement = SmokeCommandLine.Parse(
|
||||
complete.Select(value => value == SmokeCommandLine.PgmCutsSequenceAcknowledgementFlag
|
||||
? SmokeCommandLine.AcknowledgementFlag
|
||||
: value).ToArray());
|
||||
var parsed = SmokeCommandLine.Parse(complete);
|
||||
var explicitObservation = SmokeCommandLine.Parse(
|
||||
complete.Concat(["--observe-ms", "5000"]).ToArray());
|
||||
|
||||
Assert.False(missingAcknowledgement.IsValid);
|
||||
Assert.Equal("missing-acknowledgement", missingAcknowledgement.ErrorCode);
|
||||
Assert.False(wrongAcknowledgement.IsValid);
|
||||
Assert.Equal("unknown-option", wrongAcknowledgement.ErrorCode);
|
||||
Assert.True(parsed.IsValid);
|
||||
Assert.True(explicitObservation.IsValid);
|
||||
Assert.Equal(SmokeCommandKind.PgmCutsSequence, parsed.Invocation.Kind);
|
||||
Assert.Equal(5_000, parsed.Invocation.ObservationMilliseconds);
|
||||
Assert.Equal("C:\\Cuts", parsed.Invocation.SceneRoot);
|
||||
Assert.Null(parsed.Invocation.ConfigPath);
|
||||
Assert.Null(parsed.Invocation.PrepareSceneCode);
|
||||
Assert.Null(parsed.Invocation.NextSceneCode);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("--config")]
|
||||
[InlineData("--prepare")]
|
||||
[InlineData("--next")]
|
||||
public void Parse_PgmCutsSequenceRejectsConfigAndCallerSelectedScenes(string option)
|
||||
{
|
||||
var parsed = SmokeCommandLine.Parse(
|
||||
ValidPgmCutsArguments().Concat([option, "sensitive-value"]).ToArray());
|
||||
|
||||
Assert.False(parsed.IsValid);
|
||||
Assert.Equal("unknown-option", parsed.ErrorCode);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("4999")]
|
||||
[InlineData("5001")]
|
||||
[InlineData("secret")]
|
||||
public void Parse_PgmCutsSequenceOnlyAcceptsExplicitFiveSecondObservation(string value)
|
||||
{
|
||||
var parsed = SmokeCommandLine.Parse(
|
||||
ValidPgmCutsArguments().Concat(["--observe-ms", value]).ToArray());
|
||||
|
||||
Assert.False(parsed.IsValid);
|
||||
Assert.Equal("invalid-observation-duration", parsed.ErrorCode);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("localhost", "C:\\Cuts")]
|
||||
[InlineData("192.0.2.1", "C:\\Cuts")]
|
||||
[InlineData("127.0.0.1", "relative-cuts")]
|
||||
public void Parse_PgmCutsSequenceRequiresLiteralLoopbackAndAbsoluteSceneRoot(
|
||||
string host,
|
||||
string sceneRoot)
|
||||
{
|
||||
var arguments = ValidPgmCutsArguments();
|
||||
arguments[Array.IndexOf(arguments, "127.0.0.1")] = host;
|
||||
arguments[Array.IndexOf(arguments, "C:\\Cuts")] = sceneRoot;
|
||||
|
||||
var parsed = SmokeCommandLine.Parse(arguments);
|
||||
|
||||
Assert.False(parsed.IsValid);
|
||||
Assert.Equal("missing-or-invalid-required-option", parsed.ErrorCode);
|
||||
}
|
||||
|
||||
private static SmokeCommandParseResult ValidSequenceArguments(
|
||||
string prepare = "5001",
|
||||
string observation = "1000") =>
|
||||
@@ -279,4 +352,18 @@ public sealed class SmokeCommandLineTests
|
||||
"--observe-ms",
|
||||
observation
|
||||
]);
|
||||
|
||||
private static string[] ValidPgmCutsArguments() =>
|
||||
[
|
||||
"--pgm-cuts-sequence",
|
||||
SmokeCommandLine.PgmCutsSequenceAcknowledgementFlag,
|
||||
"--host",
|
||||
"127.0.0.1",
|
||||
"--port",
|
||||
"30001",
|
||||
"--expected-pgm-window-title",
|
||||
"Tornado2 PGM",
|
||||
"--scene-root",
|
||||
"C:\\Cuts"
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user