public void TestBadCommand() { ArgumentsWithCommand target = new ArgumentsWithCommand(); CommandLineParser parser = new CommandLineParser(target.GetType()); string[] args = { "unknown" }; parser.Parse(args); }
public void TestUsage() { CommandLineParser parser = new CommandLineParser(typeof(ArgumentsBasic), CommandLineParserFlags.Default); string usage = parser.Usage; Assert.IsTrue(Regex.IsMatch(usage, @"Syntax:\s*.+? \[switches\] <default>\r\n\r\nDescription:\s*.*\r\n\r\nSwitches:\r\n\r\n(^(/\w+)|(\s+).*\r\n)+(.*\r\n)+", RegexOptions.Multiline | RegexOptions.ExplicitCapture)); parser.CommandName = "AnythingYouWant"; Assert.AreEqual(parser.CommandName, "AnythingYouWant"); // Test multiple default arguments parser = new CommandLineParser(typeof(ArgumentsMultiDefaultNoArgs), null, CommandLineParserFlags.Default); Assert.IsTrue(Regex.IsMatch(parser.Usage, @"Syntax:\s*.+? <file> \[<file> \.\.\.\]", RegexOptions.Multiline | RegexOptions.ExplicitCapture)); // Test command based command line parser = new CommandLineParser(typeof(ArgumentsWithCommand)); // Capture the value or it's really hard to debug... usage = parser.GetUsage(null, 79); Debug.WriteLine(usage); Assert.IsTrue(Regex.IsMatch(usage, @"Syntax:\s*.+? <command> \.\.\.\r\n\r\nDescription:\s*.+\r\n\r\nCommands:\r\n\r\n((^ \w+\s+\S+\r\n)|(^\s+.+\r\n))+(^\s+.+)", RegexOptions.Multiline | RegexOptions.ExplicitCapture)); // Get usage for individual command usage = parser.GetUsage("start", 79); Debug.WriteLine(usage); Assert.IsTrue(Regex.IsMatch(usage, @"Syntax:\s*.+? start \[switches\] <default>\r\n\r\nDescription:\s*.+\r\n(^\s+.+\r\n)+\r\nSwitches:\r\n\r\n((^ \w+\s+\S+\r\n)|(^\s+.+\r\n))+(^\s+.+)", RegexOptions.Multiline | RegexOptions.ExplicitCapture)); ArgumentsWithCommand target = new ArgumentsWithCommand(); string[] args = { "help", "unknown" }; parser.ParseAndSetTarget(args, target); Assert.AreEqual("help", target.Command); Assert.AreEqual("unknown", target.Default); try { parser.GetUsage(target.Default); } catch (Exception e) { Assert.IsInstanceOf(typeof(CommandLineArgumentException), e); } }
public void TestCommands() { ArgumentsWithCommand target = new ArgumentsWithCommand(); CommandLineParser parser = new CommandLineParser(typeof(ArgumentsWithCommand)); string[] args1 = new string[] { "start", "default", "/arg2:blah" }; parser.ParseAndSetTarget(args1, target); Assert.AreEqual("start", target.Command); Assert.AreEqual("default", target.Default); CollectionAssert.AreEquivalent(new string[] {"blah"}, target.Arg2); }