コード例 #1
0
  @Test
  public void testTransitionCheckSequenceWithGuard() {

    EventDefinition e1 = _createEventDefinition("e1", null);
    EventDefinition e2 = _createEventDefinition("e2", null);

    ReactionTrigger tr1 = _createReactionTrigger(null);
    _createRegularEventSpec(e1, tr1);
    _createRegularEventSpec(e2, tr1);

    PrimitiveValueExpression exp = _createValue(false);
    tr1.setGuard(createGuardExpression(exp));

    Transition t = SGraphFactory.eINSTANCE.createTransition();
    t.setTrigger(tr1);

    Statechart sc = _createStatechart("test");
    Region region = _createRegion("r1", sc);
    t.setSource(_createState("A", region));
    t.setTarget(_createState("B", region));

    Reaction reaction = behaviorMapping.mapTransition(t);

    // now check the expression structure ...

    // the root is an and condition with the trigger check as the first
    // (left) part and the guard as the right (second) part.
    LogicalAndExpression and = (LogicalAndExpression) reaction.getCheck().getCondition();
    LogicalOrExpression triggerCheck = (LogicalOrExpression) and.getLeftOperand();
    PrimitiveValueExpression guardCheck = (PrimitiveValueExpression) and.getRightOperand();

    assertClass(ElementReferenceExpression.class, triggerCheck.getLeftOperand());
    assertClass(ElementReferenceExpression.class, triggerCheck.getRightOperand());
    assertEquals(
        e1.getName(),
        ((NamedElement) ((ElementReferenceExpression) triggerCheck.getLeftOperand()).getReference())
            .getName());
    assertEquals(
        e2.getName(),
        ((NamedElement)
                ((ElementReferenceExpression) triggerCheck.getRightOperand()).getReference())
            .getName());

    assertBoolLiteral(false, guardCheck.getValue());
  }
コード例 #2
0
  @Test
  public void testTransitionCheckSequenceWithoutGuard() {

    EventDefinition e1 = _createEventDefinition("e1", null);
    EventDefinition e2 = _createEventDefinition("e2", null);

    ReactionTrigger tr1 = _createReactionTrigger(null);
    _createRegularEventSpec(e1, tr1);
    _createRegularEventSpec(e2, tr1);

    Transition t = SGraphFactory.eINSTANCE.createTransition();
    t.setTrigger(tr1);

    Statechart sc = _createStatechart("test");
    Region region = _createRegion("r1", sc);
    t.setSource(_createState("A", region));
    t.setTarget(_createState("B", region));

    Reaction reaction = behaviorMapping.mapTransition(t);

    assertTrue(reaction.getCheck().getCondition() instanceof LogicalOrExpression);
    assertClass(
        ElementReferenceExpression.class,
        ((LogicalOrExpression) reaction.getCheck().getCondition()).getLeftOperand());
    assertClass(
        ElementReferenceExpression.class,
        ((LogicalOrExpression) reaction.getCheck().getCondition()).getRightOperand());

    assertEquals(
        e1.getName(),
        ((NamedElement)
                ((ElementReferenceExpression)
                        ((LogicalOrExpression) reaction.getCheck().getCondition()).getLeftOperand())
                    .getReference())
            .getName());
    assertEquals(
        e2.getName(),
        ((NamedElement)
                ((ElementReferenceExpression)
                        ((LogicalOrExpression) reaction.getCheck().getCondition())
                            .getRightOperand())
                    .getReference())
            .getName());
  }
コード例 #3
0
  @Test
  public void testTransitionCheckSequenceWithoutTrigger() {

    ReactionTrigger tr1 = _createReactionTrigger(null);
    PrimitiveValueExpression exp = _createValue(false);
    tr1.setGuard(createGuardExpression(exp));

    Transition t = SGraphFactory.eINSTANCE.createTransition();
    t.setTrigger(tr1);

    Statechart sc = _createStatechart("test");
    Region region = _createRegion("r1", sc);
    t.setSource(_createState("A", region));
    t.setTarget(_createState("B", region));

    Reaction reaction = behaviorMapping.mapTransition(t);

    // now check the expression structure ...

    // the root is an and condition with the trigger check as the first
    // (left) part and the guard as the right (second) part.
    PrimitiveValueExpression guard = (PrimitiveValueExpression) reaction.getCheck().getCondition();
    assertBoolLiteral(false, guard.getValue());
  }