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); } } }