コード例 #1
0
        public void TestMethodOneInternalFunc2I()
        {
            ResetTestState();
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            CExpression exp = CExpressionBuilder.Build("Min(3, 2) * (Neg(var1) + 4)", this);

            double res = exp.GetValue(
                (int id, out double value) =>
            {
                value = 3;
                return(true);
            },
                this);

            CheckInternalErrors();
            Assert.AreEqual(res, 2);

            res = exp.GetValue(
                (int id, out double value) =>
            {
                value = -3;
                return(true);
            },
                this);

            CheckInternalErrors();
            Assert.AreEqual(res, 14);
        }
コード例 #2
0
        public void TestMethodSimpleAllOp1()
        {
            ResetTestState();
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            List <Tuple <string, double> > lst = new List <Tuple <string, double> >();

            lst.Add(new Tuple <string, double>("var1", 3));
            lst.Add(new Tuple <string, double>("var2", 4));

            CExpression exp = CExpressionBuilder.Build("1 / 2 + var1 * var2 - 5.5 + 4^(1/2)", this);

            exp.SetArgIds(name =>
            {
                return(lst.FindIndex(t => t.Item1 == name));
            });

            double res = exp.GetValue(
                (int id, out double value) =>
            {
                value = 0;
                if (id < 0)
                {
                    return(false);
                }

                value = lst[id].Item2;
                return(true);
            },
                this);

            CheckInternalErrors();
            Assert.AreEqual(res, 9);
        }
コード例 #3
0
        public void TestMethodOneInternalFunc1()
        {
            ResetTestState();
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            CExpression exp = CExpressionBuilder.Build("Round(3.1)", this);

            double res = exp.GetValue(this);

            CheckInternalErrors();
            Assert.AreEqual(res, 3);
        }
コード例 #4
0
        public void TestMethodBracers()
        {
            ResetTestState();
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            CExpression exp = CExpressionBuilder.Build("(1 + 2) * ((3 + 4) - (5 + 1))", this);

            double res = exp.GetValue(this);

            CheckInternalErrors();
            Assert.AreEqual(res, 3);
        }
コード例 #5
0
        public void TestMethodOneInternalFunc3()
        {
            ResetTestState();
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            CExpression exp = CExpressionBuilder.Build("Rand(1,100)", this);

            double res = exp.GetValue(this);

            CheckInternalErrors();

            Assert.IsTrue(res >= 1 && res <= 100);
        }
コード例 #6
0
        public void TestMethodOneValue2()
        {
            ResetTestState();
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            CExpression exp = CExpressionBuilder.Build("var1", this);

            Dictionary <string, double> dic = new Dictionary <string, double>();

            dic.Add("var1", 3);

            double res = exp.GetValue(dic.TryGetValue, this);

            CheckInternalErrors();
            Assert.AreEqual(res, 3);
        }
コード例 #7
0
        public void TestMethodSimpleSumI()
        {
            ResetTestState();
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            CExpression exp = CExpressionBuilder.Build("1.1 + 2 + var1", this);

            exp.SetArgIds(name => 0);

            double res = exp.GetValue(
                (int id, out double value) =>
            {
                value = 3;
                return(true);
            },
                this);

            CheckInternalErrors();
            Assert.AreEqual(res, 6.1);
        }