[Test] //   subject             scenario            result
            public void ReturnParameterList_OneArgumentSupplied_ArgumentReturned()
            {
                // arrange
                string expected = "arg1";

                clo.AddNonOption(expected);

                // act
                string result = clo.GetNonOptions().Single();

                // assert
                Assert.AreEqual(result, expected);
            }
            public void ProcessArgs_TwoNonOptionsSupplied_TwoNonOptionsReturned()
            {
                // arrange
                CommandLineOptions expected = new CommandLineOptions();
                string             nOArg1   = "hello.txt";
                string             nOArg2   = "goodbye.txt";

                expected.AddNonOption(nOArg1);
                expected.AddNonOption(nOArg2);
                string[] args = { nOArg1, nOArg2 };

                // act
                actual = clp.ProcessArgs(args);

                // assert
                Assert.AreEqual(expected.GetNonOptions().Count(), actual.GetNonOptions().Count());
                Assert.AreEqual(expected.GetNonOptions().First(), actual.GetNonOptions().First());
                Assert.AreEqual(expected.GetOptionCount(), actual.GetOptionCount());
            }
            public void ProcessArgs_TwoOptionsAndOneNonOptionSupplied_OptionNonOptionAndOptionReturned()
            {
                // arrange
                CommandLineOptions expected = new CommandLineOptions();
                string             nOArg1   = "abc.jg";
                string             nOArg2   = "-b";
                string             nOArg3   = "hello.txt";

                expected.AddNonOption(nOArg1);
                expected.SetOption(nOArg2.ElementAt(1), OptionNoArgument.ToString());
                expected.AddNonOption(nOArg3);
                string[] args = { nOArg1, nOArg2, nOArg3 };

                // act
                actual = clp.ProcessArgs(args);

                // assert
                CollectionAssert.AreEqual(expected.GetNonOptions(), actual.GetNonOptions());
                Assert.AreEqual(expected.GetOptionCount(), actual.GetOptionCount());
                Assert.AreEqual(expected.GetOption(nOArg2.ElementAt(1)), actual.GetOption(nOArg2.ElementAt(1)));
            }
            public void ProcessArgs_OneNonOptionSupplied_OneNonOptionReturned()
            {
                // arrange
                CommandLineOptions expected = new CommandLineOptions();
                string             nOArg1   = "hello.txt";

                expected.AddNonOption(nOArg1);
                string[] args = { nOArg1 };

                // act
                actual = clp.ProcessArgs(args);

                // assert
                Assert.AreEqual(expected.GetNonOptions().Single(), actual.GetNonOptions().Single());
                Assert.AreEqual(expected.GetOptionCount(), actual.GetOptionCount());
            }
            public void ProcessArgs_OneOptionWithArgumentWhenArgumentNotRequired_OptionNonOptionAndOptionReturned()
            {
                // arrange
                CommandLineOptions expected    = new CommandLineOptions();
                string             nOArg1      = "-a";
                string             nOArg1Value = "fooba.doc";

                expected.SetOption(nOArg1.ElementAt(1), OptionNoArgument.ToString());
                expected.AddNonOption(nOArg1Value);
                string[] args = { nOArg1 + nOArg1Value };

                // act
                actual = clp.ProcessArgs(args);

                // assert
                CollectionAssert.AreEqual(expected.GetNonOptions(), actual.GetNonOptions());
                Assert.AreEqual(expected.GetOptionCount(), actual.GetOptionCount());
                Assert.AreEqual(expected.GetOption(nOArg1.ElementAt(1)), actual.GetOption(nOArg1.ElementAt(1)));
            }
            public void ProcessArgs_TwoOptionsAndOneNonOptionSupplied_TwoOptionsAndOneNonOptionReturned()
            {
                // arrange
                CommandLineOptions expected = new CommandLineOptions();
                string nOArg1 = "-a";
                string nOArg2 = "-b";
                string nOArg3 = "hello.txt";
                expected.SetOption(nOArg1.ElementAt(1), OptionNoArgument.ToString());
                expected.SetOption(nOArg2.ElementAt(1), OptionNoArgument.ToString());
                expected.AddNonOption(nOArg3);
                string[] args = { nOArg1, nOArg2, nOArg3 };

                // act
                actual = clp.ProcessArgs(args);

                // assert
                CollectionAssert.AreEqual(expected.GetNonOptions(), actual.GetNonOptions());
                Assert.AreEqual(expected.GetOptionCount(), actual.GetOptionCount());
                Assert.AreEqual(expected.GetOption(nOArg1.ElementAt(1)), actual.GetOption(nOArg1.ElementAt(1)));
            }
            public void ProcessArgs_TwoNonOptionsSupplied_TwoNonOptionsReturned()
            {
                // arrange
                CommandLineOptions expected = new CommandLineOptions();
                string nOArg1 = "hello.txt";
                string nOArg2 = "goodbye.txt";
                expected.AddNonOption(nOArg1);
                expected.AddNonOption(nOArg2);
                string[] args = { nOArg1, nOArg2 };

                // act
                actual = clp.ProcessArgs(args);

                // assert
                Assert.AreEqual(expected.GetNonOptions().Count(), actual.GetNonOptions().Count());
                Assert.AreEqual(expected.GetNonOptions().First(), actual.GetNonOptions().First());
                Assert.AreEqual(expected.GetOptionCount(), actual.GetOptionCount());
            }
            public void ProcessArgs_OneOptionWithArgumentWhenArgumentNotRequired_OptionNonOptionAndOptionReturned()
            {
                // arrange
                CommandLineOptions expected = new CommandLineOptions();
                string nOArg1 = "-a";
                string nOArg1Value = "fooba.doc";
                expected.SetOption(nOArg1.ElementAt(1), OptionNoArgument.ToString());
                expected.AddNonOption(nOArg1Value);
                string[] args = { nOArg1+nOArg1Value };

                // act
                actual = clp.ProcessArgs(args);

                // assert
                CollectionAssert.AreEqual(expected.GetNonOptions(), actual.GetNonOptions());
                Assert.AreEqual(expected.GetOptionCount(), actual.GetOptionCount());
                Assert.AreEqual(expected.GetOption(nOArg1.ElementAt(1)), actual.GetOption(nOArg1.ElementAt(1)));
            }
            public void ProcessArgs_OneNonOptionSupplied_OneNonOptionReturned()
            {
                // arrange
                CommandLineOptions expected = new CommandLineOptions();
                string nOArg1 = "hello.txt";
                expected.AddNonOption(nOArg1);
                string[] args = { nOArg1 };

                // act
                actual = clp.ProcessArgs(args);

                // assert
                Assert.AreEqual(expected.GetNonOptions().Single(), actual.GetNonOptions().Single());
                Assert.AreEqual(expected.GetOptionCount(), actual.GetOptionCount());
            }