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); }