public override int logic(CertifierOrchestrationElement element)
        {
            int max = -1, ret = CertifierConstants.NORMAL_SIGNAL;

            if (typeof(RepeatOper).IsInstanceOfType(element.getElement()))
            {
                RepeatOper iterate_oper = (RepeatOper)element.getElement();
                // every children must run MAX
                max = iterate_oper.getMax();
            }



children:
            for (int i = 0; i < max; i++)
            {
                // inside children

                for (int j = element.getChildren().Count - 1; j >= 0; j--)
                {
                    CertifierOrchestrationElement child = element.getChildren()[j];

                    /*if(child.getOperation().Equals(CertifierOrchestrationOperation.BREAKOPER)){
                     *      break children;
                     * }else if(child.getOperation().Equals(CertifierOrchestrationOperation.CONTINUEOPER)){
                     *      continue children;
                     * }*/
                    ret = child.run();
                    if (ret == CertifierConstants.BREAK_SIGNAL)
                    {
                        CertifierConsoleLogger.write("BREAK Operation was found. Breaking inner iterate.");
                        goto _break;
                    }
                    if (ret == CertifierConstants.CONTINUE_SIGNAL)
                    {
                        CertifierConsoleLogger.write("CONTINUE Operation was found. Going back to the beginning of iterate.");

                        goto children;
                    }

                    /*if( ret == CertifierConstants.RETURN_CERTIFIED_SIGNAL || ret == CertifierConstants.RETURN_NOT_CERTIFIED_SIGNAL){
                     *      CertifierConsoleLogger.write("RETURN Operation was found. Stopping certification process and returning.");
                     *
                     *      return ret;
                     *
                     *
                     * }*/
                }
            }


            _break : return(CertifierConstants.NORMAL_SIGNAL);
        }
예제 #2
0
        public override int logic(CertifierOrchestrationElement element)
        {
            int ret = CertifierConstants.NORMAL_SIGNAL;

            CertifierConsoleLogger.write("STARTING SEQUENCE TASKS");

            for (int i = element.getChildren().Count - 1; i >= 0; i--)
            {
                CertifierOrchestrationElement child = element.getChildren()[i];
                ret = child.run();
                if (ret > CertifierConstants.NORMAL_SIGNAL)       /*=CertifierConstants.BREAK_SIGNAL ||
                                                                   * ret==CertifierConstants.CONTINUE_SIGNAL ||ret==CertifierConstants.RETURN_CERTIFIED ||ret==CertifierConstants.RETURN_NOT_CERTIFIED){
                                                                   */
                {
                    CertifierConsoleLogger.write("Signal found: " + ret + ". Stopping sequence execution.");
                    break;
                }
            }
            CertifierConsoleLogger.write("ENDED SEQUENCE TASKS");
            return(ret);
        }
예제 #3
0
        public override int logic(CertifierOrchestrationElement element)
        {
            int ret = CertifierConstants.NORMAL_SIGNAL;

            CertifierConsoleLogger.write("STARTING SWITCH TASK");

            //ChoiceOperComplexType choice_oper = (ChoiceOperComplexType)element.getElement();


            for (int i = element.getChildren().Count - 1; i >= 0; i--)
            {
                CertifierOrchestrationElement select = element.getChildren()[i];
                //System.out.println("Size " + element.getChildren().Count);
                switchoperComplexTypeChoice choice_oper = (switchoperComplexTypeChoice)select.getElement();

                String condition = choice_oper.condition;
                CertifierConsoleLogger.write("Condition: " + condition);
                //navegar no select



                //Integer x = 0;
                //String teste = "x == 0";
                //Certifier.variablesTryAdd(x,x);

                // System.out.println(x.toString());
                condition.Replace("&lt;", "<");
                condition.Replace("&gt;", ">");
                condition.Replace("&quot;", "\"");
                condition.Replace("&amp;", "&");
                condition.Replace("&apos;", "\'");

                /*if (Certifier.formal_properties.get ("mProjExecMPI1", "no deadlock")) {
                 *
                 *      Console.WriteLine ("no deadlock true");
                 * }*/

                //reg.Add.RegisterType ("C4Impl", C4Impl);
                var p = new CompiledExpression(condition)
                {
                    TypeRegistry = Certifier.variables
                };
                //p.Parse();
                p.Compile();
                //Console.WriteLine("Result: {0}", p.Eval());

                CertifierConsoleLogger.write("Condition evaluated: " + p.Eval());



                //System.out.println(cond.booleanValue());
                //System.out.println("Proved vc percent: "  + Certifier.provedVCPercent);
                if ((bool)p.Eval())
                {
                    //if(true)){
                    CertifierOrchestrationElement child = select.getChildren()[0];

                    ret = child.run();
                    //System.out.println("select" + ret);

                    break;
                }
            }
            CertifierConsoleLogger.write("ENDED SWITCH TASK");



            return(ret);
        }