test_modelverse.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from modelverse import *
  2. init()
  3. login("admin", "admin")
  4. model_add("MetamodelA", "SimpleClassDiagrams", """Class A {}""")
  5. model_add("MetamodelB", "SimpleClassDiagrams", """Class B {}""")
  6. model_add("MetamodelC", "SimpleClassDiagrams", """Class C {}""")
  7. model_add("ModelA", "MetamodelA", """A a1 {}""")
  8. model_add("ModelB", "MetamodelB", """B b1 {}""")
  9. model_add("SCCD", "SimpleClassDiagrams", open("models/SCCD.mvc", 'r').read())
  10. model_add("my_SCCD", "SCCD", open("models/test_operations_in_SCCD.mvc", 'r').read())
  11. transformation_add_MT({"A": "MetamodelA", "B": "MetamodelB"}, {"B": "MetamodelB", "C": "MetamodelC"}, "TransformY", \
  12. """
  13. Composite schedule {
  14. {Contains} Failure fail {}
  15. {Contains} Success success {}
  16. {Contains} ForAll f {
  17. LHS {
  18. Pre_A/A {
  19. label = "0"
  20. }
  21. }
  22. RHS {
  23. Post_C/C {
  24. label = "1"
  25. }
  26. }
  27. }
  28. }
  29. Initial (schedule, f) {}
  30. OnSuccess (f, success) {}
  31. OnFailure (f, fail) {}
  32. """
  33. )
  34. transformation_add_AL({"B": "MetamodelB", "C": "MetamodelC"}, {"B": "MetamodelB", "A": "MetamodelA"}, "OperationZ", \
  35. """
  36. include "primitives.alh"
  37. include "object_operations.alh"
  38. include "modelling.alh"
  39. Boolean function size_of_model(model : Element):
  40. log("Number of instances of A: " + cast_value(set_len(allInstances(model, "A/A"))))
  41. log("Number of instances of B: " + cast_value(set_len(allInstances(model, "B/B"))))
  42. log("Number of instances of C: " + cast_value(set_len(allInstances(model, "C/C"))))
  43. return True!
  44. """
  45. )
  46. transformation_add_AL({"SCCD": "SCCD"}, {}, "SCCD_execute", open("models/SCCD_execute.alc", 'r').read())
  47. transformation_execute_AL("SCCD_execute", {"SCCD": "my_SCCD"}, {})