public void CalculationListTest()
        {
            double _a = 4;
            double _b = 2;
            Func <double, double, double> _action = Operations.Sum;
            var        _calculatorBuilder         = new CalculatorBuilder();
            Calculator _calculator = new Calculator(_calculatorBuilder);



            _calculator.CreateCalculation(_a, _b, _action);

            _action = Operations.Difference;
            _calculator.CreateCalculation(_a, _b, _action);

            _action = Operations.Division;
            _calculator.CreateCalculation(_a, _b, _action);


            _action = Operations.Multiplication;
            _calculator.CreateCalculation(_a, _b, _action);



            _calculatorBuilder.GetList().ForEach(action : delegate(ICalculation calculations)
            {
                Console.WriteLine(calculations.GetResult());
            });
        }
        public void DivisionTest()
        {
            double _a = 15;
            double _b = 5;
            Func <double, double, double> _action = Operations.Division;
            Calculator _calculator = new Calculator(new CalculatorBuilder());

            var _result = _calculator.CreateCalculation(_a, _b, _action);

            Assert.AreEqual(_result.GetResult(), 3);
        }
        public void SumListTest()
        {
            //initialize a new list of numbers
            List <double> _values = new List <double> {
                1, 2, 3, 4, 5, 6
            };

            Func <List <double>, double> _operations = OperationList.SumList;

            Calculator _calculator = new Calculator(new CalculatorBuilder()); //Not setting new CalculatorBuilder() will throw a System.NullReferenceException where the object has not been set to an instance of an object
            var        _result     = _calculator.CreateCalculation(_values, _operations);

            Assert.AreEqual(21, _result.GetResult());
        }
        public void SumTest()
        {
            double _a = 1;
            double _b = 2;
            Func <double, double, double> _action = Operations.Sum;
            Calculator _calculator = new Calculator(new CalculatorBuilder());

            //var _calculatorBuilder = new CalculatorBuilder();

            //var _result = _calculatorBuilder.CreateCalculation(_a, _b, _action);
            var _result = _calculator.CreateCalculation(_a, _b, _action);

            Console.WriteLine(_result.GetResult());
            Assert.AreEqual(_result.GetResult(), 3);

            //Console.WriteLine(_calculatorBuilder.GetList()[0].GetResult());
            //var _result = _calculator.CreateCalculation(_a, _b, _action);
        }
        public void AddValueDecoratorTest()
        {
            double _a = 15;
            double _b = 5;
            Func <double, double, double> _action = Operations.Division;
            Calculator _calculator = new Calculator(new CalculatorBuilder());
            var        _result     = _calculator.CreateCalculation(_a, _b, _action);


            Func <List <double>, double> _operations = OperationList.SumList;
            AddValues     _addValues = new AddValues(_result.GetResult());
            List <double> _newValues = new List <double> {
                1, 2, 3, 4, 5, 6
            };

            var _newResults = _addValues.CreateNewCalculation(_newValues, _operations);


            Assert.AreEqual(_result.GetResult(), 3);
            Assert.AreEqual(_newResults.GetResult(), 24);
            Console.WriteLine(_newResults.GetResult());
        }