@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()); }
@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()); }
@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()); }