public void ConstructorTest()
        {
            RPNCalculatorEngine engine = new RPNCalculatorEngine();

            Assert.IsNotNull(engine);
            Assert.IsInstanceOfType(engine, typeof(RPNCalculatorEngine));
        }
        public void Process_Complex_Test()
        {
            RPNCalculatorEngine r = new RPNCalculatorEngine();

            Assert.AreEqual("8", r.Process("1 3 + 2 X"));
            Assert.AreEqual("5", r.Process("1 3 2 + X"));
            Assert.AreEqual("-5", r.Process("1 2 3 4 + - X"));
        }
        public void Process_Error_Test()
        {
            RPNCalculatorEngine r = new RPNCalculatorEngine();

            Assert.AreEqual("E", r.Process("1"));
            Assert.AreEqual("E", r.Process("1 +"));
            Assert.AreEqual("E", r.Process("1 + 1"));
            Assert.AreEqual("E", r.Process("1 1 1 +"));
            Assert.AreEqual("E", r.Process("+"));
            Assert.AreEqual("E", r.Process("+ 1"));
            Assert.AreEqual("E", r.Process("+ 1 1"));
            Assert.AreEqual("E", r.Process("1 1 1 + + +"));
        }
        public void Process_Basic_Test()
        {
            RPNCalculatorEngine r = new RPNCalculatorEngine();

            Assert.AreEqual("2", r.Process("1 1 +"));
            Assert.AreEqual("1", r.Process("3 2 -"));
            Assert.AreEqual("6", r.Process("3 2 X"));
            Assert.AreEqual("2", r.Process("4 2 ÷"));
            Assert.AreEqual("0", r.Process("1 -1 +"));
            Assert.AreEqual("5", r.Process("3 -2 -"));
            Assert.AreEqual("-1", r.Process("2 3 -"));
            Assert.AreEqual("-6", r.Process("3 -2 X"));
            Assert.AreEqual("-2", r.Process("-4 2 ÷"));
        }
예제 #5
0
    public static void Main()
    {
        rpnCalcEngine = new RPNCalculatorEngine();
        buttons       = new Dictionary <char, int>();
        RPNCalculatorEngine.Operation operation;

        int  i = 0;
        bool errorDisplayed = false;

        while ((operation = rpnCalcEngine.GetOperation(i)) != null)
        {
            buttons.Add(operation.ShortCut, i++);
        }
        DisplayButtons();
        do
        {
            DrawCalculator();
            int  button;
            char keyChar = Console.ReadKey(true).KeyChar;
            if (keyChar == '\x1b')
            {
                break;                       // exit the loop if Escape key pressed
            }
            if (buttons.TryGetValue(keyChar, out button))
            {
                try
                {
                    if (errorDisplayed)
                    {
                        Console.SetCursorPosition(0, 0);
                        WriteErrorLine("                                   ");
                        WriteErrorLine("                                   ");
                        DisplayButtons();
                        errorDisplayed = false;
                    }
                    rpnCalcEngine.PressKey(button);
                }
                catch (FormatException)
                {
                    WriteErrorLine("Invalid number format");
                    errorDisplayed = true;
                }
                catch (Exception e)
                {
                    WriteErrorLine(e.Message);
                    errorDisplayed = true;
                }
            }
        } while (true);
    }
예제 #6
0
 public void Initialize()
 {
     engine = new RPNCalculatorEngine();
 }
 public void EmptyArgumentTest()
 {
     RPNCalculatorEngine engine = new RPNCalculatorEngine();
 }