public void AggregateCombineWithRenameNoChance() { // a = a + b // c = c + b // These two should combine correctly, somehow. var a = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var ainc = new ValSimple(string.Format("{0}+b", a.ParameterName), typeof(int)); var s1 = new StatementAggregate(a, ainc); var c = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var cinc = new ValSimple(string.Format("{0}+b", c.ParameterName), typeof(int)); var s2 = new StatementAggregate(c, cinc); var opt = new MyCodeOptimizer(false); var result = s1.TryCombineStatement(s2, opt); Assert.IsFalse(result, "Expected combination would work"); }
public void AggregateCombineWithRename() { // a = a + b // c = c + b // These two should combine correctly, somehow. var a = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var ainc = new ValSimple(string.Format("{0}+b", a.ParameterName), typeof(int)); var s1 = new StatementAggregate(a, ainc); var c = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var cinc = new ValSimple(string.Format("{0}+b", c.ParameterName), typeof(int)); var s2 = new StatementAggregate(c, cinc); var opt = new MyCodeOptimizer(true); var result = s1.TryCombineStatement(s2, opt); Assert.IsTrue(result, "Expected combination would work"); Assert.AreEqual(a.ParameterName, opt.NewVariable.ParameterName, "new name not renamed to"); Assert.AreEqual(c.ParameterName, opt.OldName, "old name for rename not right"); }