public void Test_Multiple_Arguments(string argumentValueSeparator, string sigil, string firstArgument, string secondArgument,
            string firstArgumentExpectedOutput, string secondArgumentExpectedOutput, Type escapeHandlerType)
        {
            // Arrange
            var s = sigil;
            var escapeHandler = Activator.CreateInstance(escapeHandlerType, new object[] { sigil }) as IArgumentEscapeHandler;
            var builder = new ProcessArgumentBuilder(escapeHandler, argumentValueSeparator);
            builder.AddOption($"{s}help");
            builder.AddNamedArgument($"{s}f", firstArgument);
            builder.AddNamedArgument($"{s}o", secondArgument, "=");

            // Act
            var result = builder.Build();

            // Assert
            Assert.Equal($"{s}help {s}f{argumentValueSeparator}{firstArgumentExpectedOutput} {s}o={secondArgumentExpectedOutput}", result);
        }
        public void Test_Multiple_Arguments(string argumentValueSeparator, string sigil, string firstArgument, string secondArgument,
                                            string firstArgumentExpectedOutput, string secondArgumentExpectedOutput, Type escapeHandlerType)
        {
            // Arrange
            var s             = sigil;
            var escapeHandler = Activator.CreateInstance(escapeHandlerType, new object[] { sigil }) as IArgumentEscapeHandler;
            var builder       = new ProcessArgumentBuilder(escapeHandler, argumentValueSeparator);

            builder.AddOption($"{s}help");
            builder.AddNamedArgument($"{s}f", firstArgument);
            builder.AddNamedArgument($"{s}o", secondArgument, "=");

            // Act
            var result = builder.Build();

            // Assert
            Assert.Equal($"{s}help {s}f{argumentValueSeparator}{firstArgumentExpectedOutput} {s}o={secondArgumentExpectedOutput}", result);
        }
        public void Test_ToStringSafe(string argumentValueSeparator, string argumentValue, bool isSensitive, string expected, Type escapeHandlerType, string sigil)
        {
            // Arrange
            var escapeHandler = Activator.CreateInstance(escapeHandlerType, new object[] { sigil }) as IArgumentEscapeHandler;
            var builder       = new ProcessArgumentBuilder(escapeHandler, argumentValueSeparator);

            builder.AddNamedArgument("-p", argumentValue, isSensitiveArgument: isSensitive);

            // Act
            var result = builder.BuildSafe(SAFE_PLACEHOLDER);

            // Assert
            Assert.Equal(expected, result);
        }
        public void Test_ToStringSafe(string argumentValueSeparator, string argumentValue, bool isSensitive, string expected, Type escapeHandlerType, string sigil)
        {
            // Arrange
            var escapeHandler = Activator.CreateInstance(escapeHandlerType, new object[] { sigil }) as IArgumentEscapeHandler;
            var builder = new ProcessArgumentBuilder(escapeHandler, argumentValueSeparator);
            builder.AddNamedArgument("-p", argumentValue, isSensitiveArgument: isSensitive);

            // Act
            var result = builder.BuildSafe(SAFE_PLACEHOLDER);

            // Assert
            Assert.Equal(expected, result);
        }