Package net.sf.parteg.base.testcasegraph.testsuite

Examples of net.sf.parteg.base.testcasegraph.testsuite.TransitionInstance


      // no contradictions found
      if(bConstantPartsOfTheGuardAreAllTrue &&
          TCGConjunctionHelperClass.conditionsInConjunctionAreContradicting(
          m_oTestCaseRunnerState.getConditionsToBeSatisfied()).isEmpty()) {
       
        TransitionInstance oTransitionInstance = null;
        if(in_oPair.getSecond() == null) { // no state change
          oTransitionInstance = new TransitionInstance(in_oPair.getFirst());
          oTransitionInstance.setCalledEvent(in_oEvent);
        } else {
          oTransitionInstance = new TransitionInstance(in_oPair.getSecond());
        }
         
        m_oTestCaseRunnerState.getCurrentTransitionPath().add(oTransitionInstance);     
        oTransitionInstance.getUsedPreConditions().addAll(
            in_oPreconditionConjunction.getExpressions());
        oTransitionInstance.getUsedPostConditions().addAll(
            in_oUsedPostcondition.getExpressions());
     
        // handle event
        //searchBackwardsFromEvent(in_oPair.getFirst(), in_oEvent);
        searchBackwardForEachPossibleSourceNode(in_oPair.getFirst(), in_oEvent);
       
        if(getCreatedTestCase() != null)
          return;

        m_oTestCaseRunnerState.getCurrentTransitionPath().remove(oTransitionInstance);
      }
      // remove static expressions and those with mutually dependent elements again
      excludePreconditionFromSearch(in_oPreconditionConjunction.getExpressions(),
          colSaveLateEvaluationGroups);
     
    } else {
      TransitionInstance oTransitionInstance = null;
      // transition or node as anchor for transition instance?
      if(in_oPair.getSecond() != null)
        oTransitionInstance = new TransitionInstance(in_oPair.getSecond());
      else
        oTransitionInstance = new TransitionInstance(in_oPair.getFirst());
     
      m_oTestCaseRunnerState.getCurrentTransitionPath().add(oTransitionInstance);     
      oTransitionInstance.getUsedPostConditions().addAll(
          in_oUsedPostcondition.getExpressions());
      //searchBackwardsFromEvent(in_oPair.getFirst(), in_oEvent);
      searchBackwardForEachPossibleSourceNode(in_oPair.getFirst(), in_oEvent);
      if(m_oCreatedTestCase != null)
        return;
View Full Code Here


          (in_oEvent.isDefaultEvent() == true) ||
          m_oTestCaseRunnerState.getCurrentTransitionPath().isEmpty())
        return ErrorClass.OK;
 
      // current transition instance
      TransitionInstance oTransitionInstance =
        m_oTestCaseRunnerState.getCurrentTransitionPath().get(
            m_oTestCaseRunnerState.getCurrentTransitionPath().size() - 1);
 
      /*
       * create new event parameter instances for all referenced parameters:
       */
      for(TCGOCLExpression oOCLExp : m_oTestCaseRunnerState.getConditionsToBeSatisfied())
      {
        // TODO AAA hier die ganze Liste von Eingabeparametern abarbeiten!
  //      Object oObject = TCGOCLExpressionHelperClass.getInputParametersFromExpression(oOCLExp);
  //      if(oObject != null)
  //      {
//        if(TCGOCLExpressionHelperClass.getPassiveDependentVariablesAndInputParameters(oOCLExp).size() == 1) {
          for(Object oObject : TCGOCLExpressionHelperClass.getInputParametersFromExpression(oOCLExp)) {
            for(TCGParameter oTCGParameter : in_oEvent.getParameters())
            {
              TCGParameter oReferencedTCGParameter =
                TCGParameterHelperClass.findParameterElementMatchingToReference(
                    oTCGParameter, oTransitionInstance, oObject);
              // referenced parameter
              if(oReferencedTCGParameter != null)
              {
                ValueTypeRange oValueTypeRange =
                  OCLExpressionValueTypeRangeFactory.getValueTypeRangeForRightSideOfExpression(
                    oReferencedTCGParameter, oOCLExp);
                if(oValueTypeRange == null)
                  return ErrorClass.NOSOLUTION;
               
                // return contradiction if integer should be equal to a non-integer value
                if(TCGOCLExpressionHelperClass.isLastIntegerComputationWasIncorrect()) {
                  if (oOCLExp instanceof TCGOCLOperation) {
                    TCGOCLOperation oCallExp = (TCGOCLOperation) oOCLExp;
                    if(oCallExp.getOperationName().equals("="))
                      return ErrorClass.CONTRADICTION;
//                    if(oCallExp.getOperationName().equals(">=")) {
//                      oCallExp.setOperationName(">");
//                    }
                  }
                }
               
                boolean bAdaptationSuccessful = oTransitionInstance.adaptEventParameterValueRanges(
                    oReferencedTCGParameter, oValueTypeRange);
                if(bAdaptationSuccessful) {
                  // remember the elements that should not be considered from now on
                  in_oExpressionChangeLog.getRemovedExpressions().add(oOCLExp);
                }
                else
                  //return ErrorClass.NOSOLUTION;
                  return ErrorClass.CONTRADICTION;
              }
            }
          }
        }
//      }
     
      if(Configuration.isSearchForMutualDependentInputParameters()) {
        /*
         * create event parameter instances for later evaluated expressions
         * - with a reference to the corresponding expression copy
         */
        for(LateEvaluationGroup oGroup : m_oTestCaseRunnerState.getLateEvaluationGroups()) {
         
          List<TCGOCLAtom> colRemovedElements = new ArrayList<TCGOCLAtom>();
          for(TCGOCLAtom oAtom : oGroup.getElementsToFindPostconditionFor()) {
            for(TCGParameter oTCGParameter : in_oEvent.getParameters())
            {
              TCGParameter oReferencedTCGParameter =
                TCGParameterHelperClass.findParameterElementMatchingToReference(
                    oTCGParameter, oTransitionInstance, oAtom);
              // referenced parameter
              if(oReferencedTCGParameter != null)
              {
                // try to find matching eventparameterinstances and reuse them
                // TODO: check: klappt das immer?
                EventParameterInstance oEPInstance =
                  oTransitionInstance.getInstanceForTCGParameter(oReferencedTCGParameter);
               
                // if not found: create a new one
                if(oEPInstance == null) {
                  oEPInstance = new EventParameterInstance(oReferencedTCGParameter, oTransitionInstance);
                  oTransitionInstance.getParameterInstances().add(oEPInstance);
                }
               
                // remove the atom from the list of searched elements
                colRemovedElements.add(oAtom);
                // establish a connection between the atom and the event parameter instance
View Full Code Here

    // current transition sequence is in wrong order -> reverse
    Collections.reverse(m_oCreatedTestCase.getTransitionInstances());
    // set unique naming to transition instances
    for(int i = 0; i < m_oCreatedTestCase.getTransitionInstances().size(); ++i)
    {
      TransitionInstance oTransitionInstance =
        m_oCreatedTestCase.getTransitionInstances().get(i);
      oTransitionInstance.setName(String.valueOf(i));
    }
    m_oCreatedTestCase.getLateEvaluationGroups().addAll(
        m_oTestCaseRunnerState.getLateEvaluationGroups());
    m_oCreatedTestCase.connectTransitionInstances();
    m_oCreatedTestCase.createMissingParameterInstances();
View Full Code Here

//    }

    // faster approach: compare only the test goals whose base element
    // is the source node of the current transition instance
    for(int i = 0; i < in_oTestCase.getTransitionInstances().size(); ++i) {
      TransitionInstance oTransitionInstance = in_oTestCase.getTransitionInstances().get(i);
//      TCGNode oSourceNode = oTransitionInstance.getSourceNode();
      TCGNode oSourceNode = oTransitionInstance.findLastVisitedNodeContainedOrEqualToCurrentNode();
      checkSatisfactionForNodeAndTransitionInstance(
          oTransitionInstance, oSourceNode, in_oTestCase);
      checkSatisfactionForNodeAndTransitionInstance(
          oTransitionInstance, oTransitionInstance.getTargetNode(), in_oTestCase);
    }
  }
View Full Code Here

   * finds the transition instance at which the current event is defined
   */
  public static TransitionInstance findTransitionInstanceDefiningTheCurrentEvent(
      TransitionInstance in_oTransitionInstance)
  {
    TransitionInstance oRunningTransitionInstance = in_oTransitionInstance;
    if(oRunningTransitionInstance.getCalledEvent() != null)
      return oRunningTransitionInstance;
    // source node of the transition instance is no UML State
    while((oRunningTransitionInstance.getSourceNode().getOriginalNode() == null) &&
        (oRunningTransitionInstance.getPrecedingTransitionInstance() != null))
    {
      oRunningTransitionInstance = oRunningTransitionInstance.getPrecedingTransitionInstance();
      if(oRunningTransitionInstance.getCalledEvent() != null)
        return oRunningTransitionInstance;
    }
    return null;
   
//    TransitionInstance oRunningTransitionInstance = in_oTransitionInstance;
View Full Code Here

    oDNF.getConjunctions().add(oConjunction);
    // 1) collect all used preconditions backwards in the line of transition instances
    // until an event was called
    // 2) the guard condition of the test goal must be satisfied by the
    // guard conditions of the transition instances
    TransitionInstance oTransitionInstance = in_oTransitionInstance;
    // add all conditions of the very transition
    oConjunction.getExpressions().addAll(oTransitionInstance.getUsedPreConditions());

    // if no explicit trigger is given: collect guard conditions until explicit trigger
    while((oTransitionInstance.getCalledEvent() == null ||
        oTransitionInstance.getCalledEvent().isDefaultEvent())) {
     
      oTransitionInstance = oTransitionInstance.getPrecedingTransitionInstance();
      if(oTransitionInstance == null)
        break;
     
      oConjunction.getExpressions().addAll(oTransitionInstance.getUsedPreConditions());
    }
   
    return TCGDisjunctiveNormalFormHelperClass.firstDNFIsSatisfiedBySecondDNF(
        in_oDNF, oDNF, false);
  }
View Full Code Here

 
  private void removeConditionsForDefaultCalls(TestCase in_oTestCase)
  {
    for(int n = 0; n < in_oTestCase.getTransitionInstances().size(); ++n)
    {
      TransitionInstance oTransitionInstance = in_oTestCase.getTransitionInstances().get(n);
     
      // last event call is default
      if(previousEventCallIsDefault(in_oTestCase, n))
      {
        // remove guard condition and operation's precondition
        oTransitionInstance.getUsedPreConditions().clear();
      }

      // next event call is default
      if(nextEventCallIsDefaultOrNullAndTheGuardIsSatisfied(in_oTestCase, n, false))
      {
        // remove operations postcondition and following state invariant
        oTransitionInstance.getUsedPostConditions().clear();
      }
      if(nextEventCallIsDefaultOrNullAndTheGuardIsSatisfied(in_oTestCase, n, true))
      {
        oTransitionInstance.useNextStateInvariant(false);       
      }
    }
  }
View Full Code Here

  }
 
  private void addConditionsAfterLastDefaultCall(TestCase in_oTestCase)
  {
    int n = in_oTestCase.getTransitionInstances().size() - 1;
    TransitionInstance oTransitionInstance = in_oTestCase.getTransitionInstances().get(n);
    List<TCGTransition> colAddedTransitions = new ArrayList<TCGTransition>(); // do not add the same transition twice!
    List<TransitionInstance> colTransitionInstances = new ArrayList<TransitionInstance>();
    colTransitionInstances.add(oTransitionInstance); // TODO why use only the last one? there can be more (parallelism) ...
   
    boolean bFoundAdditionalTransitions = true;
    while(bFoundAdditionalTransitions) {
      bFoundAdditionalTransitions = false;
      List<TransitionInstance> colTmpTransInst = new ArrayList<TransitionInstance>();
     
      for(TransitionInstance oTransInst : colTransitionInstances) {
//        if(TCGTransitionHelperClass.transitionHasNoEventTrigger(oTransInst.getTransition())) {
//        if(nextEventCallIsDefaultOrNull(in_oTestCase, n, false)) {
          // enlarge test case by the next few states
        if(oTransInst.getTransition() == null)
          continue;
       
        for(TCGNode oNode : TCGTransitionHelperClass.getTargetNodes(oTransInst.getTransition())) {
          List<TCGTransition> colOutgoingTransitions = TCGNodeHelperClass.getOutgoingTransitions(oNode);
          if(colOutgoingTransitions.size() == 1) { // TODO watch for parallelism
            TCGTransition oTransition = colOutgoingTransitions.get(0);
            if(TCGTransitionHelperClass.transitionHasNoEventTrigger(oTransition)) {
              if(colAddedTransitions.contains(oTransition))
                continue;
               
              if(TCGTransitionHelperClass.transitionHasNoEventTrigger(oTransition)) {
                TransitionInstance oNewTransitionInstance = new TransitionInstance(oTransition);
                in_oTestCase.getTransitionInstances().add(oNewTransitionInstance);
                colTmpTransInst.add(oNewTransitionInstance);
                colAddedTransitions.add(oTransition);
                bFoundAdditionalTransitions = true;
              }
View Full Code Here

    TestCase in_oTestCase,
    int in_nCurrentTransitionIndex)
  {
    for(int n = in_nCurrentTransitionIndex; n >= 0; --n)
    {
      TransitionInstance oTransitionInstance = in_oTestCase.getTransitionInstances().get(n);
      TCGEvent oEvent = oTransitionInstance.getCalledEvent();
      if(oEvent != null)
      {
        return oEvent.isDefaultEvent();
      }
    }
View Full Code Here

  private boolean nextEventCallIsDefaultOrNullAndTheGuardIsSatisfied(
    TestCase in_oTestCase,
    int in_nCurrentTransitionIndex,
    boolean in_bAlsoIncludeNullEvents)
  {
    TransitionInstance oPreviousTransitionInstance =
      in_oTestCase.getTransitionInstances().get(in_nCurrentTransitionIndex);
    for(int n = in_nCurrentTransitionIndex + 1; n < in_oTestCase.getTransitionInstances().size(); ++n)
    {
      TransitionInstance oCurrentTransitionInstance =
        in_oTestCase.getTransitionInstances().get(n);
      // source and target nodes must be in the same region -> one is substate of the other
      if(TCGNodeHelperClass.firstNodeIsSubStateOfOrEqualToSecondNode(
          oPreviousTransitionInstance.getTargetNode(), oCurrentTransitionInstance.getSourceNode()) ||
          TCGNodeHelperClass.firstNodeIsSubStateOfOrEqualToSecondNode(
          oCurrentTransitionInstance.getSourceNode(), oPreviousTransitionInstance.getTargetNode())) {
        TCGEvent oEvent = oCurrentTransitionInstance.getCalledEvent();
       
        if(oEvent != null) {
          return oEvent.isDefaultEvent();
        }
        else if(in_bAlsoIncludeNullEvents)
          return true;
      }
    }
   
    // last transition instance and still no event found -> check the outgoing transitions of the test case's last node
    TransitionInstance oTransitionInstance = in_oTestCase.getTransitionInstances().get(
        in_oTestCase.getTransitionInstances().size() - 1);
    TCGNode oLastNode = oTransitionInstance.getTargetNode();
    for(TCGTransition oOutgoingTransition : TCGNodeHelperClass.getOutgoingTransitions(oLastNode)) {
      if(oOutgoingTransition.isCanBeProcessed()) {
        for(TCGEvent oEvent : oOutgoingTransition.getEvents()) {
          if (oEvent.isDefaultEvent() &&
            TCGTransitionInstanceHelperClass.checkSatisfactionOfCondition(
View Full Code Here

TOP

Related Classes of net.sf.parteg.base.testcasegraph.testsuite.TransitionInstance

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.