示例#1
0
        public void ConstructorTest_Success()
        {
            var calculateFunction = new CalculateFunction();

            Assert.That(calculateFunction.Name, Is.EqualTo("CALCULATE"));
            Assert.That(calculateFunction.Function, Is.Not.Null);
        }
        private static void VerifyCalculation(CalculateFunction calculate, double conversionRate)
        {
            const int price      = 1;
            var       calculated = calculate(price);

            Assert.AreEqual(calculated, price * conversionRate);
        }
示例#3
0
        public void ConstructorTest_WithRepositories_Success()
        {
            var scriptRepository    = new Mock <IScriptRepository>();
            var parameterRepositort = new Mock <IParameterRepository>();
            var calculateFunction   = new CalculateFunction(scriptRepository.Object, parameterRepositort.Object);

            Assert.That(calculateFunction.Name, Is.EqualTo("CALCULATE"));
            Assert.That(calculateFunction.Function, Is.Not.Null);
        }
        public static CalculateFunction ToCalculateFunction(
            this CalculateFeeCoefficients calculateFeeCoefficients)
        {
            var pieceCalculateFunction = new CalculateFunction(calculateFeeCoefficients.FeeTokenType);

            foreach (var pieceCoefficients in calculateFeeCoefficients.PieceCoefficientsList.Where(pc =>
                                                                                                   (pc.Value.Count - 1) % 3 == 0))
            {
                pieceCalculateFunction.AddFunction(pieceCoefficients.Value.ToArray(),
                                                   GetFunction(pieceCoefficients.Value.ToArray()));
            }

            return(pieceCalculateFunction);
        }
示例#5
0
        //generic calc method. usage: "10 + 20"  => result 30
        public double Culculate(string expression)
        {
            if (expression == null)
            {
                throw new ArgumentNullException("expression is null");
            }
            int space = expression.IndexOf(" ");

            while (space > 0)
            {
                expression = expression.Remove(space, 1);
                space      = expression.IndexOf(" ");
            }
            int  a      = GetNumber(ref expression);
            char symbol = GetSymbol(ref expression);
            int  b      = GetNumber(ref expression);
            CalculateFunction calculateFunction = GetFunction(symbol);

            return(calculateFunction(a, b));
        }
示例#6
0
        public void CalculateFunctionTest_ScriptFromFakeAssembly_Success()
        {
            var parameters = new NCalc.Expression[5];

            parameters[0] = new NCalc.Expression("'a'");
            parameters[1] = new NCalc.Expression("'par1'");
            parameters[2] = new NCalc.Expression("1");
            parameters[3] = new NCalc.Expression("'par2'");
            parameters[4] = new NCalc.Expression("3");

            var result = new Mock <IResult>();

            result.Setup(r => r.Properties)
            .Returns(new Dictionary <string, object>()
            {
                { "result", "4" }
            });

            var calculator = new Mock <ICalculator>();

            calculator.Setup(c => c.Map(It.IsAny <IList <object> >()));
            calculator.Setup(c => c.Calculate()).Returns(result.Object);

            var calculateFunction = new CalculateFunction(calculator: calculator.Object);

            var functionArgs = new NCalc.FunctionArgs()
            {
                Parameters = parameters
            };

            Assert.That((bool)calculateFunction.Function(functionArgs), Is.EqualTo(true));
            calculator.Verify(c => c.Map(It.IsAny <IList <object> >()), Times.Once);
            calculator.Verify(c => c.Calculate(), Times.Once);

            Assert.That(functionArgs.Parameters[0].Parameters.ContainsKey("#result"));
            Assert.That(functionArgs.Parameters[0].Parameters["#result"], Is.EqualTo("4"));
        }
示例#7
0
        public void CalculateFunctionTest_ScriptFromFakeDatabase_Success()
        {
            var scriptRepository = new Mock <IScriptRepository>();

            scriptRepository.Setup(sr => sr.GetScriptBaseOnNameAsync("a"))
            .Returns(Task.FromResult(new Script()
            {
                Id          = 1,
                Name        = "a",
                Description = string.Empty
            }));

            var parameterRepository = new Mock <IParameterRepository>();

            parameterRepository.Setup(pr => pr.GetAllParametersForScriptAsync(1))
            .Returns(Task.FromResult(GetParameters()));

            var calculateFunction = new CalculateFunction(scriptRepository.Object, parameterRepository.Object);

            var parameters = new NCalc.Expression[5];

            parameters[0] = new NCalc.Expression("'a'");
            parameters[1] = new NCalc.Expression("'par1'");
            parameters[2] = new NCalc.Expression("1");
            parameters[3] = new NCalc.Expression("'par2'");
            parameters[4] = new NCalc.Expression("3");

            var functionArgs = new NCalc.FunctionArgs()
            {
                Parameters = parameters
            };

            Assert.That(calculateFunction.Function(functionArgs), Is.EqualTo(true));
            Assert.That(functionArgs.Parameters[0].Parameters.ContainsKey("#result"));
            Assert.That(functionArgs.Parameters[0].Parameters["#result"], Is.EqualTo("4"));
        }