public void Invalid_Switch_Is_Invalid()
        {
            // Arrange
            var invalidComamndLineSwitch = string.Format("/XXX");

            var commandLineArguments = new Mock<ICommandLineArguments>();
            commandLineArguments.SetupSet(m => m.SuppressedWarnings = It.IsAny<IList<string>>()).Verifiable();

            var rule = new IsValidWarningSuppressionArgument(commandLineArguments.Object);

            // Act
            var isValid = rule.IsSatisfiedBy(new[] { invalidComamndLineSwitch });

            // Assert
            Assert.False(isValid);

            commandLineArguments.VerifySet(m => m.SuppressedWarnings = It.IsAny<IList<string>>(), Times.Never);
        }
        public void Single_Valid_Warning_Argument_Is_Recognised_Case_Insensitive()
        {
            // Arrange
            var expectedWarningsSuppressed = new[] { "ERROR" };
            var comamndLineSwitch = string.Format("/s{0}", string.Join(";", expectedWarningsSuppressed));

            var commandLineArguments = new Mock<ICommandLineArguments>();
            commandLineArguments.SetupSet(m => m.SuppressedWarnings = It.IsAny<IList<string>>()).Verifiable();

            var rule = new IsValidWarningSuppressionArgument(commandLineArguments.Object);

            // Act
            var isValid = rule.IsSatisfiedBy(new[] { comamndLineSwitch });

            // Assert
            Assert.True(isValid);

            commandLineArguments.VerifySet(m => m.SuppressedWarnings = It.Is<IList<string>>(l => l.SequenceEqual(expectedWarningsSuppressed)));
        }
 public void IsSatisfiedBy_Guards_Null_commandLineArguments()
 {
     var rule = new IsValidWarningSuppressionArgument(Mock.Of<ICommandLineArguments>());
     Assert.Throws<ArgumentNullException>(() => rule.IsSatisfiedBy(null));
 }