Esempio n. 1
0
        public void TestBadCommand()
        {
            ArgumentsWithCommand target = new ArgumentsWithCommand();
            CommandLineParser parser = new CommandLineParser(target.GetType());
            string[] args = { "unknown" };

            parser.Parse(args);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }