Skip to content

Commit

Permalink
Implement markings
Browse files Browse the repository at this point in the history
  • Loading branch information
bartwesselink committed Jul 5, 2022
1 parent e3acf0b commit b90d45e
Show file tree
Hide file tree
Showing 49 changed files with 529 additions and 434 deletions.
2 changes: 1 addition & 1 deletion extension/syntaxes/rscd.tmLanguage.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
},
"keyword": {
"name": "keyword.control.rscd",
"match": "\\b(cancel|use|do|integer|none|robot|feedback|action|from|links|state|if|needs|incoming|double|disables|enum|provide|true|object|outgoing|request|import|string|error|interface|default|library|goto|array|datatype|and|value|on|or|initial|false|requirement|message|transition|with|component|boolean|service|response|variable|behaviour|to)\\b"
"match": "\\b(cancel|use|do|integer|none|robot|feedback|action|from|links|state|if|needs|incoming|double|disables|enum|provide|true|object|outgoing|request|import|string|error|interface|default|library|goto|array|datatype|and|value|on|or|initial|marked|false|requirement|message|transition|with|component|boolean|service|response|variable|behaviour|to)\\b"
}
},
"patterns": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class CorrectResultTypeRuleTest {
service test_service with request: boolean, response: boolean links unit
behaviour {
initial state idle {
initial marked state idle {
on request to test_message
on request to test_service
on response from test_service
Expand All @@ -51,7 +51,7 @@ class CorrectResultTypeRuleTest {
service test_service with request: boolean, response: boolean links unit
behaviour {
initial state idle {
initial marked state idle {
on feedback from test_service
}
}
Expand All @@ -74,7 +74,7 @@ class CorrectResultTypeRuleTest {
service test_service with request: boolean, response: boolean links unit
behaviour {
initial state idle {
initial marked state idle {
on request to test_message
}
}
Expand All @@ -97,7 +97,7 @@ class CorrectResultTypeRuleTest {
service test_service with request: boolean, response: boolean links unit
behaviour {
initial state idle {
initial marked state idle {
on response to test_message
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class IntegerRangeRequiredRuleTest {
behaviour {
variable current_distance: integer(0..20) = 0
initial state idle {
initial marked state idle {
on response from distance do current_distance := value
}
}
Expand All @@ -50,7 +50,7 @@ class IntegerRangeRequiredRuleTest {
behaviour {
variable current_distance: integer = 0
initial state idle {
initial marked state idle {
on response from distance do current_distance := value
}
}
Expand All @@ -74,7 +74,7 @@ class IntegerRangeRequiredRuleTest {
behaviour {
variable current_distance: integer(0..20) = 0
initial state idle {
initial marked state idle {
on response from distance do current_distance := value
}
}
Expand Down Expand Up @@ -102,7 +102,7 @@ class IntegerRangeRequiredRuleTest {
behaviour {
variable current_distance: integer(0..20) = 0
initial state idle {
initial marked state idle {
on response from distance do current_distance := value.distance
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class InterfaceLinkRequiredRuleTest {
outgoing message distance with type: Complex links test
behaviour {
initial state idle {}
initial marked state idle {}
}
}
}
Expand All @@ -51,7 +51,7 @@ class InterfaceLinkRequiredRuleTest {
outgoing message distance with type: Complex
behaviour {
initial state idle {}
initial marked state idle {}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package nl.tue.robotsupervisorycontrollerdsl.tests.validation.rules

import com.google.inject.Inject
import org.eclipse.xtext.testing.InjectWith
import org.eclipse.xtext.testing.extensions.InjectionExtension
import org.eclipse.xtext.testing.util.ParseHelper
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.^extension.ExtendWith
import nl.tue.robotsupervisorycontrollerdsl.robotSupervisoryControllerDSL.Base
import nl.tue.robotsupervisorycontrollerdsl.tests.RobotSupervisoryControllerDSLInjectorProvider
import org.eclipse.xtext.testing.validation.ValidationTestHelper
import nl.tue.robotsupervisorycontrollerdsl.robotSupervisoryControllerDSL.RobotSupervisoryControllerDSLPackage
import nl.tue.robotsupervisorycontrollerdsl.validation.rules.MarkedStateRule

@ExtendWith(InjectionExtension)
@InjectWith(RobotSupervisoryControllerDSLInjectorProvider)
class MarkedStateRuleTest {
@Inject extension ParseHelper<Base>
@Inject extension ValidationTestHelper

@Test
def void checkValid() {
"
robot UnitTestRobot {
component Component {
behaviour {
initial marked state idle {}
}
}
}
".parse.assertNoErrors
}

@Test
def void checkNoMarkedState() {
"
robot UnitTestRobot {
component Component {
behaviour {
initial state idle {}
}
}
}
".parse.assertError(
RobotSupervisoryControllerDSLPackage.Literals.AUTOMATON,
MarkedStateRule.NO_MARKED_STATE
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class NoAssignmentOnMessagesToNodeRuleTest {
behaviour {
variable result: boolean = false
initial state idle {
initial marked state idle {
on response from test_message do result := value
}
}
Expand All @@ -47,7 +47,7 @@ class NoAssignmentOnMessagesToNodeRuleTest {
behaviour {
variable result: boolean = false
initial state idle {
initial marked state idle {
on request to test_message do result := value
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class NoAssignmentOutsideScopeRuleTest {
behaviour {
variable result: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result := value
}
}
Expand All @@ -40,7 +40,7 @@ class NoAssignmentOutsideScopeRuleTest {
behaviour {
variable result: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_two do result := value
}
}
Expand All @@ -59,7 +59,7 @@ class NoAssignmentOutsideScopeRuleTest {
behaviour {
variable result: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do Component2.result := value
}
}
Expand All @@ -71,7 +71,7 @@ class NoAssignmentOutsideScopeRuleTest {
behaviour {
variable result: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_two do Component1.result := value
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class SingleComponentBehaviourRuleTest {
robot UnitTestRobot {
component Component {
behaviour {
initial state idle {}
initial marked state idle {}
}
}
}
Expand All @@ -37,11 +37,11 @@ class SingleComponentBehaviourRuleTest {
robot UnitTestRobot {
component Component {
behaviour {
initial state idle {}
initial marked state idle {}
}
behaviour {
initial state idle {}
initial marked state idle {}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class SingleInitialStateRuleTest {
robot UnitTestRobot {
component Component {
behaviour {
initial state idle {}
initial marked state idle {}
}
}
}
Expand All @@ -37,8 +37,8 @@ class SingleInitialStateRuleTest {
robot UnitTestRobot {
component Component {
behaviour {
initial state idle {}
initial state start {}
initial marked state idle {}
initial marked state start {}
}
}
}
Expand All @@ -54,6 +54,7 @@ class SingleInitialStateRuleTest {
robot UnitTestRobot {
component Component {
behaviour {
marked state test {}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class TypeCheckRuleTest {
variable result_double: double
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_boolean := true or false
on response from test_message_one do result_boolean := true and false
on response from test_message_one do result_boolean := 5 > 0
Expand Down Expand Up @@ -74,7 +74,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_boolean := true or 1
}
}
Expand All @@ -97,7 +97,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_boolean := true and 1
}
}
Expand All @@ -120,7 +120,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_boolean := 5 > true
}
}
Expand All @@ -143,7 +143,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_boolean := 5 < true
}
}
Expand All @@ -166,7 +166,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_boolean := 5 >= true
}
}
Expand All @@ -189,7 +189,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_boolean := 5 <= true
}
}
Expand All @@ -212,7 +212,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_boolean := !5
}
}
Expand All @@ -235,7 +235,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_integer := -true
}
}
Expand All @@ -258,7 +258,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_integer := 5 * true
}
}
Expand All @@ -281,7 +281,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_integer := 5 / true
}
}
Expand All @@ -304,7 +304,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_integer := 5 + true
}
}
Expand All @@ -327,7 +327,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_integer := 5 - true
}
}
Expand All @@ -350,7 +350,7 @@ class TypeCheckRuleTest {
variable result_integer: integer(0..20) = 0
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
transition if 5
}
}
Expand Down Expand Up @@ -410,7 +410,7 @@ class TypeCheckRuleTest {
behaviour {
variable result_boolean: boolean = false
initial state idle {
initial marked state idle {
on response from test_message_one do result_boolean := 5
}
}
Expand All @@ -430,7 +430,7 @@ class TypeCheckRuleTest {
behaviour {
variable result_boolean: boolean = 0
initial state idle {}
initial marked state idle {}
}
}
}
Expand Down
Loading

0 comments on commit b90d45e

Please sign in to comment.