public void CompleteAnswerFilePathButNoPrefixAvailable() { var reader = Substitute.For<IFileSystemReader>(); reader.EnumerateFileSystemEntries(Arg.Any<string>(), Arg.Any<string>()).Returns(new[] { ".\\FooBar", ".\\Foo.txt" }); var options = new CommandLineParserOptions { FileSystemReader = reader }; var completions = CommandLineParser.GetCompletions(typeof(ArgsWithNoAnswerFile), new[] { "@.\\Foo" }, 0, options).ToList(); completions.Should().BeEmpty(); }
public void CompleteAnswerFilePath() { var reader = Substitute.For<IFileSystemReader>(); reader.EnumerateFileSystemEntries(Arg.Any<string>(), Arg.Any<string>()).Returns(new[] { ".\\FooBar", ".\\Foo.txt" }); var options = new CommandLineParserOptions { FileSystemReader = reader }; var completions = CommandLineParser.GetCompletions(typeof(SimpleArgs), new[] { "@.\\Foo" }, 0, options).ToList(); completions.Should().ContainInOrder("@.\\FooBar", "@.\\Foo.txt"); reader.Received().EnumerateFileSystemEntries(".", "Foo*"); }
public void FileDoesNotExist() { var reader = CreateReaderThatThrows(new FileNotFoundException()); var options = new CommandLineParserOptions { FileSystemReader = reader }; CommandLineParser.Parse( new[] { "@foo" }, new Arguments(), options).Should().BeFalse(); reader.Received().GetLines("foo"); }
public void FileWithValidArgs() { var args = new Arguments(); var reader = CreateReaderThatReturns(new[] { "/intvalue:17", "/stringvalue:a b" }); var options = new CommandLineParserOptions { FileSystemReader = reader }; CommandLineParser.Parse( new[] { "@foo" }, args, options).Should().BeTrue(); reader.Received().GetLines("foo"); args.IntValue.Should().Be(17); args.StringValue.Should().Be("a b"); }
public void FileIsEmpty() { var args = new Arguments(); var reader = CreateReaderThatReturns(Enumerable.Empty<string>()); var options = new CommandLineParserOptions { FileSystemReader = reader }; CommandLineParser.Parse( new[] { "@foo" }, args, options).Should().BeTrue(); reader.Received().GetLines("foo"); args.IntValue.Should().Be(0); args.StringValue.Should().BeNull(); }
internal static Argument GetArgument(Type type, string fieldName = "Value") { var argField = type.GetField(fieldName); var attrib = argField.GetSingleAttribute<ArgumentBaseAttribute>(); attrib.Should().NotBeNull(); var options = new CommandLineParserOptions { FileSystemReader = FileSystemReader.Create(), Reporter = err => { } }; return new Argument(new MutableFieldInfo(argField), attrib, options); }
public void AlternateSyntax() { var args = new AlternateSyntaxArguments(); var reader = CreateReaderThatReturns(new[] { "/value:abc" }); var options = new CommandLineParserOptions { FileSystemReader = reader }; CommandLineParser.Parse(new[] { "@foo" }, args, options).Should().BeFalse(); reader.DidNotReceive().GetLines("foo"); CommandLineParser.Parse(new[] { "#!foo" }, args, options).Should().BeTrue(); reader.Received().GetLines("foo"); args.Value.Should().Be("abc"); }
public void MustNotExist() { var args = new NotExistsArguments(); CommandLineParser.Parse(new string[] { }, args).Should().BeTrue(); var reader = Substitute.For<IFileSystemReader>(); var options = new CommandLineParserOptions { FileSystemReader = reader }; reader.FileExists(@"h:\temp").Returns(false); reader.DirectoryExists(@"h:\temp").Returns(false); CommandLineParser.Parse(new[] { @"/value=h:\temp" }, args, options).Should().BeTrue(); reader.FileExists(@"h:\temp").Returns(true); reader.DirectoryExists(@"h:\temp").Returns(false); CommandLineParser.Parse(new[] { @"/value=h:\temp" }, args, options).Should().BeFalse(); reader.FileExists(@"h:\temp").Returns(false); reader.DirectoryExists(@"h:\temp").Returns(true); CommandLineParser.Parse(new[] { @"/value=h:\temp" }, args, options).Should().BeFalse(); }