Advertisement
Guest User

Untitled

a guest
Apr 28th, 2012
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.58 KB | None | 0 0
  1. void SequenceDiagramTester::generate(vector<Node>::iterator itr,vector<Node>::iterator itr_end, vector<TestSequence>& TSList)
  2. {
  3.     Node nptr;
  4.     while(itr!=itr_end)
  5.     {
  6.         nptr = *itr;
  7.         itr++;
  8.         switch(nptr.getType())
  9.         {
  10.             case MESSAGE:
  11.                 {
  12.                     int tmp_pri = getPriority(nptr.getType());
  13.                     Message tmp_msg = nptr.getmFrag();
  14.                     for(unsigned i =0; i<TSList.size(); i++)
  15.                     {
  16.                         TSList[i].addMessage(tmp_msg);
  17.                         TSList[i].incrementPriority(tmp_pri);
  18.                     }
  19.                     break;
  20.                 }
  21.             case RETURN_MESSAGE:
  22.                 break;
  23.  
  24.             case LOOP:
  25.             case BREAK:
  26.             case ALT:
  27.             case OPT:
  28.             {
  29.                 vector<TestSequence> tmp_TSList;
  30.                 int ndup, beg;
  31.                 if(nptr.getType()== ALT)
  32.                 {
  33.                     CombinedFragment alt_cf = nptr.getcFrag();
  34.                     vector<TestSequence> tmp_tmp_TSList;
  35.                     TestSequence tmp_ts;
  36.                     vector<Node>::iterator alt_itr = (alt_cf.getStartNode()).begin();
  37.                     for(int i=0; i<alt_cf.getNoOfPartitions(); i++)
  38.                     {
  39.                         vector<Node> alt_seq ;
  40.                         alt_seq = vector<Node>(1000);
  41.                         for(int j=0; j<alt_cf.getNoOfNodes(i); j++)
  42.                         {
  43.                             Node temp_node = *alt_itr;
  44.                             alt_itr++;
  45.                             alt_seq.push_back(temp_node);
  46.                         }
  47.  
  48.                         SequenceDiagram alt_sd(alt_seq);
  49.                         SequenceDiagramTester alt_sdt(alt_sd);
  50.                         tmp_tmp_TSList = alt_sdt.generate();
  51.  
  52.                         vector<TestSequence>::iterator list_itr = tmp_tmp_TSList.begin();
  53.                         vector<TestSequence>::iterator list_itr_end = tmp_tmp_TSList.end();
  54.  
  55.                         while(list_itr != list_itr_end)
  56.                         {
  57.                             tmp_ts = (*list_itr);
  58.                             list_itr++;
  59.                             tmp_ts.incrementPriority(ALT_PRI * i);
  60.                             if(i == (alt_cf.getNoOfPartitions()-1))
  61.                                 tmp_ts.decrementPriority(ALT_PRI);
  62.                             tmp_TSList.push_back(tmp_ts);
  63.                         }
  64.                     }
  65.                     ndup = tmp_TSList.size()-1;
  66.                     beg =0;
  67.                }
  68.                 else
  69.                 {
  70.                     CombinedFragment tmp_cf = nptr.getcFrag();
  71.                     SequenceDiagram tmp_sd(tmp_cf.getStartNode());
  72.                     SequenceDiagramTester tmp_sdt(tmp_sd);
  73.                     tmp_TSList = tmp_sdt.generate();
  74.  
  75.                     ndup = tmp_TSList.size();
  76.                     beg = TSList.size();
  77.                 }
  78.                 this->duplicateElements(TSList,ndup);
  79.  
  80.                 for(unsigned int i =0; i<TSList.size(); i++)
  81.                 {
  82.                     if(i<(unsigned)beg)
  83.                     {
  84.                         if(nptr.getType()== ALT)
  85.                         {
  86.                             CombinedFragment alt_cf = nptr.getcFrag();
  87.                             int tmp_partition = alt_cf.getNoOfPartitions()-1;
  88.                             TSList[i].incrementPriority(ALT_PRI * tmp_partition-1);
  89.                         }
  90.                         else
  91.                         {
  92.                             int tmp_prio = getPriority(nptr.getType());
  93.                             TSList[i].incrementPriority(tmp_prio);
  94.                         }
  95.                     }
  96.                     else
  97.                     {
  98.                         for(unsigned int j =0; j<tmp_TSList.size(); j++)
  99.                         {
  100.                             cout<<"Dekh 0000"<<endl;
  101.                             TSList[i].appendSequence(tmp_TSList[j]);
  102.                             int tmp_prio = getPriority(nptr.getType());
  103.                             TSList[i].incrementPriority(tmp_prio);
  104.                             tmp_prio = tmp_TSList[j].getPriority();
  105.                             TSList[i].incrementPriority(tmp_prio);
  106.                             i++;
  107.                         }
  108.                         if(tmp_TSList.size() > 0)
  109.                             i--;
  110.                     }
  111.                 }
  112.                 break;
  113.             }
  114.  
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement