test_pn_interface.py 29 KB

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