public void TestBasicParsing()
        {
            ArgumentsBasicTarget target = new ArgumentsBasicTarget();
            CommandLineParser parser = new CommandLineParser(typeof(ArgumentsBasic), null, CommandLineParserFlags.Default);
            string[] args = new string[]
            {
                "-arg1:valueForArg1",
                "-a2:One",
                "-arg2:Two",
                "-arg3:Alpha",
                "-arg3:Beta",
                "-arg4+",
                "-arg5:10",
                "-arg7:a=1;b=2",
                "-arg8:blah.txt",
                "-arg9:blah.txt",
                "something.txt"
            };

            parser.ParseAndSetTarget(args, target);

            Assert.AreEqual(target.Arg1, "valueForArg1");
            CollectionAssert.AreEqual(new string[] { "One", "Two" }, target.Arg2);
            CollectionAssert.AreEqual(new string[] { "Alpha", "Beta" }, target.Arg3);
            Assert.AreEqual(true, target.Arg4);
            Assert.AreEqual(10, target.Arg5);
            Assert.AreEqual(false, target.Arg6);
            CollectionAssert.AreEquivalent(new KeyValuePair<string, string>[]
                { new KeyValuePair<string, string>("a", "1"), new KeyValuePair<string, string>("b", "2") }, target.Arg7.Parameters);
            Assert.AreEqual("blah.txt", target.Arg8.ToString());
            Assert.AreEqual("blah.txt", target.Arg9.ToString());
            Assert.AreEqual(11, parser.ArgumentCount);
            Assert.AreEqual(" -arg1:valueForArg1 -arg2:One -arg2:Two -arg3:Alpha -arg3:Beta -arg4 -arg5:10 -arg7:a=1;b=2 -arg8:blah.txt -arg9:blah.txt something.txt", parser.Arguments);
        }
        public void TestGetTarget()
        {
            ArgumentsBasicTarget target = new ArgumentsBasicTarget();
            CommandLineParser parser = new CommandLineParser(typeof(ArgumentsBasic), null, CommandLineParserFlags.Default);

            target.Arg1 = "valueForArg1";
            target.Arg2 = new string[] { "One", "Two" };

            List<string> arg3 = new List<string>();
            arg3.Add("Alpha");
            arg3.Add("Beta");

            target.Arg3 = arg3;
            target.Arg4 = true;
            target.Arg5 = 10;
            target.Arg6 = false;

            CustomType arg7 = new CustomType();

            arg7.Parameters.Add("a", "1");
            arg7.Parameters.Add("b", "2");

            target.Arg7 = arg7;
            target.Arg8 = new FileInfo("blah.txt");
            target.Arg9 = new ParsedPath("blah.txt", PathType.File);
            target.Default = "something.txt";

            parser.GetTargetArguments(target);

            // NOTE: Not setting arguments #10 and #11

            Assert.AreEqual(13, parser.ArgumentCount);
            Assert.AreEqual(" -arg1:valueForArg1 -arg2:One -arg2:Two -arg3:Alpha -arg3:Beta -arg4 -arg5:10 -arg7:a=1;b=2 -arg8:blah.txt -arg9:blah.txt -arg11:0 something.txt", parser.Arguments);
        }
 public void TestArgumentNoDescription()
 {
     ArgumentsBasicTarget target = new ArgumentsBasicTarget();
     // The target object is not derived from the given argument specification type...
     new CommandLineParser(typeof(ArgumentsNoDescription)).ParseAndSetTarget(null, target);
 }
        public void TestNullable()
        {
            ArgumentsBasicTarget target = new ArgumentsBasicTarget();
            CommandLineParser parser = new CommandLineParser(typeof(ArgumentsBasic), null, CommandLineParserFlags.Default);
            string[] args = new string[]
            {
                "-arg12:10"
            };

            parser.ParseAndSetTarget(args, target);
            Assert.AreEqual(10, target.Arg12);
        }