public void Can_use_overloaded_operators_on_struct() { var target = new Interpreter(); var x = new StructWithOverloadedBinaryOperators(3); target.SetVariable("x", x); string y = "5"; Assert.IsFalse(x == y); Assert.IsFalse(target.Eval <bool>("x == y", new Parameter("y", y))); y = "3"; Assert.IsTrue(x == y); Assert.IsTrue(target.Eval <bool>("x == y", new Parameter("y", y))); Assert.IsFalse(target.Eval <bool>("x == \"4\"")); Assert.IsTrue(target.Eval <bool>("x == \"3\"")); Assert.IsTrue(!x == "-3"); Assert.IsTrue(target.Eval <bool>("!x == \"-3\"")); var z = new StructWithOverloadedBinaryOperators(10); Assert.IsTrue((x + z) == "13"); Assert.IsTrue(target.Eval <bool>("(x + z) == \"13\"", new Parameter("z", z))); }
public void Can_use_overloaded_operators_on_struct() { var target = new Interpreter(); var x = new StructWithOverloadedBinaryOperators(3); target.SetVariable("x", x); string y = "5"; Assert.IsFalse(x == y); Assert.IsFalse(target.Eval<bool>("x == y", new Parameter("y", y))); y = "3"; Assert.IsTrue(x == y); Assert.IsTrue(target.Eval<bool>("x == y", new Parameter("y", y))); Assert.IsFalse(target.Eval<bool>("x == \"4\"")); Assert.IsTrue(target.Eval<bool>("x == \"3\"")); Assert.IsTrue(!x == "-3"); Assert.IsTrue(target.Eval<bool>("!x == \"-3\"")); var z = new StructWithOverloadedBinaryOperators(10); Assert.IsTrue((x + z) == "13"); Assert.IsTrue(target.Eval<bool>("(x + z) == \"13\"", new Parameter("z", z))); }