|
@@ -12,6 +12,7 @@
|
|
|
package org.yakindu.sct.model.stext.test.validation;
|
|
|
|
|
|
import static org.eclipse.xtext.junit4.validation.AssertableDiagnostics.errorCode;
|
|
|
+import static org.eclipse.xtext.junit4.validation.AssertableDiagnostics.errorMsg;
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
import static org.junit.Assert.assertNotNull;
|
|
|
import static org.junit.Assert.assertTrue;
|
|
@@ -231,11 +232,11 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
|
|
|
String scope = "internal : event a : integer var myVar : integer";
|
|
|
EObject model = super.parseExpression("entry / myVar = 5", TransitionSpecification.class.getSimpleName(), scope);
|
|
|
AssertableDiagnostics validationResult = tester.validate(model);
|
|
|
- validationResult.assertError(LOCAL_REACTIONS_NOT_ALLOWED);
|
|
|
+ validationResult.assertError(ENTRY_EXIT_TRIGGER_NOT_ALLOWED);
|
|
|
|
|
|
model = super.parseExpression("exit / myVar = 5", TransitionSpecification.class.getSimpleName(), scope);
|
|
|
validationResult = tester.validate(model);
|
|
|
- validationResult.assertError(LOCAL_REACTIONS_NOT_ALLOWED);
|
|
|
+ validationResult.assertError(ENTRY_EXIT_TRIGGER_NOT_ALLOWED);
|
|
|
|
|
|
model = super.parseExpression("oncycle / myVar = 5", TransitionSpecification.class.getSimpleName(), scope);
|
|
|
validationResult = tester.validate(model);
|
|
@@ -245,6 +246,33 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
|
|
|
validationResult = tester.validate(model);
|
|
|
validationResult.assertOK();
|
|
|
}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void checkReactionTriggerRegularEvent(){
|
|
|
+
|
|
|
+ String scope = "interface : in event e var x : integer var y : integer operation op():integer";
|
|
|
+
|
|
|
+ EObject model = super.parseExpression("e", TransitionSpecification.class.getSimpleName(), scope);
|
|
|
+ AssertableDiagnostics validationResult = tester.validate(model);
|
|
|
+ validationResult.assertOK();
|
|
|
+
|
|
|
+ model = super.parseExpression("x", TransitionSpecification.class.getSimpleName(), scope);
|
|
|
+ validationResult = tester.validate(model);
|
|
|
+ validationResult.assertError(TRIGGER_IS_NO_EVENT);
|
|
|
+
|
|
|
+ model = super.parseExpression("e, x", TransitionSpecification.class.getSimpleName(), scope);
|
|
|
+ validationResult = tester.validate(model);
|
|
|
+ validationResult.assertError(TRIGGER_IS_NO_EVENT);
|
|
|
+
|
|
|
+ model = super.parseExpression("op()", TransitionSpecification.class.getSimpleName(), scope);
|
|
|
+ validationResult = tester.validate(model);
|
|
|
+ validationResult.assertError(TRIGGER_IS_NO_EVENT);
|
|
|
+
|
|
|
+ model = super.parseExpression("x, y", TransitionSpecification.class.getSimpleName(), scope);
|
|
|
+ validationResult = tester.validate(model);
|
|
|
+ validationResult.assertAll(errorMsg("Trigger 'x' is no event."), errorMsg("Trigger 'y' is no event."));
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* @see STextJavaValidator#checkReactionEffectActions(org.yakindu.sct.model.stext.stext.ReactionEffect)
|
|
@@ -284,6 +312,8 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* @see STextJavaValidator#checkEventDefinition(org.yakindu.sct.model.stext.stext.EventDefinition)
|
|
|
*/
|
|
@@ -352,6 +382,33 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
|
|
|
//Nothing to do -> this is covered by ContextPredicateProviderTest
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void checkValueOfNoEvent(){
|
|
|
+ String decl = "interface: in event e1:integer var x:integer operation op():integer interface i: in event e2:integer var y:integer";
|
|
|
+
|
|
|
+ EObject model = super.parseExpression("valueof(e1)", Expression.class.getSimpleName(), decl);
|
|
|
+ AssertableDiagnostics result = tester.validate(model);
|
|
|
+ result.assertOK();
|
|
|
+
|
|
|
+ model = super.parseExpression("valueof(i.e2)", Expression.class.getSimpleName(), decl);
|
|
|
+ result = tester.validate(model);
|
|
|
+ result.assertOK();
|
|
|
+
|
|
|
+ model = super.parseExpression("valueof(x)", Expression.class.getSimpleName(), decl);
|
|
|
+ result = tester.validate(model);
|
|
|
+ result.assertError(VALUE_OF_REQUIRES_EVENT);
|
|
|
+
|
|
|
+ model = super.parseExpression("valueof(i.y)", Expression.class.getSimpleName(), decl);
|
|
|
+ result = tester.validate(model);
|
|
|
+ result.assertError(VALUE_OF_REQUIRES_EVENT);
|
|
|
+
|
|
|
+ model = super.parseExpression("valueof(op())", Expression.class.getSimpleName(), decl);
|
|
|
+ result = tester.validate(model);
|
|
|
+ result.assertError(VALUE_OF_REQUIRES_EVENT);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* checks tht each @Check method of {@link STextJavaValidator} has a @Test
|
|
|
* method in this class with the same name
|