test_pn_interface.py 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  1. import unittest
  2. from utils import run_file
  3. all_files = [ "pn_interface.alc",
  4. "primitives.alc",
  5. "object_operations.alc",
  6. "conformance_scd.alc",
  7. "library.alc",
  8. "constructors.alc",
  9. "metamodels.alc",
  10. "--fast",
  11. ]
  12. greeting = ["Welcome to the Model Management Interface, running live"
  13. " on the Modelverse!",
  14. "Use 'help' command for a list of possible commands"]
  15. new = ["Metamodel to instantiate?", "Name of model?"]
  16. new_fail = ["Model exists; aborting"]
  17. loaded = ["Model loaded, ready for commands!",
  18. "Use 'help' command for a list of possible commands"]
  19. prompt_menu = ["Please give your command."]
  20. prompt_model = ["Please give your command."]
  21. load = ["Model to load?"]
  22. load_fail = ["Model not found; aborting"]
  23. instantiate = ["Type to instantiate?"]
  24. instantiate_name = ["Name of new element?"]
  25. instantiate_tokens= ["tokens : Integer?"]
  26. instantiate_ok = ["Instantiation successful!"]
  27. instantiate_source= ["Source name?"]
  28. instantiate_destination = ["Destination name?"]
  29. instantiate_weight= ["weight : Integer?"]
  30. list_menu = ["Found models:"]
  31. list_all = set([" PetriNets : SimpleClassDiagrams",
  32. " SimpleClassDiagrams : SimpleClassDiagrams",
  33. " LTM_bottom : LTM_bottom"])
  34. list_empty = list_menu + [list_all]
  35. list_abc = [" abc : PetriNets"]
  36. list_def = [" def : PetriNets"]
  37. list_model = ["List of all elements:"]
  38. list_p1 = [" p1 : Place"]
  39. list_p2 = [" p2 : Place"]
  40. list_t1 = [" t1 : Transition"]
  41. list_p2t = [" p2t : P2T"]
  42. list_t2p = [" t2p : T2P"]
  43. read = ["Element to read?"]
  44. read_p1 = ["Name: p1",
  45. "Type: Place",
  46. "Defines attributes:",
  47. "Attributes:",
  48. " tokens : Integer = 5"]
  49. read_p1_1 = ["Name: p1",
  50. "Type: Place",
  51. "Defines attributes:",
  52. "Attributes:",
  53. " tokens : Integer = 1"]
  54. read_p2 = ["Name: p2",
  55. "Type: Place",
  56. "Defines attributes:",
  57. "Attributes:",
  58. " tokens : Integer = 0"]
  59. read_t1 = ["Name: t1",
  60. "Type: Transition",
  61. "Defines attributes:",
  62. "Attributes:"]
  63. read_p2t = ["Name: p2t",
  64. "Type: P2T",
  65. "Source: p1",
  66. "Destination: t1",
  67. "Defines attributes:",
  68. "Attributes:",
  69. " weight : Integer = 2"]
  70. read_t2p = ["Name: t2p",
  71. "Type: T2P",
  72. "Source: t1",
  73. "Destination: p2",
  74. "Defines attributes:",
  75. "Attributes:",
  76. " weight : Integer = 1"]
  77. read_fail = ["Unknown element; aborting"]
  78. enabled = ["Enabled transitions:"]
  79. enabled_t1 = ["t1"]
  80. fire = ["Transition to fire?"]
  81. fire_t1 = [" p1: 3",
  82. " p2: 1"]
  83. fire_finish = ["Transition fired!"]
  84. fire_unknown = ["Unknown transition; aborting"]
  85. fire_no_enable = ["Cannot fire if not enabled; aborting"]
  86. delete = ["Model to delete?"]
  87. delete_ok = ["Deleted!"]
  88. delete_fail = ["Model not found; aborting"]
  89. rename_old = ["Old name?"]
  90. rename_new = ["New name?"]
  91. rename_ok = ["Rename complete!"]
  92. rename_fail_not_exists = ["Model not found; aborting"]
  93. rename_fail_exists= ["Model exists; aborting"]
  94. rename_model_old = ["Old name?"]
  95. rename_model_new = ["New name?"]
  96. rename_model_ok = ["Rename complete!"]
  97. rename_model_fail_not_exists = ["Unknown element; aborting"]
  98. rename_model_fail_exists= ["New name already used; aborting"]
  99. help_msg = ["Currently no model is loaded, so your operations are "
  100. "limited to:",
  101. " new -- Create a new model and save it for future "
  102. "use",
  103. " load -- Load a previously made model",
  104. " rename -- Rename a previously made model",
  105. " delete -- Delete a previously made model",
  106. " list -- Show a list of all stored models",
  107. " help -- Show a list of possible commands"]
  108. verify_ok = ["OK"]
  109. verify_fail_weight= ["Negative weight in arc p2t"]
  110. verify_fail_tokens= ["Negative number of tokens in Place p1"]
  111. verify_fail_structure = ["Source of model edge not typed by source of type: "
  112. "p2t"]
  113. list_types = ["List of types:",
  114. " Place : Class",
  115. " Transition : Class",
  116. " P2T : Association",
  117. " T2P : Association"]
  118. modify = ["Element to modify?"]
  119. modify_place = [" tokens : Integer"]
  120. modify_arc = [" weight : Integer"]
  121. modify_attribute = ["Attribute to modify?"]
  122. modify_value = ["New value?",
  123. "Modified!"]
  124. modify_fail_not_exists = ["Element does not exist; aborting"]
  125. modify_fail_no_attr=["Unknown attribute; aborting"]
  126. instantiate_place = instantiate + instantiate_name + instantiate_tokens +\
  127. instantiate_ok + prompt_model
  128. instantiate_transition = instantiate + instantiate_name + instantiate_ok +\
  129. prompt_model
  130. instantiate_arc = instantiate + instantiate_name + instantiate_source +\
  131. instantiate_destination + instantiate_weight +\
  132. instantiate_ok + prompt_model
  133. read_p1_full = read + read_p1 + prompt_model
  134. read_p2_full = read + read_p2 + prompt_model
  135. read_p1_as_p2 = read + [v.replace("p1", "p2") for v in read_p1] + prompt_model
  136. read_t1_full = read + read_t1 + prompt_model
  137. read_p2t_full = read + read_p2t + prompt_model
  138. read_t2p_full = read + read_t2p + prompt_model
  139. new_full = new + loaded + prompt_model
  140. delete_full = delete + delete_ok + prompt_menu
  141. init = greeting + prompt_menu
  142. rename_full = rename_old + rename_new + rename_ok + prompt_menu
  143. rename_model_full = rename_model_old + rename_model_new + rename_model_ok +\
  144. prompt_model
  145. help_full = help_msg + prompt_menu
  146. load_full = load + loaded + prompt_model
  147. verify_full = verify_ok + prompt_model
  148. types_full = list_types + prompt_model
  149. modify_place_full = modify + modify_place + modify_attribute + modify_value +\
  150. prompt_model
  151. class TestPetrinetInterface(unittest.TestCase):
  152. def test_po_pn_interface_new(self):
  153. self.pn_interface_new("PO")
  154. def test_co_pn_interface_new(self):
  155. self.pn_interface_new("CO")
  156. def pn_interface_new(self, mode):
  157. self.assertTrue(run_file(all_files, ["help", "new", "PetriNets", "abc"],
  158. init + help_full + new_full, mode))
  159. def test_po_pn_interface_list_empty(self):
  160. self.pn_interface_list_empty("PO")
  161. def test_co_pn_interface_list_empty(self):
  162. self.pn_interface_list_empty("CO")
  163. def pn_interface_list_empty(self, mode):
  164. self.assertTrue(run_file(all_files, ["list"],
  165. init + list_empty + prompt_model, mode))
  166. def test_po_pn_interface_list_one(self):
  167. self.pn_interface_list_one("PO")
  168. def test_co_pn_interface_list_one(self):
  169. self.pn_interface_list_one("CO")
  170. def pn_interface_list_one(self, mode):
  171. self.assertTrue(run_file(all_files,
  172. ["new", "PetriNets", "abc", "exit", "list"], init + new_full + prompt_menu +
  173. list_menu + [set(list_abc).union(list_all)] + prompt_menu, mode))
  174. def test_po_pn_interface_list_two(self):
  175. self.pn_interface_list_two("PO")
  176. def test_co_pn_interface_list_two(self):
  177. self.pn_interface_list_two("CO")
  178. def pn_interface_list_two(self, mode):
  179. self.assertTrue(run_file(all_files,
  180. ["new", "PetriNets", "abc", "exit", "new", "PetriNets", "def", "exit", "list"],
  181. init + new_full + prompt_menu + new_full + prompt_menu +
  182. list_menu + [set(list_abc).union(set(list_def)).union(list_all)] + prompt_menu, mode))
  183. def test_po_pn_interface_rename(self):
  184. self.pn_interface_rename("PO")
  185. def test_co_pn_interface_rename(self):
  186. self.pn_interface_rename("CO")
  187. def pn_interface_rename(self, mode):
  188. self.assertTrue(run_file(all_files,
  189. ["new", "PetriNets", "abc", "exit", "list", "rename", "abc", "def", "list",
  190. "load", "abc", "load", "def", "exit", "list"],
  191. init + new_full + prompt_menu + list_menu + [set(list_abc).union(list_all)] +
  192. prompt_menu + rename_full + list_menu + [set(list_def).union(list_all)] + prompt_menu +
  193. load + load_fail + prompt_menu + load_full + prompt_menu +
  194. list_menu + [set(list_def).union(list_all)] + prompt_menu, mode))
  195. def test_po_pn_interface_rename_fail_not_exists(self):
  196. self.pn_interface_rename_fail_not_exists("PO")
  197. def test_co_pn_interface_rename_fail_not_exists(self):
  198. self.pn_interface_rename_fail_not_exists("CO")
  199. def pn_interface_rename_fail_not_exists(self, mode):
  200. self.assertTrue(run_file(all_files,
  201. ["new", "PetriNets", "abc", "exit", "list", "rename", "def", "list", "load",
  202. "abc", "exit", "load", "def", "list"],
  203. init + new_full + prompt_menu + list_menu + [set(list_abc).union(list_all)] +
  204. prompt_menu + rename_old + rename_fail_not_exists + prompt_menu +
  205. list_menu + [set(list_abc).union(list_all)] + prompt_menu + load_full + prompt_menu +
  206. load + load_fail + prompt_menu + list_menu + [set(list_abc).union(list_all)] +
  207. prompt_menu, mode))
  208. def test_po_pn_interface_delete_only(self):
  209. self.pn_interface_delete_only("PO")
  210. def test_co_pn_interface_delete_only(self):
  211. self.pn_interface_delete_only("CO")
  212. def pn_interface_delete_only(self, mode):
  213. self.assertTrue(run_file(all_files,
  214. ["new", "PetriNets", "abc", "exit", "delete", "abc", "list"],
  215. init + new_full + prompt_menu + delete_full + list_empty +
  216. prompt_menu, mode))
  217. def test_po_pn_interface_delete(self):
  218. self.pn_interface_delete("PO")
  219. def test_co_pn_interface_delete(self):
  220. self.pn_interface_delete("CO")
  221. def pn_interface_delete(self, mode):
  222. self.assertTrue(run_file(all_files,
  223. ["new", "PetriNets", "abc", "exit", "new", "PetriNets", "def", "exit", "delete", "abc",
  224. "list"], init + new_full + prompt_menu + new_full + prompt_menu +
  225. delete_full + list_menu + [set(list_def).union(list_all)] + prompt_menu, mode))
  226. def test_po_pn_interface_delete_fail(self):
  227. self.pn_interface_delete_fail("PO")
  228. def test_co_pn_interface_delete_fail(self):
  229. self.pn_interface_delete_fail("CO")
  230. def pn_interface_delete_fail(self, mode):
  231. self.assertTrue(run_file(all_files,
  232. ["new", "PetriNets", "abc", "exit", "delete", "def", "list"],
  233. init + new_full + prompt_menu + delete + delete_fail +
  234. prompt_menu + list_menu + [set(list_abc).union(list_all)] + prompt_menu, mode))
  235. def test_po_pn_interface_new_reload(self):
  236. self.pn_interface_new_reload("PO")
  237. def test_co_pn_interface_new_reload(self):
  238. self.pn_interface_new_reload("CO")
  239. def pn_interface_new_reload(self, mode):
  240. self.assertTrue(run_file(all_files,
  241. ["new", "PetriNets", "abc", "exit", "load", "abc"], init + new_full +
  242. prompt_menu + load_full, mode))
  243. def test_po_pn_interface_new_fail(self):
  244. self.pn_interface_new_fail("PO")
  245. def test_co_pn_interface_new_fail(self):
  246. self.pn_interface_new_fail("CO")
  247. def pn_interface_new_fail(self, mode):
  248. self.assertTrue(run_file(all_files,
  249. ["new", "PetriNets", "abc", "exit", "new", "PetriNets", "abc"], init + new_full +
  250. prompt_menu + new + new_fail + prompt_menu, mode))
  251. def test_po_pn_interface_load_fail(self):
  252. self.pn_interface_load_fail("PO")
  253. def test_co_pn_interface_load_fail(self):
  254. self.pn_interface_load_fail("CO")
  255. def pn_interface_load_fail(self, mode):
  256. self.assertTrue(run_file(all_files,
  257. ["new", "PetriNets", "abc", "exit", "load", "def"], init + new_full +
  258. prompt_menu + load + load_fail + prompt_menu, mode))
  259. def test_po_pn_interface_load_empty(self):
  260. self.pn_interface_load_empty("PO")
  261. def test_co_pn_interface_load_empty(self):
  262. self.pn_interface_load_empty("CO")
  263. def pn_interface_load_empty(self, mode):
  264. self.assertTrue(run_file(all_files,
  265. ["load", "def"], init + load + load_fail + prompt_menu, mode))
  266. def test_po_pn_interface_new_list_empty(self):
  267. self.pn_interface_new_list_empty("PO")
  268. def test_co_pn_interface_new_list_empty(self):
  269. self.pn_interface_new_list_empty("CO")
  270. def pn_interface_new_list_empty(self, mode):
  271. self.assertTrue(run_file(all_files,
  272. ["new", "PetriNets", "abc", "list"], init + new_full + list_model +
  273. prompt_model, mode))
  274. def test_po_pn_interface_instantiate_place(self):
  275. self.pn_interface_instantiate_place("PO")
  276. def test_co_pn_interface_instantiate_place(self):
  277. self.pn_interface_instantiate_place("CO")
  278. def pn_interface_instantiate_place(self, mode):
  279. self.assertTrue(run_file(all_files,
  280. ["new", "PetriNets", "abc", "instantiate", "Place", "p1", 5],
  281. init + new_full + instantiate + instantiate_name +
  282. instantiate_tokens + instantiate_ok + prompt_model, mode))
  283. def test_po_pn_interface_instantiate_place_list(self):
  284. self.pn_interface_instantiate_place_list("PO")
  285. def test_co_pn_interface_instantiate_place_list(self):
  286. self.pn_interface_instantiate_place_list("CO")
  287. def pn_interface_instantiate_place_list(self, mode):
  288. self.assertTrue(run_file(all_files,
  289. ["new", "PetriNets", "abc", "instantiate", "Place", "p1", 5, "list"],
  290. init + new_full + instantiate + instantiate_name +
  291. instantiate_tokens + instantiate_ok + prompt_model +
  292. list_model + list_p1, mode))
  293. def test_po_pn_interface_instantiate_place_read(self):
  294. self.pn_interface_instantiate_place_read("PO")
  295. def test_co_pn_interface_instantiate_place_read(self):
  296. self.pn_interface_instantiate_place_read("CO")
  297. def pn_interface_instantiate_place_read(self, mode):
  298. self.assertTrue(run_file(all_files,
  299. ["new", "PetriNets", "abc", "instantiate", "Place", "p1", 5, "read", "p1"],
  300. init + new_full + instantiate + instantiate_name +
  301. instantiate_tokens + instantiate_ok + prompt_model + read +
  302. read_p1, mode))
  303. def test_po_pn_interface_instantiate_transition(self):
  304. self.pn_interface_instantiate_transition("PO")
  305. def test_co_pn_interface_instantiate_transition(self):
  306. self.pn_interface_instantiate_transition("CO")
  307. def pn_interface_instantiate_transition(self, mode):
  308. self.assertTrue(run_file(all_files,
  309. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1"],
  310. init + new_full + instantiate + instantiate_name +
  311. instantiate_ok + prompt_model, mode))
  312. def test_po_pn_interface_instantiate_transition_read(self):
  313. self.pn_interface_instantiate_transition_read("PO")
  314. def test_co_pn_interface_instantiate_transition_read(self):
  315. self.pn_interface_instantiate_transition_read("CO")
  316. def pn_interface_instantiate_transition_read(self, mode):
  317. self.assertTrue(run_file(all_files,
  318. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "read", "t1"],
  319. init + new_full + instantiate + instantiate_name +
  320. instantiate_ok + prompt_model + read + read_t1, mode))
  321. def test_po_pn_interface_instantiate_arcs(self):
  322. self.pn_interface_instantiate_arcs("PO")
  323. def test_co_pn_interface_instantiate_arcs(self):
  324. self.pn_interface_instantiate_arcs("CO")
  325. def pn_interface_instantiate_arcs(self, mode):
  326. self.assertTrue(run_file(all_files,
  327. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "instantiate",
  328. "Place", "p1", 5, "instantiate", "Place", "p2", 0, "instantiate",
  329. "P2T", "p2t", "p1", "t1", 2, "instantiate", "T2P", "t2p", "t1",
  330. "p2", 1],
  331. init + new_full + instantiate_transition + instantiate_place +
  332. instantiate_place + instantiate_arc + instantiate_arc, mode))
  333. def test_po_pn_interface_instantiate_arcs_read(self):
  334. self.pn_interface_instantiate_arcs_read("PO")
  335. def test_co_pn_interface_instantiate_arcs_read(self):
  336. self.pn_interface_instantiate_arcs_read("CO")
  337. def pn_interface_instantiate_arcs_read(self, mode):
  338. self.assertTrue(run_file(all_files,
  339. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "instantiate",
  340. "Place", "p1", 5, "instantiate", "Place", "p2", 0, "instantiate",
  341. "P2T", "p2t", "p1", "t1", 2, "instantiate", "T2P", "t2p", "t1",
  342. "p2", 1, "read", "p1", "read", "p2", "read", "t1", "read", "p2t",
  343. "read", "t2p"],
  344. init + new_full + instantiate_transition + instantiate_place +
  345. instantiate_place + instantiate_arc + instantiate_arc +
  346. read_p1_full + read_p2_full + read_t1_full + read_p2t_full +
  347. read_t2p_full, mode))
  348. def test_po_pn_interface_instantiate_arcs_list(self):
  349. self.pn_interface_instantiate_arcs_list("PO")
  350. def test_co_pn_interface_instantiate_arcs_list(self):
  351. self.pn_interface_instantiate_arcs_list("CO")
  352. def pn_interface_instantiate_arcs_list(self, mode):
  353. self.assertTrue(run_file(all_files,
  354. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "instantiate",
  355. "Place", "p1", 5, "instantiate", "Place", "p2", 0, "instantiate",
  356. "P2T", "p2t", "p1", "t1", 2, "instantiate", "T2P", "t2p", "t1",
  357. "p2", 1, "list"],
  358. init + new_full + instantiate_transition + instantiate_place +
  359. instantiate_place + instantiate_arc + instantiate_arc +
  360. list_model + list_t1 + list_p1 + list_p2 + list_p2t + list_t2p +
  361. prompt_model, mode))
  362. def test_po_pn_interface_enabled_empty(self):
  363. self.pn_interface_enabled_empty("PO")
  364. def test_co_pn_interface_enabled_empty(self):
  365. self.pn_interface_enabled_empty("CO")
  366. def pn_interface_enabled_empty(self, mode):
  367. self.assertTrue(run_file(all_files,
  368. ["new", "PetriNets", "abc", "enabled"],
  369. init + new_full + enabled + prompt_model, mode))
  370. def test_po_pn_interface_enabled(self):
  371. self.pn_interface_enabled("PO")
  372. def test_co_pn_interface_enabled(self):
  373. self.pn_interface_enabled("CO")
  374. def pn_interface_enabled(self, mode):
  375. self.assertTrue(run_file(all_files,
  376. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "instantiate",
  377. "Place", "p1", 5, "instantiate", "Place", "p2", 0, "instantiate",
  378. "P2T", "p2t", "p1", "t1", 2, "instantiate", "T2P", "t2p", "t1",
  379. "p2", 1, "enabled"],
  380. init + new_full + instantiate_transition + instantiate_place +
  381. instantiate_place + instantiate_arc + instantiate_arc + enabled +
  382. enabled_t1 + prompt_model, mode))
  383. def test_po_pn_interface_fire(self):
  384. self.pn_interface_fire("PO")
  385. def test_co_pn_interface_fire(self):
  386. self.pn_interface_fire("CO")
  387. def pn_interface_fire(self, mode):
  388. self.assertTrue(run_file(all_files,
  389. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "instantiate",
  390. "Place", "p1", 5, "instantiate", "Place", "p2", 0, "instantiate",
  391. "P2T", "p2t", "p1", "t1", 2, "instantiate", "T2P", "t2p", "t1",
  392. "p2", 1, "fire", "t1"],
  393. init + new_full + instantiate_transition + instantiate_place +
  394. instantiate_place + instantiate_arc + instantiate_arc + fire +
  395. fire_t1 + fire_finish + prompt_model, mode))
  396. def test_po_pn_interface_fire_place(self):
  397. self.pn_interface_fire_place("PO")
  398. def test_co_pn_interface_fire_place(self):
  399. self.pn_interface_fire_place("CO")
  400. def pn_interface_fire_place(self, mode):
  401. self.assertTrue(run_file(all_files,
  402. ["new", "PetriNets", "abc", "instantiate", "Place", "p1", "5", "fire", "p1"],
  403. init + new_full + instantiate_place + fire + fire_no_enable +
  404. prompt_model, mode))
  405. def test_po_pn_interface_fire_unknown(self):
  406. self.pn_interface_fire_unknown("PO")
  407. def test_co_pn_interface_fire_unknown(self):
  408. self.pn_interface_fire_unknown("CO")
  409. def pn_interface_fire_unknown(self, mode):
  410. self.assertTrue(run_file(all_files,
  411. ["new", "PetriNets", "abc", "fire", "t1"],
  412. init + new_full + fire + fire_unknown + prompt_model, mode))
  413. def test_po_pn_interface_verify_OK(self):
  414. self.pn_interface_verify_OK("PO")
  415. def test_co_pn_interface_verify_OK(self):
  416. self.pn_interface_verify_OK("CO")
  417. def pn_interface_verify_OK(self, mode):
  418. self.assertTrue(run_file(all_files,
  419. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "instantiate",
  420. "Place", "p1", 5, "instantiate", "Place", "p2", 0, "instantiate",
  421. "P2T", "p2t", "p1", "t1", 2, "instantiate", "T2P", "t2p", "t1",
  422. "p2", 1, "verify"],
  423. init + new_full + instantiate_transition + instantiate_place +
  424. instantiate_place + instantiate_arc + instantiate_arc +
  425. verify_full, mode))
  426. def test_po_pn_interface_verify_fail_tokens(self):
  427. self.pn_interface_verify_fail_tokens("PO")
  428. def test_co_pn_interface_verify_fail_tokens(self):
  429. self.pn_interface_verify_fail_tokens("CO")
  430. def pn_interface_verify_fail_tokens(self, mode):
  431. self.assertTrue(run_file(all_files,
  432. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "instantiate",
  433. "Place", "p1", -5, "instantiate", "Place", "p2", 0,
  434. "instantiate", "P2T", "p2t", "p1", "t1", 2, "instantiate", "T2P",
  435. "t2p", "t1", "p2", 1, "verify"],
  436. init + new_full + instantiate_transition + instantiate_place +
  437. instantiate_place + instantiate_arc + instantiate_arc +
  438. verify_fail_tokens, mode))
  439. def test_po_pn_interface_verify_fail_weight(self):
  440. self.pn_interface_verify_fail_weight("PO")
  441. def test_co_pn_interface_verify_fail_weight(self):
  442. self.pn_interface_verify_fail_weight("CO")
  443. def pn_interface_verify_fail_weight(self, mode):
  444. self.assertTrue(run_file(all_files,
  445. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "instantiate",
  446. "Place", "p1", 5, "instantiate", "Place", "p2", 0, "instantiate",
  447. "P2T", "p2t", "p1", "t1", -2, "instantiate", "T2P", "t2p", "t1",
  448. "p2", 1, "verify"], init + new_full + instantiate_transition +
  449. instantiate_place + instantiate_place + instantiate_arc +
  450. instantiate_arc + verify_fail_weight, mode))
  451. def test_po_pn_interface_verify_fail_structure(self):
  452. self.pn_interface_verify_fail_structure("PO")
  453. def test_co_pn_interface_verify_fail_structure(self):
  454. self.pn_interface_verify_fail_structure("CO")
  455. def pn_interface_verify_fail_structure(self, mode):
  456. self.assertTrue(run_file(all_files,
  457. ["new", "PetriNets", "abc", "instantiate", "Transition", "t1", "instantiate",
  458. "Place", "p1", 5, "instantiate", "Place", "p2", 0, "instantiate",
  459. "P2T", "p2t", "t1", "p1", 2, "verify"],
  460. init + new_full + instantiate_transition + instantiate_place +
  461. instantiate_place + instantiate_arc + verify_fail_structure,
  462. mode))
  463. def test_po_pn_interface_types(self):
  464. self.pn_interface_types("PO")
  465. def test_co_pn_interface_types(self):
  466. self.pn_interface_types("CO")
  467. def pn_interface_types(self, mode):
  468. self.assertTrue(run_file(all_files,
  469. ["new", "PetriNets", "abc", "types"], init + new_full + types_full, mode))
  470. def test_po_pn_interface_modify_place(self):
  471. self.pn_interface_modify_place("PO")
  472. def test_co_pn_interface_modify_place(self):
  473. self.pn_interface_modify_place("CO")
  474. def pn_interface_modify_place(self, mode):
  475. self.assertTrue(run_file(all_files,
  476. ["new", "PetriNets", "abc", "instantiate", "Place", "p1", 5, "read", "p1",
  477. "modify", "p1", "tokens", 1, "read", "p1"],
  478. init + new_full + instantiate + instantiate_name +
  479. instantiate_tokens + instantiate_ok + prompt_model + read +
  480. read_p1 + prompt_menu + modify_place_full + read + read_p1_1 +
  481. prompt_menu, mode))
  482. def test_po_pn_interface_modify_unknown(self):
  483. self.pn_interface_modify_unknown("PO")
  484. def test_co_pn_interface_modify_unknown(self):
  485. self.pn_interface_modify_unknown("CO")
  486. def pn_interface_modify_unknown(self, mode):
  487. self.assertTrue(run_file(all_files,
  488. ["new", "PetriNets", "abc", "modify", "p1"],
  489. init + new_full + modify + modify_fail_not_exists + prompt_model,
  490. mode))
  491. def test_po_pn_interface_modify_place_attr(self):
  492. self.pn_interface_modify_place_attr("PO")
  493. def test_co_pn_interface_modify_place_attr(self):
  494. self.pn_interface_modify_place_attr("CO")
  495. def pn_interface_modify_place_attr(self, mode):
  496. self.assertTrue(run_file(all_files,
  497. ["new", "PetriNets", "abc", "instantiate", "Place", "p1", 5, "read", "p1",
  498. "modify", "p1", "tok", "read", "p1"],
  499. init + new_full + instantiate + instantiate_name +
  500. instantiate_tokens + instantiate_ok + prompt_model + read +
  501. read_p1 + prompt_menu + modify + modify_place + modify_attribute +
  502. modify_fail_no_attr + prompt_model + read + read_p1 +
  503. prompt_model, mode))
  504. def test_po_pn_interface_rename_place(self):
  505. self.pn_interface_rename_place("PO")
  506. def test_co_pn_interface_rename_place(self):
  507. self.pn_interface_rename_place("CO")
  508. def pn_interface_rename_place(self, mode):
  509. self.assertTrue(run_file(all_files,
  510. ["new", "PetriNets", "abc", "instantiate", "Place", "p1", 5, "rename", "p1",
  511. "p2", "read", "p1", "read", "p2"],
  512. init + new_full + instantiate + instantiate_name +
  513. instantiate_tokens + instantiate_ok + prompt_model +
  514. rename_model_full + read + read_fail + prompt_model +
  515. read_p1_as_p2, mode))
  516. def test_po_pn_interface_rename_exists(self):
  517. self.pn_interface_rename_exists("PO")
  518. def test_co_pn_interface_rename_exists(self):
  519. self.pn_interface_rename_exists("CO")
  520. def pn_interface_rename_exists(self, mode):
  521. self.assertTrue(run_file(all_files,
  522. ["new", "PetriNets", "abc", "instantiate", "Place", "p1", 5, "instantiate",
  523. "Place", "p2", 0, "rename", "p1", "p2", "read", "p1", "read",
  524. "p2"],
  525. init + new_full + instantiate + instantiate_name +
  526. instantiate_tokens + instantiate_ok + prompt_model +
  527. instantiate + instantiate_name + instantiate_tokens +
  528. instantiate_ok + prompt_model + rename_model_old +
  529. rename_model_new + rename_model_fail_exists + prompt_model +
  530. read + read_p1 + prompt_model + read + read_p2 + prompt_model,
  531. mode))
  532. def test_po_pn_interface_rename_not_exists(self):
  533. self.pn_interface_rename_not_exists("PO")
  534. def test_co_pn_interface_rename_not_exists(self):
  535. self.pn_interface_rename_not_exists("CO")
  536. def pn_interface_rename_not_exists(self, mode):
  537. self.assertTrue(run_file(all_files,
  538. ["new", "PetriNets", "abc", "instantiate", "Place", "p1", 5, "rename", "p2",
  539. "read", "p1", "read", "p2"],
  540. init + new_full + instantiate + instantiate_name +
  541. instantiate_tokens + instantiate_ok + prompt_model +
  542. rename_model_old + rename_model_fail_not_exists + prompt_model +
  543. read_p1_full + read + read_fail + prompt_model, mode))