public void CheckTrigger()
        {
            var mock = new CommandLineTest.MockCommand();

            var command = new Program.Command("antenna", mock.Provider, "", requiredTrigger: Program.CommandTrigger.Antenna);

            Assert.IsNotNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.Antenna));
            Assert.IsNotNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.User));
            Assert.IsNotNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.Cmd));

            command = new Program.Command("user", mock.Provider, "");
            Assert.IsNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.Antenna));
            Assert.IsNotNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.User));
            Assert.IsNotNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.Cmd));

            command = new Program.Command("cmd", mock.Provider, "", requiredTrigger: Program.CommandTrigger.Cmd);
            Assert.IsNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.Antenna));
            Assert.IsNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.User));
            Assert.IsNotNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.Cmd));
        }
        public void CheckInput()
        {
            var mock = new CommandLineTest.MockCommand();

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

            Assert.IsNotNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.Cmd));
            Assert.IsNotNull(command.Spawn(new List <string> {
                "a", "b", "c"
            }, this.log, null, this.manager, Program.CommandTrigger.Cmd));

            command = new Program.Command("fixed number of args", mock.Provider, "", nArgs: 3);
            Assert.IsNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.Cmd));
            Assert.IsNull(command.Spawn(new List <string> {
                "a", "b"
            }, this.log, null, this.manager, Program.CommandTrigger.Cmd));
            Assert.IsNotNull(command.Spawn(new List <string> {
                "a", "b", "c"
            }, this.log, null, this.manager, Program.CommandTrigger.Cmd));
            Assert.IsNull(command.Spawn(new List <string> {
                "a", "b", "c", "d"
            }, this.log, null, this.manager, Program.CommandTrigger.Cmd));

            command = new Program.Command("fixed number of args", mock.Provider, "", minArgs: 2, maxArgs: 4);
            Assert.IsNull(command.Spawn(new List <string>(), this.log, null, this.manager, Program.CommandTrigger.Cmd));
            Assert.IsNotNull(command.Spawn(new List <string> {
                "a", "b"
            }, this.log, null, this.manager, Program.CommandTrigger.Cmd));
            Assert.IsNotNull(command.Spawn(new List <string> {
                "a", "b", "c"
            }, this.log, null, this.manager, Program.CommandTrigger.Cmd));
            Assert.IsNotNull(command.Spawn(new List <string> {
                "a", "b", "c", "d"
            }, this.log, null, this.manager, Program.CommandTrigger.Cmd));
            Assert.IsNull(command.Spawn(new List <string> {
                "a", "b", "c", "d", "e"
            }, this.log, null, this.manager, Program.CommandTrigger.Cmd));
        }
        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);
        }
Exemple #4
0
        static (Program.Command, (FileInfo, FileInfo)[], Dictionary <string, string>) ParseArgsForMerge(IEnumerable <string> cargs, Program.Command command)
        {
            var    files       = new List <(FileInfo, FileInfo)>();
            var    mergefields = new Dictionary <string, string>(StringComparer.InvariantCultureIgnoreCase);
            var    oddeven     = OddEven.Even;
            string lastin      = null;

            foreach (var arg in cargs)
            {
                if (arg.Contains("="))
                {
                    var kv = arg.Split('=', 2);
                    mergefields.Add(kv[0], kv[1]);
                }
                else if (oddeven == OddEven.Even)
                {
                    lastin  = arg;
                    oddeven = OddEven.Odd;
                }
                else
                {
                    files.Add((new FileInfo(lastin), new FileInfo(arg)));
                    oddeven = OddEven.Even;
                }
            }

            return(command, files.ToArray(), mergefields);
        }
Exemple #5
0
 static (Program.Command, (FileInfo, FileInfo)[], Dictionary <string, string>) ParseArgsForShowXml(IEnumerable <string> cargs, Program.Command command)
 {
     return(command, cargs.Select(a => (new FileInfo(a), new FileInfo(a))).ToArray(), new Dictionary <string, string>());
 }