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 EvalFromAsyncMethodInfo()
        {
            var io = new StringWriter();
            var interp = new CommandInterpreter(io, io);
            var obj = new CommandObj();
            interp.AddCommand("plus", obj, "AsyncPlus");

            interp.Eval("plus 2 2");
            Assert.AreEqual("4", 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());
        }
        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 EvalWithStringListArg()
 {
     var io = new StringWriter();
     var interp = new CommandInterpreter(io, io, new CommandParser(), new CommandObj());
     interp.Eval("ListArg 1 2 --c test,more-text");
     Assert.AreEqual("(test,more-text)\r\n", io.ToString());
 }
 public void EvalWithQuotedCommandName()
 {
     var io = new StringWriter();
     var interp = new CommandInterpreter(io, io, new CommandParser(), new CommandObj());
     interp.Eval("\"Plus\" 1 2");
     Assert.AreEqual("3\r\n", io.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());
        }