public void Case02() { var random = new Random(); foreach (var _ in Enumerable.Range(0, 10)) { int a = random.Next(-100, 100); int b = random.Next(-100, 100); TestContext.WriteLine($"a={a}, b={b}"); Expression <Func <int, int, int> > expr1 = (x, y) => x - y; Expression <Func <int, int> > expr2 = x => x / 2; var expr3 = ExpressionOperators.Then <int, int, int>(expr1, expr2); Assert.AreEqual((a - b) / 2, expr3.Compile().Invoke(a, b)); } }
public void Case01() { var random = new Random(); foreach (var _ in Enumerable.Range(0, 10)) { int a = random.Next(-100, 100); TestContext.WriteLine($"a={a}"); Expression <Func <int, int> > expr1 = x => x - 1; Expression <Func <int, int> > expr2 = x => x / 2; var expr3 = ExpressionOperators.Then <int, int>(expr1, expr2); var expr4 = ExpressionOperators.Then <int, int>(expr2, expr1); Assert.AreEqual((a - 1) / 2, expr3.Compile().Invoke(a)); Assert.AreEqual(a / 2 - 1, expr4.Compile().Invoke(a)); } }