Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var mathOperationsContainer = new MathOperationsContainer();
            var parser            = new Parser();
            var notationConverter = new NotationConverter();
            var mathProcessor     = new MathProcessor();

            var calculator = new MathCalculator(parser, notationConverter, mathProcessor, mathOperationsContainer);

            Console.WriteLine("Calculator");
            Console.WriteLine("To complete the work, type exit.");
            while (true)
            {
                Console.Write("Enter a math expression: ");
                var expression = Console.ReadLine();

                if (expression == "exit")
                {
                    Console.WriteLine("Work completed.");
                    break;
                }

                var result = calculator.Calculate(expression);
                Console.WriteLine("Result: {0}", result);
            }
        }
        public void MathOperationsContainer_returns_true_for_unary_minus_operation_by_keyword()
        {
            var mathOperationsContainer = new MathOperationsContainer();
            var keyword = "~";

            var result = mathOperationsContainer.ContainsOperation(keyword);

            Assert.True(result);
        }
        public void MathOperationsContainer_returns_false_for_wrong_keyword()
        {
            var mathOperationsContainer = new MathOperationsContainer();
            var keyword = "&";

            var result = mathOperationsContainer.ContainsOperation(keyword);

            Assert.False(result);
        }
        public void MathOperationsContainer_returns_default_keyword_for_unknown_value_and_unary()
        {
            var mathOperationsContainer  = new MathOperationsContainer();
            var operationCharacteristics = new OperationCharacteristics("&", OperationType.Unary);

            var keyword = mathOperationsContainer.GetKeywordOrDefault(operationCharacteristics);

            Assert.Null(keyword);
        }
        public void MathOperationsContainer_returns_keyword_of_unary_minus_operation_by_characteristics()
        {
            var mathOperationsContainer  = new MathOperationsContainer();
            var operationCharacteristics = new OperationCharacteristics("-", OperationType.Unary);

            var keyword = mathOperationsContainer.GetKeywordOrDefault(operationCharacteristics);

            Assert.Equal("~", keyword);
        }
        public void MathOperationsContainer_returns_default_operation_by_wrong_keyword()
        {
            var mathOperationsContainer = new MathOperationsContainer();

            var keyword = "&";

            var mathOperation = mathOperationsContainer.GetOperationOrDefault(keyword);

            Assert.Null(mathOperation);
        }
        public void MathOperationsContainer_returns_unary_minus_operation_by_keyword()
        {
            var mathOperationsContainer = new MathOperationsContainer();

            var keyword = "~";

            var stack = new Stack <double>();

            stack.Push(8.00);

            var mathOperation = mathOperationsContainer.GetOperationOrDefault(keyword);

            mathOperation.Operate(stack);

            Assert.Equal(1, mathOperation.Priority);
            Assert.Equal(OperationType.Unary, mathOperation.Type);

            Assert.Equal(-8.00, stack.Peek());
        }
 public void MathOperationsContainer_should_be()
 {
     var mathOperationsContainer = new MathOperationsContainer();
 }