public void TestFuncWithManyArguments() { var rpn = new Rpn("threesum(3+4,sqrt(9),6)"); Assert.AreEqual("3 4 + 9 sqrt( 6 threesum(", rpn.ToString()); Assert.AreEqual(3, ((RpnItemFunction)rpn.Result.Last()).ArgumentCount); }
public void TestNotEqualOp2Str(string variableValue, double expected) { var rpn = new Rpn("Url!='www'"); Assert.AreEqual("Url \"www\" !=", rpn.ToString()); var eval = new EvaluateRpn(rpn, new List <NameAndType> { new NameAndType("Url", typeof(string)) }); var value = eval.Eval(new object[] { variableValue }); Assert.AreEqual(expected, value.Numeric); }
public void TestNullCoalescing(string var1, string var2, string expected) { var rpn = new Rpn("var1??var2"); Assert.AreEqual("var1 var2 ??", rpn.ToString()); var eval = new EvaluateRpn(rpn, new List <NameAndType> { new NameAndType("var1", typeof(string)), new NameAndType("var2", typeof(string)) }); var value = eval.Eval(new object[] { var1, var2 }); Assert.AreEqual(expected, value.String); }
public void TestEquality(object var1, object var2, int expected) { var rpn = new Rpn("var1==var2"); Assert.AreEqual("var1 var2 ==", rpn.ToString()); var eval = new EvaluateRpn(rpn, new List <NameAndType> { new NameAndType("var1", typeof(string)), new NameAndType("var2", typeof(string)) }); var value = eval.Eval(new object[] { var1, var2 }); Assert.AreEqual(expected, value.Numeric); }
public void TestThatStringIsAutomaticallyConvertedToNumber() { var rpn = new Rpn("var1*2"); Assert.AreEqual("var1 2 *", rpn.ToString()); var eval = new EvaluateRpn(rpn, new List <NameAndType> { new NameAndType("var1", typeof(string)) }); var value = eval.Eval(new object[] { -1 }); Assert.AreEqual(-2, value.Numeric); }
public void TestThatNullabelsWorks1() { var rpn = new Rpn("var1??-1"); Assert.AreEqual("var1 -1 ??", rpn.ToString()); var eval = new EvaluateRpn(rpn, new List <NameAndType> { new NameAndType("var1", typeof(double)) }); var value = eval.Eval(new object[] { null }); Assert.AreEqual(-1, value.Numeric); }
public void TestVariables() { var rpn = new Rpn("3+(a+q)/(2+2)+3"); Assert.AreEqual("3 a q + 2 2 + / + 3 +", rpn.ToString()); var eval = new CompileRpn(rpn, new List <NameAndType> { new NameAndType("a", typeof(double)), new NameAndType("q", typeof(double)) }); var variables = new object[] { 3.0, 5.0 }; var value = eval.Evaluate(variables); Assert.AreEqual(8, value); }
public void TestEqualOp(double variableValue, double expected) { var rpn = new Rpn("Url==42"); Assert.AreEqual("Url 42 ==", rpn.ToString()); var eval = new CompileRpn(rpn, new List <NameAndType> { new NameAndType("Url", typeof(double)) }); var value = eval.Evaluate(new object[] { variableValue }); Assert.AreEqual(expected, value); }
public void Test() { var rpn = new Rpn("3+(dbl+len(str))/7.0"); Assert.AreEqual("3 dbl str len( + 7 / +", rpn.ToString()); var eval = new EvaluateRpn(rpn, new List <NameAndType> { new NameAndType("dbl", typeof(double)), new NameAndType("str", typeof(string)) }); var rnd = new Random(); Enumerable.Range(0, 10000).AsParallel().ForAll(_ => { var vars = new object[] { rnd.NextDouble() * 100, new string(' ', rnd.Next(10)) }; var expected = 3 + ((double)vars[0] + ((string)vars[1]).Length) / 7.0; Assert.AreEqual(expected, eval.Eval(vars).Numeric); }); }
public void TestEqualOp() { var rpn = new Rpn("2+5==3+7"); Assert.AreEqual("2 5 + 3 7 + ==", rpn.ToString()); }
public void TestNotFuncNot() { var rpn = new Rpn("!x(!y)"); Assert.AreEqual("y ! x( !", rpn.ToString()); }
public void TestAndOr2() { var rpn = new Rpn("a&(b|c)&d"); Assert.AreEqual("a b c | & d &", rpn.ToString()); }
public void TestParentesis2() { var rpn = new Rpn("((Y))"); Assert.AreEqual("Y", rpn.ToString()); }
public void TestJimmysExpression() { var rpn = new Rpn("first(i1==0 ? a1, i1==1 ? tail(a2,\",\"))"); Assert.AreEqual("i1 0 == a1 ? i1 1 == a2 \",\" tail( ? first(", rpn.ToString()); }
public void TestAndOr1() { var rpn = new Rpn("a&b|c&d"); Assert.AreEqual("a b & c d & |", rpn.ToString()); }
public void TestMulPlus() { var rpn = new Rpn("3*4+5"); Assert.AreEqual("3 4 * 5 +", rpn.ToString()); }
public void TestMinus() { var rpn = new Rpn("3 - 4"); Assert.AreEqual("3 4 -", rpn.ToString()); }
public void TestQuestionOp() { var rpn = new Rpn("i==2 ? nisse"); Assert.AreEqual("i 2 == nisse ?", rpn.ToString()); }
public void TestNot2() { var rpn = new Rpn("!!true"); Assert.AreEqual("true ! !", rpn.ToString()); }
public void TestMultiplication() { var rpn = new Rpn(" 3*4 "); Assert.AreEqual("3 4 *", rpn.ToString()); }
public void TestFancyVariableName2() { var rpn = new Rpn("#index+1"); Assert.AreEqual("#index 1 +", rpn.ToString()); }
public void TestFancyVariableName() { var rpn = new Rpn("0@a3$_+@"); Assert.AreEqual("0@a3$_ @ +", rpn.ToString()); }
public void TestNot4() { var rpn = new Rpn("!(3+4)"); Assert.AreEqual("3 4 + !", rpn.ToString()); }
public void TestPlusMul() { var rpn = new Rpn("3+4*5"); Assert.AreEqual("3 4 5 * +", rpn.ToString()); }
public void TestNot3() { var rpn = new Rpn("!3+4"); Assert.AreEqual("3 ! 4 +", rpn.ToString()); }
public void TestDivMulDiv() { var rpn = new Rpn("3/4*5/6"); Assert.AreEqual("3 4 / 5 6 / *", rpn.ToString()); }
public void TestDivision() { var rpn = new Rpn("3/4"); Assert.AreEqual("3 4 /", rpn.ToString()); }
public void TestStringConstant() { var rpn = new Rpn("len(\"nisse\")==5"); Assert.AreEqual("\"nisse\" len( 5 ==", rpn.ToString()); }
public void TestPlusMany() { var rpn = new Rpn("3+4+5+6"); Assert.AreEqual("3 4 + 5 + 6 +", rpn.ToString()); }
public void TestFunction1() { var rpn = new Rpn("sin(pi)"); Assert.AreEqual("pi sin(", rpn.ToString()); }