-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCommandsRunnerTests.cs
69 lines (61 loc) · 2.81 KB
/
CommandsRunnerTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace CSharpInteractive.Tests;
using System.Diagnostics.CodeAnalysis;
[SuppressMessage("Usage", "xUnit1042:The member referenced by the MemberData attribute returns untyped data rows")]
public class CommandsRunnerTests
{
private readonly Mock<ICommandRunner> _commandRunner1;
private readonly Mock<ICommandRunner> _commandRunner2;
private readonly Mock<IStatisticsRegistry> _statisticsRegistry;
private readonly Mock<IDisposable> _statisticsToken;
public CommandsRunnerTests()
{
_commandRunner1 = new Mock<ICommandRunner>();
_commandRunner1.Setup(i => i.TryRun(HelpCommand.Shared)).Returns(new CommandResult(HelpCommand.Shared, true));
_commandRunner1.Setup(i => i.TryRun(ResetCommand.Shared)).Returns(new CommandResult(HelpCommand.Shared, null));
_commandRunner1.Setup(i => i.TryRun(new CodeCommand(false))).Returns(new CommandResult(new CodeCommand(), null));
_commandRunner2 = new Mock<ICommandRunner>();
_commandRunner2.Setup(i => i.TryRun(ResetCommand.Shared)).Returns(new CommandResult(ResetCommand.Shared, false));
_commandRunner2.Setup(i => i.TryRun(HelpCommand.Shared)).Returns(new CommandResult(HelpCommand.Shared, null));
_commandRunner2.Setup(i => i.TryRun(new CodeCommand(false))).Returns(new CommandResult(new CodeCommand(), null));
_statisticsToken = new Mock<IDisposable>();
_statisticsRegistry = new Mock<IStatisticsRegistry>();
_statisticsRegistry.Setup(i => i.Start()).Returns(_statisticsToken.Object);
}
[Theory]
[MemberData(nameof(Data))]
internal void ShouldRunCommands(ICommand[] commands, CommandResult[] expectedResults)
{
// Given
var runner = CreateInstance();
// When
var actualResults = runner.Run(commands).ToArray();
// Then
actualResults.ShouldBe(expectedResults);
_statisticsToken.Verify(i => i.Dispose());
}
public static IEnumerable<object?[]> Data => new List<object?[]>
{
new object[]
{
new[] {HelpCommand.Shared},
new[] {new CommandResult(HelpCommand.Shared, true)}
},
new object[]
{
new[] {ResetCommand.Shared},
new[] {new CommandResult(ResetCommand.Shared, false)}
},
new object[]
{
new[] {new CodeCommand()},
new[] {new CommandResult(new CodeCommand(), null)}
},
new object[]
{
new[] {new CodeCommand(), HelpCommand.Shared, ResetCommand.Shared},
new[] {new CommandResult(new CodeCommand(), null), new CommandResult(HelpCommand.Shared, true), new CommandResult(ResetCommand.Shared, false)}
}
};
private CommandsRunner CreateInstance() =>
new([_commandRunner1.Object, _commandRunner2.Object], _statisticsRegistry.Object);
}