public void CommandFactory_Should_ReturnAppropriateDefaultCommand([ValueSource(nameof(CommandSelectionSuccessful))] CommandFactoryFixture data) { // Arrange var commandMockArray = new Mock<ICommand<object>>[data.CommandNames.Length]; var expectedCommand = null as ICommand<object>; for (var i = 0; i < data.CommandNames.Length; ++i) { var name = data.CommandNames[i]; commandMockArray[i] = new Mock<ICommand<object>>(); commandMockArray[i].Setup(x => x.Name).Returns(name); if (name == data.NameOfDefaultCommand) { expectedCommand = commandMockArray[i].Object; } } var commandArrayMock = commandMockArray.Select(x => x.Object).ToArray(); var objectUnderTest = new CommandFactory<object>(commandArrayMock, data.NameOfDefaultCommand); // Act var command = objectUnderTest.GetCommand(null as string); // Assert Assert.AreEqual(expectedCommand, command); }
public void CommandFactory_Should_AlwaysProvideValidSequenceOfCommands([ValueSource(nameof(CommandSelectionSuccessful))] CommandFactoryFixture data) { // Arrange var commandMockArray = new Mock<ICommand<object>>[data.CommandNames.Length]; for (var i = 0; i < data.CommandNames.Length; ++i) { var name = data.CommandNames[i]; commandMockArray[i] = new Mock<ICommand<object>>(); commandMockArray[i].Setup(x => x.Name).Returns(name); } var commandArrayMock = commandMockArray.Select(x => x.Object).ToArray(); var objectUnderTest = new CommandFactory<object>(commandArrayMock, data.NameOfDefaultCommand); // Act var commands = objectUnderTest.Commands; // Assert foreach (var command in commandArrayMock) { Assert.IsTrue(commands.Any(x => x == command)); } }
public void CommandFactory_Should_ThrowArgumentOutOfRangeExceptionOnInvalidNameOfDefaultCommand([ValueSource(nameof(CommandSelectionInvalidNameOfDefaultCommand))] CommandFactoryFixture data) { // Arrange var commandMockArray = new Mock<ICommand<object>>[data.CommandNames.Length]; for (var i = 0; i < data.CommandNames.Length; ++i) { var name = data.CommandNames[i]; commandMockArray[i] = new Mock<ICommand<object>>(); commandMockArray[i].Setup(x => x.Name).Returns(name); } var commandArrayMock = commandMockArray.Select(x => x.Object).ToArray(); // Act Assert.Throws<ArgumentOutOfRangeException>(() => new CommandFactory<object>(commandArrayMock, data.NameOfDefaultCommand)); // Assert }
public void CommandFactory_Should_ThrowDuplicateNameExceptionWhenCommandsWithEqualNamesArePassed([ValueSource(nameof(CommandSelectionDuplicates))] CommandFactoryFixture data) { // Arrange var commandMockArray = new Mock<ICommand<object>>[data.CommandNames.Length]; for (var i = 0; i < data.CommandNames.Length; ++i) { var name = data.CommandNames[i]; commandMockArray[i] = new Mock<ICommand<object>>(); commandMockArray[i].Setup(x => x.Name).Returns(name); } var commandArrayMock = commandMockArray.Select(x => x.Object).ToArray(); // Act Assert.Throws<DuplicateNameException>(() => new CommandFactory<object>(commandArrayMock, data.NameOfDefaultCommand)); // Assert }