SemanticAdaptationGeneratorTest.xtend 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*
  2. * generated by Xtext 2.10.0
  3. */
  4. package be.uantwerpen.ansymo.semanticadaptation.tests
  5. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.Adaptation
  6. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.AtomicUnity
  7. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.BoolLiteral
  8. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.InnerFMU
  9. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.MultiplyUnity
  10. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.Port
  11. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.SemanticAdaptation
  12. import com.google.inject.Inject
  13. import org.eclipse.xtext.testing.InjectWith
  14. import org.eclipse.xtext.testing.XtextRunner
  15. import org.eclipse.xtext.util.IAcceptor
  16. import org.eclipse.xtext.xbase.testing.CompilationTestHelper
  17. import org.eclipse.xtext.xbase.testing.CompilationTestHelper.Result
  18. import org.junit.Test
  19. import org.junit.runner.RunWith
  20. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.Variable
  21. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.Assignment
  22. @RunWith(XtextRunner)
  23. @InjectWith(SemanticAdaptationInjectorProvider)
  24. class SemanticAdaptationGeneratorTest extends AbstractSemanticAdaptationTest{
  25. @Inject extension CompilationTestHelper
  26. @Test def test_inferTypesAndUnits_sample1() { __generate('input/canonical_generation/sample1.sa', new IAcceptor<CompilationTestHelper.Result>(){
  27. override accept(Result t) {
  28. var Adaptation sa = t.resourceSet.resources.head.allContents.toIterable.filter(SemanticAdaptation).last.elements.filter(Adaptation).head
  29. sa.name == "outerFMU"
  30. sa.eAllContents.filter(Port).filter[p | p.name=="ext_input_port3"].head.unity instanceof MultiplyUnity
  31. sa.eAllContents.filter(InnerFMU).filter[f | f.name=="innerFMU2"].head
  32. .eAllContents.filter(Port).filter[p | p.name=="input_port1"].head.type == "Real"
  33. sa.eAllContents.filter(InnerFMU).filter[f | f.name=="innerFMU2"].head
  34. .eAllContents.filter(Port).filter[p | p.name=="outout_port1"].head.type == "Real"
  35. sa.eAllContents.filter(InnerFMU).filter[f | f.name=="innerFMU2"].head
  36. .eAllContents.filter(Port).filter[p | p.name=="outout_port1"].head.unity instanceof AtomicUnity
  37. }
  38. }) }
  39. @Test def test_addInputPorts_sample1() { __generate('input/canonical_generation/sample1.sa', new IAcceptor<CompilationTestHelper.Result>(){
  40. override accept(Result t) {
  41. var Adaptation sa = t.resourceSet.resources.head.allContents.toIterable.filter(SemanticAdaptation).last.elements.filter(Adaptation).head
  42. sa.inports.filter[p | p.name=="innerFMU1__input_port2"].head.type == "Bool"
  43. sa.inports.filter[p | p.name=="innerFMU2__input_port3"].head.targetdependency.owner.name == "innerFMU2"
  44. sa.inports.filter[p | p.name=="innerFMU2__input_port3"].head.targetdependency.port.name == "input_port3"
  45. }
  46. }) }
  47. @Test def test_addParams_sample1() { __generate('input/canonical_generation/sample1.sa', new IAcceptor<CompilationTestHelper.Result>(){
  48. override accept(Result t) {
  49. var Adaptation sa = t.resourceSet.resources.head.allContents.toIterable.filter(SemanticAdaptation).last.elements.filter(Adaptation).head
  50. sa.params.head.declarations.filter[p | p.name=="INIT_EXT_INPUT_PORT3"].head.type == "Real"
  51. sa.params.head.declarations.filter[p | p.name=="INIT_INNERFMU1__INPUT_PORT2"].head.expr instanceof BoolLiteral
  52. }
  53. }) }
  54. @Test def test_addInVars_sample1() { __generate('input/canonical_generation/sample1.sa', new IAcceptor<CompilationTestHelper.Result>(){
  55. override accept(Result t) {
  56. var Adaptation sa = t.resourceSet.resources.head.allContents.toIterable.filter(SemanticAdaptation).last.elements.filter(Adaptation).head
  57. sa.in.globalInVars.head.declarations.filter[p | p.name=="stored__innerFMU2__input_port2"].head.type == "Bool"
  58. sa.in.globalInVars.head.declarations.filter[p | p.name=="stored__innerFMU2__input_port3"].head.expr instanceof Variable
  59. }
  60. }) }
  61. @Test def test_addExternal2StoredAssignments_sample1() { __generate('input/canonical_generation/sample1.sa', new IAcceptor<CompilationTestHelper.Result>(){
  62. override accept(Result t) {
  63. var Adaptation sa = t.resourceSet.resources.head.allContents.toIterable.filter(SemanticAdaptation).last.elements.filter(Adaptation).head
  64. sa.in.rules.head.statetransitionfunction.statements.head instanceof Assignment
  65. (sa.in.rules.head.statetransitionfunction.statements.head as Assignment).lvalue.ref.name == "stored__innerFMU2__input_port3"
  66. ((sa.in.rules.head.statetransitionfunction.statements.head as Assignment).expr as Variable).ref.name == "innerFMU2__input_port3"
  67. }
  68. }) }
  69. @Test def window_SA_parseNoExceptions() { __generate('input/power_window_case_study/window_sa.BASE.sa', new IAcceptor<CompilationTestHelper.Result>(){
  70. override accept(Result t) { }
  71. }) }
  72. @Test def window_SA_parseNoExceptions2() { __generate('input/power_window_case_study/window_sa_comp_units.sa', new IAcceptor<CompilationTestHelper.Result>(){
  73. override accept(Result t) { }
  74. }) }
  75. @Test def lazy_SA_parseNoExceptions() { __generate('input/power_window_case_study/lazy.sa', new IAcceptor<CompilationTestHelper.Result>(){
  76. override accept(Result t) { }
  77. }) }
  78. def void __generate(String filename, IAcceptor<CompilationTestHelper.Result> acceptor) {
  79. //readFile(filename).assertCompilesTo('oracles/power_window_case_study/lazy.BASE.sa')
  80. readFile(filename).compile(acceptor)
  81. }
  82. }