コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }