public void HelpArguments()
        {
            var    mock = new CommandLineTest.MockCommand();
            string log  = null;

            var command = new Program.Command("cmd", mock.Provider, "");

            command.DetailedHelp(s => { if (!string.IsNullOrWhiteSpace(s))
                                        {
                                            log = s;
                                        }
                                 });
            Assert.AreEqual("-cmd: takes any number of arguments", log);

            command = new Program.Command("cmd", mock.Provider, "", nArgs: 0);
            command.DetailedHelp(s => { if (!string.IsNullOrWhiteSpace(s))
                                        {
                                            log = s;
                                        }
                                 });
            Assert.AreEqual("-cmd: (no argument)", log);

            command = new Program.Command("cmd", mock.Provider, "", nArgs: 1);
            command.DetailedHelp(s => { if (!string.IsNullOrWhiteSpace(s))
                                        {
                                            log = s;
                                        }
                                 });
            Assert.AreEqual("-cmd: takes 1 argument", log);

            command = new Program.Command("cmd", mock.Provider, "", nArgs: 3);
            command.DetailedHelp(s => { if (!string.IsNullOrWhiteSpace(s))
                                        {
                                            log = s;
                                        }
                                 });
            Assert.AreEqual("-cmd: takes 3 arguments", log);

            command = new Program.Command("cmd", mock.Provider, "", minArgs: 2);
            command.DetailedHelp(s => { if (!string.IsNullOrWhiteSpace(s))
                                        {
                                            log = s;
                                        }
                                 });
            Assert.AreEqual("-cmd: takes at least 2 arguments", log);

            command = new Program.Command("cmd", mock.Provider, "", maxArgs: 1);
            command.DetailedHelp(s => { if (!string.IsNullOrWhiteSpace(s))
                                        {
                                            log = s;
                                        }
                                 });
            Assert.AreEqual("-cmd: takes up to 1 argument", log);

            command = new Program.Command("cmd", mock.Provider, "", maxArgs: 4);
            command.DetailedHelp(s => { if (!string.IsNullOrWhiteSpace(s))
                                        {
                                            log = s;
                                        }
                                 });
            Assert.AreEqual("-cmd: takes up to 4 arguments", log);

            command = new Program.Command("cmd", mock.Provider, "", minArgs: 2, maxArgs: 4);
            command.DetailedHelp(s => { if (!string.IsNullOrWhiteSpace(s))
                                        {
                                            log = s;
                                        }
                                 });
            Assert.AreEqual("-cmd: takes 2-4 arguments", log);
        }