Exemplo n.º 1
0
        public static void ThrowTest(string a_sExpr, EErrorCodes a_nErrc, int a_nPos = -1, string a_sIdent = null)
        {
            try
            {
                var     p       = new ParserX();
                Value[] vVarVal = { 1, 2, 3, -2 };
                p.DefineVar("a", new Variable(vVarVal[0]));
                p.DefineVar("b", new Variable(vVarVal[1]));
                p.DefineVar("c", new Variable(vVarVal[2]));
                p.DefineVar("d", new Variable(vVarVal[3]));

                // array variables
                Value aVal1 = new Value(3, 0);
                aVal1.At(0) = 1.0;
                aVal1.At(1) = 2.0;
                aVal1.At(2) = 3.0;

                Value aVal2 = new Value(3, 0);
                aVal2.At(0) = 4.0;
                aVal2.At(1) = 3.0;
                aVal2.At(2) = 2.0;

                Value aVal3 = new Value(4, 0);
                aVal3.At(0) = 4.0;
                aVal3.At(1) = 3.0;
                aVal3.At(2) = 2.0;
                aVal3.At(3) = 5.0;

                Value aVal4 = new Value(4, 0);
                aVal4.At(0) = 4.0;
                aVal4.At(1) = false;
                aVal4.At(2) = "hallo";

                // Matrix variables
                Value m1 = new Value(3, 3, 0);
                m1.At(0, 0) = 1.0;
                m1.At(1, 1) = 1.0;
                m1.At(2, 2) = 1.0;

                Value m2 = new Value(3, 3, 0);
                m2.At(0, 0) = 1.0; m2.At(0, 1) = 2.0; m2.At(0, 2) = 3.0;
                m2.At(1, 0) = 4.0; m2.At(1, 1) = 5.0; m2.At(1, 2) = 6.0;
                m2.At(2, 0) = 7.0; m2.At(2, 1) = 8.0; m2.At(2, 2) = 9.0;

                p.DefineVar("m1", new Variable(m1));
                p.DefineVar("m2", new Variable(m2));
                p.DefineVar("va", new Variable(aVal1));
                p.DefineVar("vb", new Variable(aVal2));
                p.DefineVar("vc", new Variable(aVal3));
                p.DefineVar("vd", new Variable(aVal4));

                p.SetExpr(a_sExpr);
                IValue fRes = p.Eval();
                Assert.Fail("Evauluation of '" + a_sExpr + "' diddn't throw expected error: ( " + a_nErrc + " )");
            }
            catch (ParserError p)
            {
                Assert.AreEqual(p.GetCode(), a_nErrc);
                if (a_nPos != -1)
                {
                    Assert.AreEqual(p.GetPos(), a_nPos);
                }
                if (a_sIdent != null)
                {
                    Assert.AreEqual(p.GetToken(), a_sIdent);
                }
            }
        }