public void SyntaxTrie_Unchanged5() { Expression <Action> f = () => Foo(x => x, x => x, x => x, x => x); var g = AlphaRenamer.EliminateNameConflicts(f); var eq = new ExpressionEqualityComparer(); Assert.IsTrue(eq.Equals(f, g)); Assert.AreSame(f, g); }
public void SyntaxTrie_Unchanged4() { Expression <Func <int, Func <int, int> > > f = x => y => y; var g = AlphaRenamer.EliminateNameConflicts(f.Body); var eq = new ExpressionEqualityComparer(); Assert.IsTrue(eq.Equals(f.Body, g)); Assert.AreSame(f.Body, g); }
public void SyntaxTrie_Rename4() { var x = Expression.Parameter(typeof(int)); var y = Expression.Parameter(typeof(int)); var z = Expression.Parameter(typeof(int)); var f = Expression.Lambda(Expression.Lambda(Expression.Lambda(z, z), y), x); var g = AlphaRenamer.EliminateNameConflicts(f); Assert.AreEqual("Param_0 => Param_1 => Param_2 => Param_2", f.ToString()); Assert.AreEqual("Param_0 => Param_1 => Param_2 => Param_2", g.ToString()); }
public void SyntaxTrie_Rename3() { var x = Expression.Parameter(typeof(int), "x"); var y = Expression.Parameter(typeof(int), "x0"); var z = Expression.Parameter(typeof(int), "x"); var f = Expression.Lambda(Expression.Lambda(Expression.Lambda(z, z), y), x); var g = AlphaRenamer.EliminateNameConflicts(f); Assert.AreEqual("x => x0 => x => x", f.ToString()); Assert.AreEqual("x => x0 => x1 => x1", g.ToString()); }
public void SyntaxTrie_Rename1() { var x = Expression.Parameter(typeof(int), "x"); var y = Expression.Parameter(typeof(int), "x"); var f = Expression.Lambda <Func <int, Func <int, int> > >(Expression.Lambda(y, y), x); var g = (Expression <Func <int, Func <int, int> > >)AlphaRenamer.EliminateNameConflicts(f); Assert.AreEqual(2, f.Compile()(1)(2)); Assert.AreEqual(2, g.Compile()(1)(2)); Assert.AreEqual("x => x => x", f.ToString()); Assert.AreEqual("x => x0 => x0", g.ToString()); }
public void SyntaxTrie_ArgumentChecking() { AssertEx.ThrowsException <ArgumentNullException>(() => AlphaRenamer.EliminateNameConflicts(expression: null), ex => Assert.AreEqual("expression", ex.ParamName)); }