public void EvalArgless()
        {
            var interp = new CommandInterpreter();
            int ran = 0;
            interp.AddCommand("run", new Action(() => ran++));

            interp.Eval("run");
            Assert.AreEqual(1, ran);
        }
        public void EvalFromMethodInfo()
        {
            var io = new StringWriter();
            var interp = new CommandInterpreter(io, io);
            var obj = new CommandObj();
            interp.AddCommand("Plus", obj);

            interp.Eval("Plus 2 2");
            Assert.AreEqual("4\r\n", io.ToString());
        }
        public void EvalFromAction()
        {
            var io = new StringWriter();
            var interp = new CommandInterpreter(io, io);
            var obj = new CommandObj();
            interp.AddCommand("plus", new Action<TextWriter, int, int>(obj.AsyncPlus));

            interp.Eval("plus 2 2");
            Assert.AreEqual("4", io.ToString());
        }
        public void EvalAsyncArgless()
        {
            var io = new StringWriter();
            var interp = new CommandInterpreter(io, io);
            var obj = new CommandObj();
            interp.AddCommand("say", new Action<TextWriter>(obj.AsyncArgless));

            interp.Eval("say");
            Assert.AreEqual("hi", io.ToString());
        }
        public void Eval()
        {
            var io = new StringWriter();
            var interp = new CommandInterpreter(io, io);
            var args = new CommandArg() { Type = typeof(int) }.And(new CommandArg() { Type = typeof(int) });
            interp.AddCommand("plus", args, (o, e, c) => o.WriteLine(c["0"].ConvertTo<int>() + c["1"].ConvertTo<int>()));

            interp.Eval("plus 2 2");
            Assert.AreEqual("4\r\n", io.ToString());
        }
Exemple #6
0
        public void TestCommandFilters()
        {
            string             result;
            CommandInterpreter ci = new CommandInterpreter(DefaultCommands.None, new TestCommands(), typeof(StaticTestFilter));

            Assert.AreEqual(1, ci.Filters.Length);
            Assert.AreEqual("AddLineNumbers", ci.Filters[0].DisplayName);

            result = Capture(ci, "Count 2 /linenumbers");
            Assert.AreEqual("1: 1\r\n2: 2", result);

            int cmds = ci.Commands.Length;

            ci.AddCommand(ci.Filters[0]);
            Assert.AreEqual(cmds + 1, ci.Commands.Length);

            result = Capture(ci, "AddLineNumbers");
            Assert.AreEqual("2", result);
        }
        public void EvalFromSignature()
        {
            var io = new StringWriter();
            var interp = new CommandInterpreter(io, io);
            interp.AddCommand<int, int, int>("plus", (i, j) => i + j);

            interp.Eval("plus 2 2");
            Assert.AreEqual("4\r\n", io.ToString());
        }
        public void ParseErrors()
        {
            var interp = new CommandInterpreter(new StringWriter(), new StringWriter());
            interp.AddCommand<int, int, int>("plus", (i, j) => i + j);

            Assert.Throws<ParseException>(() => interp.Eval("plus 2 abc"));
        }
        public void EvalWithSwitch()
        {
            var interp = new CommandInterpreter(new StringWriter(), new StringWriter());
            var obj = new CommandObj();
            interp.AddCommand("plus", obj, "PlusSwitch");

            interp.Eval("plus 2 2");
            Assert.AreEqual("5\r\n", interp.Output.ToString());

            interp.Output = new StringWriter();
            interp.Eval("plus 2 2 -c 2");
            Assert.AreEqual("6\r\n", interp.Output.ToString());
        }
        public void EvalWithNullDefaults()
        {
            var io = new StringWriter();
            var interp = new CommandInterpreter(io, io);
            var commandObj = new CommandObj();
            interp.AddCommand("join", commandObj, "Join");

            interp.Eval("join");
            Assert.AreEqual("ab\r\n", io.ToString());
        }
        public void EvalWithFlag()
        {
            var io = new StringWriter();
            var interp = new CommandInterpreter(io, io);
            var obj = new CommandObj();
            interp.AddCommand("plus", obj, "PlusFlag");

            interp.Eval("plus 2 2");
            Assert.AreEqual("4\r\n", io.ToString());

            interp.Output = new StringWriter();
            interp.Eval("plus 2 2 --invert");
            Assert.AreEqual("-4\r\n", interp.Output.ToString());
        }