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:"));
            }
        }
Пример #6
0
 /// <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;
 }
Пример #7
0
 /// <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))
 {
 }