public void Should_Detect_Required_VariableLists() { var optionSet = new RequiredValuesOptionSet(); var n = optionSet.AddRequiredVariableList <string>("n", ""); var a = optionSet.AddRequiredVariableList <int>("a", ""); var m = optionSet.AddRequiredVariableList <string>("m", ""); //TODO: Screaming for an NUnit-test-case-coverage. var args = "-n FindThisString -n:Findit2 -n:Findit3 -a2 -a3 -a5565 -a:23".Split(' '); optionSet.Parse(args); Action <IEnumerable <string> > verifyN = x => { // ReSharper disable PossibleMultipleEnumeration Assert.AreEqual(3, x.Count()); Assert.IsTrue(x.Contains("FindThisString")); Assert.IsTrue(x.Contains("Findit2")); Assert.IsTrue(x.Contains("Findit3")); // ReSharper restore PossibleMultipleEnumeration }; Action <IEnumerable <int> > verifyA = x => { // ReSharper disable PossibleMultipleEnumeration Assert.AreEqual(4, x.Count()); Assert.IsTrue(x.Contains(2)); Assert.IsTrue(x.Contains(3)); Assert.IsTrue(x.Contains(5565)); Assert.IsTrue(x.Contains(23)); // ReSharper restore PossibleMultipleEnumeration }; Action <IEnumerable <string> > verifyM = x => { // ReSharper disable PossibleMultipleEnumeration Assert.AreEqual(0, x.Count()); Assert.AreEqual(1, optionSet.GetMissingVariables().Count()); // ReSharper restore PossibleMultipleEnumeration }; verifyA(a); verifyA(a.Values); verifyN(n); verifyN(n.Values); verifyM(m); verifyM(m.Values); }
public void Should_Detect_Required_Variables() { var optionSet = new RequiredValuesOptionSet(); var name = optionSet.AddRequiredVariable <string>("n", ""); var age = optionSet.AddRequiredVariable <int>("a", ""); var age2 = optionSet.AddRequiredVariable <int>("b", ""); var age3 = optionSet.AddRequiredVariable <int>("c", ""); //TODO: Screaming for NUnit-test-case-coverage. var args = "-n FindThisString".Split(' '); optionSet.Parse(args); /* TODO: Might could (should) also verify that each of the missing ones, * as well as found ones, are either there are not there. */ Assert.AreEqual(3, optionSet.GetMissingVariables().Count()); Assert.AreEqual("FindThisString", name); }
public void Should_Respond_To_Help_Arg() { var optionSet = new RequiredValuesOptionSet(); //Add a non-required variable because we want to verify the help-arg. var name = optionSet.AddVariable <string>("n", ""); const string HelpPrototype = "?"; const string Description = "TESTMODE"; var cm = new ConsoleManager("Test", optionSet, HelpPrototype, Description); using (var writer = new StringWriter()) { var parsed = cm.TryParseOrShowHelp(writer, new[] { HelpPrototype, }); Assert.IsFalse(parsed); Assert.IsTrue(writer.ToString().Contains(Description)); } }
public void Should_Respond_To_Missing_Required_VariableLists_With_Show_Help() { var optionSet = new RequiredValuesOptionSet(); //Populate the OptionSet with some nominal options. var n = optionSet.AddRequiredVariableList <string>("n", ""); var a = optionSet.AddRequiredVariableList <int>("a", ""); var m = optionSet.AddRequiredVariableList <string>("m", ""); const string ConsoleName = "Test"; var cm = new ConsoleManager(ConsoleName, optionSet); using (var writer = new StringWriter()) { var parsed = cm.TryParseOrShowHelp(writer, new string[] { }); Assert.IsFalse(parsed); Assert.IsTrue(writer.ToString().Contains(ConsoleName + ": error parsing arguments:")); } }
public void Show_Show_Help_For_Remaining_Args() { var optionSet = new RequiredValuesOptionSet(); //This one can be a required-variable, no problem, but that's it. var name = optionSet.AddRequiredVariable <string>("n"); const string ConsoleName = "Test"; var cm = new ConsoleManager(ConsoleName, optionSet); //Then we should have some remaining args. var args = "-n ThisIsName UnknownOptionCausesErrorShowHelp".Split(' '); using (var writer = new StringWriter()) { var parsed = cm.TryParseOrShowHelp(writer, args); Assert.IsFalse(parsed); // Test contains Visual Studio error message Assert.IsTrue(writer.ToString().Contains(ConsoleName + ": error parsing arguments:")); } }
/// <summary> /// Initializes a new instance of the <see cref="ConsoleManager"/> class. /// </summary> /// <param name="optionSet">An OptionSet.</param> /// <param name="consoleName">Name of the console.</param> /// <param name="helpInfo">The help info.</param> private ConsoleManager(RequiredValuesOptionSet optionSet, string consoleName, HelpInfo helpInfo) { ConsoleName = consoleName; _optionSet = optionSet; _helpInfo = helpInfo; }
/// <summary> /// Initializes a new instance of the <see cref="ConsoleManager"/> /// class using a specified value for HelpInfo prototype and description. /// </summary> /// <param name="consoleName">Name of the console.</param> /// <param name="optionSet">An OptionSet.</param> /// <param name="helpPrototype">The Help prototype. Informs a Switch with its Prototype.</param> /// <param name="helpDescription">The help description.</param> public ConsoleManager(string consoleName, RequiredValuesOptionSet optionSet, string helpPrototype = "?", string helpDescription = "Show the help") : this(optionSet, consoleName, new HelpInfo(optionSet, helpPrototype, helpDescription)) { }