public void CPPTryCombineNotSame() { // two identical expressions var target = new TypeHandlerCPPCode(); var gc = new GeneratedCode(); var context = new CodeContext(); var p_pt_1 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(double)); var p_eta = DeclarableParameter.CreateDeclarableParameterExpression(typeof(double)); var p_phi = DeclarableParameter.CreateDeclarableParameterExpression(typeof(double)); var p_E = DeclarableParameter.CreateDeclarableParameterExpression(typeof(double)); // Create two identical calls var e1 = Expression.Call(typeof(TLZHelper).GetMethod("CreateTLZBE"), p_pt_1, p_eta, p_phi, p_E); var e1Value = target.CodeMethodCall(e1, gc, MEFUtilities.MEFContainer); var p_pt_2 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(double)); var e2 = Expression.Call(typeof(TLZHelper).GetMethod("CreateTLZBE"), p_pt_2, p_eta, p_phi, p_E); var e2Value = target.CodeMethodCall(e2, gc, MEFUtilities.MEFContainer); gc.DumpCodeToConsole(); // Now, extract the two main statements. Assert.AreEqual(2, gc.CodeBody.Statements.Count(), "# of statements"); var s1 = gc.CodeBody.Statements.First() as IStatement; var s2 = gc.CodeBody.Statements.Skip(1).First() as IStatement; // Now, try-combine should just "work", as it were. var opt = new OptTest(); var r = s1.TryCombineStatement(s2, opt); Assert.IsFalse(r); }