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 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());
        }