pione 0.4.2 → 0.5.0.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (306) hide show
  1. checksums.yaml +8 -8
  2. data/.travis.yml +1 -1
  3. data/History.txt +6 -0
  4. data/example/ActionError/ActionError.action.md +11 -0
  5. data/example/ActionError/ActionError.pione +6 -3
  6. data/example/ActionError/ActionError.pnml +86 -0
  7. data/example/ActionError/Package.pione +2 -0
  8. data/example/ActionError/pione-package.json +5 -1
  9. data/example/CTFCorrection/CTFCorrection.action.md +46 -0
  10. data/example/CTFCorrection/CTFCorrection.pione +19 -41
  11. data/example/CTFCorrection/CTFCorrection.pnml +839 -0
  12. data/example/CTFCorrection/Package.pione +1 -0
  13. data/example/CTFCorrection/Params.pione +21 -0
  14. data/example/CTFCorrection/pione-package.json +20 -0
  15. data/example/ChildPackage/ChildPackage.pione +8 -0
  16. data/example/ChildPackage/pione-package.json +20 -0
  17. data/example/CountChar/CountChar.pione +31 -0
  18. data/example/CountChar/CountChar.pnml +239 -0
  19. data/example/CountChar/Main.pione +6 -26
  20. data/example/CountChar/Main.pnml +32 -100
  21. data/example/CountChar/Package.pione +1 -0
  22. data/example/CountChar/pione-package.json +3 -1
  23. data/example/DeferredChoice/DeferredChoice.action.md +46 -0
  24. data/example/DeferredChoice/DeferredChoice.pione +2 -7
  25. data/example/DeferredChoice/DeferredChoice.pnml +371 -0
  26. data/example/DeferredChoice/Package.pione +4 -0
  27. data/example/DeferredChoice/pione-package.json +7 -3
  28. data/example/DeferredChoiceWithPage/DeferredChoiceWithPage.action.md +34 -0
  29. data/example/DeferredChoiceWithPage/DefferredChoiceWithPage.pnml +371 -0
  30. data/example/DeferredChoiceWithPage/Package.pione +2 -0
  31. data/example/FeatureExample/FeatureExample.action.md +7 -0
  32. data/example/FeatureExample/FeatureExample.pione +7 -4
  33. data/example/FeatureExample/FeatureExample.pnml +86 -0
  34. data/example/FeatureExample/Package.pione +1 -0
  35. data/example/FeatureExample/pione-package.json +4 -0
  36. data/example/Fib/Fib.action.md +33 -0
  37. data/example/Fib/Fib.pnml +208 -0
  38. data/example/Fib/FibN.pnml +807 -0
  39. data/example/Fib/Package.pione +6 -0
  40. data/example/HelloWorld/HelloWorld.action.md +7 -0
  41. data/example/HelloWorld/HelloWorld.pione +6 -2
  42. data/example/HelloWorld/HelloWorld.pnml +86 -0
  43. data/example/HelloWorld/Package.pione +2 -0
  44. data/example/HelloWorld/pione-package.json +5 -1
  45. data/example/Interaction/Interaction.action.md +21 -0
  46. data/example/Interaction/Interaction.pnml +89 -0
  47. data/example/Interaction/Package.pione +2 -0
  48. data/example/LoopByTouch/LoopByTouch.pione +32 -12
  49. data/example/LoopByTouch/LoopByTouch.pnml +575 -0
  50. data/example/LoopByTouch/Package.pione +3 -0
  51. data/example/LoopByTouch/PairLoop.pione +6 -7
  52. data/example/LoopByTouch/PairLoop.pnml +188 -0
  53. data/example/LoopByTouch/SingleLoop.pione +6 -0
  54. data/example/LoopByTouch/SingleLoop.pnml +86 -0
  55. data/example/LoopByTouch/TripletLoop.pione +12 -13
  56. data/example/LoopByTouch/TripletLoop.pnml +239 -0
  57. data/example/LoopByTouch/pione-package.json +7 -3
  58. data/example/LucasNumber/LucasNumber.action.md +25 -0
  59. data/example/LucasNumber/LucasNumber.pnml +244 -0
  60. data/example/LucasNumber/LucasNumberN.pnml +1719 -0
  61. data/example/LucasNumber/Package.pione +2 -0
  62. data/example/MakePair/MakePair.pione +8 -10
  63. data/example/MakePair/MakePair.pnml +1141 -0
  64. data/example/MakePair/Package.pione +2 -0
  65. data/example/MakePair/pione-package.json +7 -3
  66. data/example/MakePair/scenario/case1/pione-scenario.json +30 -30
  67. data/example/MakePair/scenario/case2/pione-scenario.json +10 -10
  68. data/example/MakePair/scenario/case3/pione-scenario.json +28 -28
  69. data/example/OddSelector/OddSelector.pione +8 -8
  70. data/example/OddSelector/OddSelector.pnml +401 -0
  71. data/example/OddSelector/Package.pione +2 -0
  72. data/example/OddSelector/pione-package.json +4 -0
  73. data/example/OddSelector/scenario/pione-scenario.json +8 -8
  74. data/example/ParentPackage/ParentPackage.pione +13 -0
  75. data/example/ParentPackage/pione-package.json +18 -0
  76. data/example/PegasusWMS/Merge/Package.pione +2 -0
  77. data/example/PegasusWMS/Merge/PegasusWMSMerge.action.md +17 -0
  78. data/example/PegasusWMS/Merge/{Merge.pione → PegasusWMSMerge.pione} +9 -10
  79. data/example/PegasusWMS/Merge/PegasusWMSMerge.pnml +217 -0
  80. data/example/PegasusWMS/Merge/pione-package.json +6 -2
  81. data/example/PegasusWMS/Pipeline/Package.pione +2 -0
  82. data/example/PegasusWMS/Pipeline/PegasusWMSPipeline.action.md +17 -0
  83. data/example/PegasusWMS/Pipeline/{Pipeline.pione → PegasusWMSPipeline.pione} +7 -9
  84. data/example/PegasusWMS/Pipeline/PegasusWMSPipeline.pnml +137 -0
  85. data/example/PegasusWMS/Pipeline/pione-package.json +6 -2
  86. data/example/PegasusWMS/Split/Package.pione +2 -0
  87. data/example/PegasusWMS/Split/PegasusWMSSplit.action.md +19 -0
  88. data/example/PegasusWMS/Split/{Split.pione → PegasusWMSSplit.pione} +9 -10
  89. data/example/PegasusWMS/Split/PegasusWMSSplit.pnml +293 -0
  90. data/example/PegasusWMS/Split/pione-package.json +6 -2
  91. data/example/ScoreAggregation/Package.pione +2 -0
  92. data/example/ScoreAggregation/ScoreAggregation.action.md +56 -0
  93. data/example/ScoreAggregation/ScoreAggregation.pione +37 -76
  94. data/example/ScoreAggregation/ScoreAggregation.pnml +1221 -0
  95. data/example/ScoreAggregation/pione-package.json +6 -2
  96. data/example/ScoreAggregation/scenario/case1/pione-scenario.json +21 -21
  97. data/example/SelectRuleByParam/Package.pione +2 -0
  98. data/example/SelectRuleByParam/SelectRuleByParam.action.md +19 -0
  99. data/example/SelectRuleByParam/SelectRuleByParam.pnml +388 -0
  100. data/example/SequentialParameter/Package.pione +2 -0
  101. data/example/SequentialParameter/SequentialParameter.pione +9 -3
  102. data/example/SequentialParameter/SequentialParameter.pnml +140 -0
  103. data/example/SequentialParameter/pione-package.json +19 -0
  104. data/example/SerialProcessing/A.pione +25 -0
  105. data/example/SerialProcessing/A.pnml +395 -0
  106. data/example/SerialProcessing/B.pione +25 -0
  107. data/example/SerialProcessing/B.pnml +395 -0
  108. data/example/SerialProcessing/Package.pione +2 -0
  109. data/example/SerialProcessing/SerialProcessing.pione +9 -60
  110. data/example/SerialProcessing/SerialProcessing.pnml +160 -0
  111. data/example/SerialProcessing/pione-package.json +7 -1
  112. data/example/SieveOfEratosthenes/CreateUndeterminedNumbers.pnml +157 -0
  113. data/example/SieveOfEratosthenes/Package.pione +4 -0
  114. data/example/SieveOfEratosthenes/Sieve.pnml +1493 -0
  115. data/example/SieveOfEratosthenes/SieveOfEratosthenes.pnml +174 -0
  116. data/example/SingleParticlesWithRef/Create3dinfo.pnml +342 -0
  117. data/example/SingleParticlesWithRef/Package.pione +42 -0
  118. data/example/SingleParticlesWithRef/SingleParticlesWithRef.action.md +34 -0
  119. data/example/SingleParticlesWithRef/SingleParticlesWithRef.pnml +404 -0
  120. data/example/SingleParticlesWithRef/{Makefile → misc/Makefile} +0 -0
  121. data/example/SingleParticlesWithRef/{SingleParticlesWithRef.Display2.pione → misc/SingleParticlesWithRef.Display2.pione} +0 -0
  122. data/example/SingleParticlesWithRef/{SingleParticlesWithRef.Makefile → misc/SingleParticlesWithRef.Makefile} +0 -0
  123. data/example/SingleParticlesWithRef/{SingleParticlesWithRefFull.pione → misc/SingleParticlesWithRefFull.pione} +0 -0
  124. data/example/Sum/CalcEachLine.pione +30 -0
  125. data/example/Sum/CalcEachLine.pnml +327 -0
  126. data/example/Sum/Package.pione +2 -0
  127. data/example/Sum/Sum.action.md +35 -0
  128. data/example/Sum/Sum.pione +9 -35
  129. data/example/Sum/Sum.pnml +191 -0
  130. data/example/Sum/pione-package.json +5 -0
  131. data/example/Touch/Package.pione +2 -0
  132. data/example/Touch/Touch.pione +8 -2
  133. data/example/Touch/Touch.pnml +89 -0
  134. data/example/Touch/pione-package.json +4 -0
  135. data/example/WorkflowPatterns/01_Sequence/Package.pione +2 -0
  136. data/example/WorkflowPatterns/01_Sequence/Sequence.pione +9 -9
  137. data/example/WorkflowPatterns/01_Sequence/Sequence.pnml +191 -0
  138. data/example/WorkflowPatterns/01_Sequence/pione-package.json +19 -0
  139. data/example/WorkflowPatterns/02_PrallelSplit/Package.pione +2 -0
  140. data/example/WorkflowPatterns/02_PrallelSplit/ParallelSplit.pione +12 -12
  141. data/example/WorkflowPatterns/02_PrallelSplit/ParallelSplit.pnml +265 -0
  142. data/example/WorkflowPatterns/02_PrallelSplit/pione-package.json +19 -0
  143. data/example/WorkflowPatterns/03_Synchronization/Package.pione +2 -0
  144. data/example/WorkflowPatterns/03_Synchronization/Synchronization.pione +12 -13
  145. data/example/WorkflowPatterns/03_Synchronization/Synchronization.pnml +273 -0
  146. data/example/WorkflowPatterns/03_Synchronization/pione-package.json +19 -0
  147. data/example/WorkflowPatterns/04_ExclusiveChoice/ExclusiveChoice.pione +15 -22
  148. data/example/WorkflowPatterns/04_ExclusiveChoice/ExclusiveChoice.pnml +533 -0
  149. data/example/WorkflowPatterns/04_ExclusiveChoice/Package.pione +4 -0
  150. data/example/WorkflowPatterns/04_ExclusiveChoice/pione-package.json +19 -0
  151. data/example/WorkflowPatterns/05_SimpleMerge/Package.pione +4 -0
  152. data/example/WorkflowPatterns/05_SimpleMerge/SimpleMerge.pione +10 -18
  153. data/example/WorkflowPatterns/05_SimpleMerge/SimpleMerge.pnml +431 -0
  154. data/example/WorkflowPatterns/05_SimpleMerge/pione-package.json +19 -0
  155. data/example/WorkflowPatterns/06_MultiChoice/MultiChoice.pione +20 -28
  156. data/example/WorkflowPatterns/06_MultiChoice/MultiChoice.pnml +797 -0
  157. data/example/WorkflowPatterns/06_MultiChoice/Package.pione +5 -0
  158. data/example/WorkflowPatterns/06_MultiChoice/pione-package.json +19 -0
  159. data/example/WorkflowPatterns/07_StructuredSynchronizingMerge/Package.pione +5 -0
  160. data/example/WorkflowPatterns/07_StructuredSynchronizingMerge/StructuredSynchronizingMerge.pnml +668 -0
  161. data/example/WorkflowPatterns/08_MultiMerge/MultiMerge.pione +9 -20
  162. data/example/WorkflowPatterns/08_MultiMerge/MultiMerge.pnml +551 -0
  163. data/example/WorkflowPatterns/08_MultiMerge/Package.pione +4 -0
  164. data/example/WorkflowPatterns/08_MultiMerge/pione-package.json +19 -0
  165. data/example/WorkflowPatterns/11_ImplicitTermination/ImplicitTermination.pione +9 -17
  166. data/example/WorkflowPatterns/11_ImplicitTermination/ImplicitTermination.pnml +188 -0
  167. data/example/WorkflowPatterns/11_ImplicitTermination/Package.pione +2 -0
  168. data/example/WorkflowPatterns/11_ImplicitTermination/pione-package.json +19 -0
  169. data/example/WorkflowPatterns/12_MultipleInstancesWithoutSynchronization/MultipleInstancesWithoutSynchronization.pione +11 -11
  170. data/example/WorkflowPatterns/12_MultipleInstancesWithoutSynchronization/MultipleInstancesWithoutSynchronization.pnml +319 -0
  171. data/example/WorkflowPatterns/12_MultipleInstancesWithoutSynchronization/Package.pione +4 -0
  172. data/example/WorkflowPatterns/12_MultipleInstancesWithoutSynchronization/pione-package.json +19 -0
  173. data/example/WorkflowPatterns/13_MultipleInstancesWithDesignTimeKnowledge/MultipleInstancesWithDesignTimeKnowledge.pione +11 -11
  174. data/example/WorkflowPatterns/13_MultipleInstancesWithDesignTimeKnowledge/MultipleInstancesWithDesignTimeKnowledge.pnml +319 -0
  175. data/example/WorkflowPatterns/13_MultipleInstancesWithDesignTimeKnowledge/Package.pione +2 -0
  176. data/example/WorkflowPatterns/13_MultipleInstancesWithDesignTimeKnowledge/pione-package.json +19 -0
  177. data/example/WorkflowPatterns/14_MultipleInstancesWithRunTimeKnowledge/MultipleInstancesWithRunTimeKnowledge.pione +14 -17
  178. data/example/WorkflowPatterns/14_MultipleInstancesWithRunTimeKnowledge/MultipleInstancesWithRunTimeKnowledge.pnml +355 -0
  179. data/example/WorkflowPatterns/14_MultipleInstancesWithRunTimeKnowledge/Package.pione +4 -0
  180. data/example/WorkflowPatterns/14_MultipleInstancesWithRunTimeKnowledge/pione-package.json +19 -0
  181. data/example/WorkflowPatterns/33_GeneralizedANDJoin/GeneralizedANDJoin.pione +9 -10
  182. data/example/WorkflowPatterns/33_GeneralizedANDJoin/GeneralizedANDJoin.pnml +409 -0
  183. data/example/WorkflowPatterns/33_GeneralizedANDJoin/Package.pione +2 -0
  184. data/example/WorkflowPatterns/33_GeneralizedANDJoin/pione-package.json +19 -0
  185. data/example/WorkflowPatterns/37_LocalSynchronizingMerge/A.pione +34 -0
  186. data/example/WorkflowPatterns/37_LocalSynchronizingMerge/A.pnml +570 -0
  187. data/example/WorkflowPatterns/37_LocalSynchronizingMerge/LocalSynchronizingMerge.pione +36 -70
  188. data/example/WorkflowPatterns/37_LocalSynchronizingMerge/LocalSynchronizingMerge.pnml +854 -0
  189. data/example/WorkflowPatterns/37_LocalSynchronizingMerge/Package.pione +5 -0
  190. data/example/WorkflowPatterns/37_LocalSynchronizingMerge/pione-package.json +20 -0
  191. data/example/WorkflowPatterns/38_GeneralSynchronizingMerge/GeneralSynchronizingMerge.pnml +1003 -0
  192. data/example/WorkflowPatterns/38_GeneralSynchronizingMerge/Package.pione +6 -0
  193. data/example/WorkflowPatterns/41_ThreadMerge/A.pnml +429 -0
  194. data/example/WorkflowPatterns/41_ThreadMerge/A1.pnml +141 -0
  195. data/example/WorkflowPatterns/41_ThreadMerge/Package.pione +2 -0
  196. data/example/WorkflowPatterns/41_ThreadMerge/ThreadMerge.pnml +205 -0
  197. data/example/WorkflowPatterns/42_ThreadSplit/Package.pione +2 -0
  198. data/example/WorkflowPatterns/42_ThreadSplit/ThreadSplit.pnml +217 -0
  199. data/lib/pione/agent/job-manager.rb +4 -3
  200. data/lib/pione/agent/task-worker.rb +2 -7
  201. data/lib/pione/command.rb +1 -0
  202. data/lib/pione/command/basic-command.rb +3 -1
  203. data/lib/pione/command/command-exception.rb +14 -0
  204. data/lib/pione/command/pione-action-exec.rb +4 -1
  205. data/lib/pione/command/pione-clean.rb +13 -6
  206. data/lib/pione/command/pione-client.rb +5 -5
  207. data/lib/pione/command/pione-compile.rb +1 -1
  208. data/lib/pione/command/pione-log-format.rb +1 -1
  209. data/lib/pione/command/pione-package-add.rb +1 -1
  210. data/lib/pione/command/pione-package-build.rb +87 -32
  211. data/lib/pione/command/pione-package-remove.rb +117 -0
  212. data/lib/pione/command/pione-package.rb +1 -0
  213. data/lib/pione/command/spawner.rb +12 -3
  214. data/lib/pione/lang/boolean.rb +1 -1
  215. data/lib/pione/lang/common-parser.rb +5 -3
  216. data/lib/pione/lang/context-parser.rb +8 -2
  217. data/lib/pione/lang/context-transformer.rb +13 -3
  218. data/lib/pione/lang/context.rb +20 -2
  219. data/lib/pione/lang/data-expr.rb +1 -1
  220. data/lib/pione/lang/declaration-parser.rb +18 -4
  221. data/lib/pione/lang/declaration-transformer.rb +1 -1
  222. data/lib/pione/lang/declaration.rb +5 -3
  223. data/lib/pione/lang/definition.rb +1 -0
  224. data/lib/pione/lang/environment.rb +37 -2
  225. data/lib/pione/lang/expr.rb +10 -12
  226. data/lib/pione/lang/feature-expr.rb +1 -1
  227. data/lib/pione/lang/float.rb +1 -1
  228. data/lib/pione/lang/integer.rb +1 -1
  229. data/lib/pione/lang/keyed-sequence.rb +5 -5
  230. data/lib/pione/lang/lang-exception.rb +9 -5
  231. data/lib/pione/lang/literal-parser.rb +2 -2
  232. data/lib/pione/lang/literal-transformer.rb +3 -0
  233. data/lib/pione/lang/message.rb +3 -3
  234. data/lib/pione/lang/ordinal-sequence.rb +1 -1
  235. data/lib/pione/lang/package-expr.rb +1 -1
  236. data/lib/pione/lang/parameters.rb +1 -1
  237. data/lib/pione/lang/pione-method.rb +16 -16
  238. data/lib/pione/lang/rule-expr.rb +6 -1
  239. data/lib/pione/lang/sequence.rb +8 -3
  240. data/lib/pione/lang/string.rb +1 -1
  241. data/lib/pione/lang/ticket-expr.rb +1 -1
  242. data/lib/pione/lang/type.rb +17 -8
  243. data/lib/pione/lang/variable.rb +4 -1
  244. data/lib/pione/literate-action.rb +1 -2
  245. data/lib/pione/literate-action/document.rb +1 -1
  246. data/lib/pione/literate-action/handler.rb +22 -7
  247. data/lib/pione/literate-action/{parser.rb → markdown-parser.rb} +2 -1
  248. data/lib/pione/log/domain-log.rb +1 -1
  249. data/lib/pione/model/task-worker-broker-model.rb +1 -1
  250. data/lib/pione/package/package-database.rb +16 -2
  251. data/lib/pione/package/package-exception.rb +1 -1
  252. data/lib/pione/package/package-handler.rb +11 -7
  253. data/lib/pione/package/package-info.rb +13 -7
  254. data/lib/pione/package/package-scanner.rb +1 -1
  255. data/lib/pione/package/scenario-info.rb +2 -2
  256. data/lib/pione/pnml.rb +6 -0
  257. data/lib/pione/pnml/compiler.rb +329 -95
  258. data/lib/pione/pnml/declaration-extractor.rb +90 -0
  259. data/lib/pione/pnml/input-merge-complement.rb +17 -11
  260. data/lib/pione/pnml/input-parallelization-complement.rb +10 -6
  261. data/lib/pione/pnml/input-reduction.rb +5 -5
  262. data/lib/pione/pnml/invalid-arc-elimination.rb +2 -2
  263. data/lib/pione/pnml/io-expansion.rb +9 -5
  264. data/lib/pione/pnml/isolated-element-elimination.rb +2 -2
  265. data/lib/pione/pnml/label-extractor.rb +258 -0
  266. data/lib/pione/pnml/net-rewriter.rb +6 -4
  267. data/lib/pione/pnml/output-decomposition-complement.rb +12 -7
  268. data/lib/pione/pnml/output-reduction.rb +11 -5
  269. data/lib/pione/pnml/output-synchronization-complement.rb +11 -7
  270. data/lib/pione/pnml/parser.rb +106 -0
  271. data/lib/pione/pnml/pione-model.rb +685 -230
  272. data/lib/pione/pnml/pnml-model.rb +73 -41
  273. data/lib/pione/pnml/ticket-instantiation.rb +42 -0
  274. data/lib/pione/rule-engine/action-handler.rb +212 -135
  275. data/lib/pione/rule-engine/basic-handler.rb +29 -3
  276. data/lib/pione/rule-engine/engine-exception.rb +10 -6
  277. data/lib/pione/system/status.rb +12 -6
  278. data/lib/pione/version.rb +1 -1
  279. data/lib/rootage/help.md.erb +45 -0
  280. data/lib/rootage/help.rb +1 -0
  281. data/lib/rootage/scenario.rb +20 -2
  282. data/misc/pione-completion.bash +15 -5
  283. data/misc/pione-completion.zsh +16 -6
  284. data/test/command/spec_pione-client.rb +60 -60
  285. data/test/lang/data/context-parser.yml +12 -1
  286. data/test/lang/spec_pione-method.rb +7 -6
  287. data/test/literate-action/spec_handler.rb +19 -13
  288. data/test/literate-action/{spec_parser.rb → spec_markdown-parser.rb} +3 -3
  289. data/test/log/spec_message-log-receiver.rb +1 -1
  290. data/test/package/spec_package-info.rb +1 -1
  291. data/test/pnml/spec_input-merge-complement.rb +4 -2
  292. data/test/pnml/spec_input-parallelization-complement.rb +4 -2
  293. data/test/pnml/spec_input-reduction.rb +8 -4
  294. data/test/pnml/spec_invalid-arc-elimination.rb +2 -1
  295. data/test/pnml/spec_io-expansion.rb +4 -2
  296. data/test/pnml/spec_isolated-element-elimination.rb +2 -1
  297. data/test/pnml/spec_label-extractor.rb +100 -0
  298. data/test/pnml/spec_output-decomposition-complement.rb +4 -2
  299. data/test/pnml/spec_output-reduction.rb +8 -4
  300. data/test/pnml/spec_output-synchronization-complement.rb +4 -2
  301. data/test/pnml/spec_pione-element.rb +116 -37
  302. data/test/pnml/spec_pnml-element.rb +32 -8
  303. data/test/rule-engine/spec_action-handler.rb +12 -20
  304. metadata +159 -16
  305. data/example/CTFCorrection/package.yml +0 -1
  306. data/example/DeferredChoice/bin/ui.xml +0 -28
@@ -127,7 +127,18 @@ structural_context:
127
127
  # comment
128
128
  rule Test2
129
129
 
130
- rule_condition_context:
130
+ flow_rule_condition_context:
131
+ valid:
132
+ - | # parameters without default values
133
+ param $X
134
+ basic param $Y
135
+ advanced param $Z
136
+ - | # parameters with default values
137
+ param $X := 1
138
+ basic param $Y := 2
139
+ advanced param $Z := 3
140
+
141
+ action_rule_condition_context:
131
142
  valid:
132
143
  - | # parameters without default values
133
144
  param $X
@@ -35,12 +35,13 @@ describe "Pione::Lang::PioneMethod" do
35
35
  end
36
36
 
37
37
  it "should validate inputs" do
38
- @method_1.validate_inputs(@int_1, []).should.be.false
39
- @method_2.validate_inputs(@int_1, []).should.be.false
40
- @method_2.validate_inputs(@int_1, [@str_1]).should.be.false
41
- @method_2.validate_inputs(@int_1, [@int_2]).should.be.false
42
- @method_2.validate_inputs(@int_1, [@int_2, @int_3, @str_1]).should.be.false
43
- @method_3.validate_inputs(@int_1, [@int_2]).should.be.false
38
+ env = Lang::Environment.new
39
+ @method_1.validate_inputs(env, @int_1, []).should.be.false
40
+ @method_2.validate_inputs(env, @int_1, []).should.be.false
41
+ @method_2.validate_inputs(env, @int_1, [@str_1]).should.be.false
42
+ @method_2.validate_inputs(env, @int_1, [@int_2]).should.be.false
43
+ @method_2.validate_inputs(env, @int_1, [@int_2, @int_3, @str_1]).should.be.false
44
+ @method_3.validate_inputs(env, @int_1, [@int_2]).should.be.false
44
45
  end
45
46
 
46
47
  it "should call" do
@@ -5,24 +5,30 @@ TestHelper.scope do |this|
5
5
  this::D1 = this::DIR + "D1.md"
6
6
 
7
7
  describe Pione::LiterateAction::Handler do
8
- it "should get a text" do
9
- doc = LiterateAction::Document.load(this::D1)
10
- doc.find("Name1").tap do |handler|
11
- handler.textize(nil).chomp.should == "echo A"
8
+ def get_action(md, name, expected)
9
+ doc = LiterateAction::Document.load(md)
10
+ doc.find(name).tap do |handler|
11
+ handler.textize(nil).chomp.should == expected
12
12
  end
13
- doc.find("Name2").tap do |handler|
14
- handler.textize(nil).chomp.should == "puts \"A\"\nputs \"B\""
13
+ end
14
+
15
+ def execute_action(md, name, expected)
16
+ doc = LiterateAction::Document.load(md)
17
+ doc.find(name).tap do |handler|
18
+ out = Location[Temppath.create]
19
+ handler.execute(:out => out)
20
+ out.read.chomp.should == expected
15
21
  end
16
22
  end
17
23
 
24
+ it "should get a text" do
25
+ get_action(this::D1, "Name1", "echo A")
26
+ get_action(this::D1, "Name2", "puts \"A\"\nputs \"B\"")
27
+ end
28
+
18
29
  it "should execute" do
19
- doc = LiterateAction::Document.load(this::D1)
20
- doc.find("Name1").tap do |handler|
21
- handler.execute(nil).chomp.should == "A"
22
- end
23
- doc.find("Name2").tap do |handler|
24
- handler.execute(nil).chomp.should == "A\nB"
25
- end
30
+ execute_action(this::D1, "Name1", "A")
31
+ execute_action(this::D1, "Name2", "A\nB")
26
32
  end
27
33
  end
28
34
  end
@@ -1,8 +1,8 @@
1
1
  require 'pione/test-helper'
2
2
 
3
- describe Pione::LiterateAction::Parser do
3
+ describe Pione::LiterateAction::MarkdownParser do
4
4
  it "should parse" do
5
- parsed = LiterateAction::Parser.parse(Util::Indentation.cut(<<-ACTION))
5
+ parsed = LiterateAction::MarkdownParser.parse(Util::Indentation.cut(<<-ACTION))
6
6
  # Titile
7
7
 
8
8
  desc
@@ -37,7 +37,7 @@ describe Pione::LiterateAction::Parser do
37
37
  end
38
38
 
39
39
  it "should get a rule name without needless spaces" do
40
- parsed = LiterateAction::Parser.parse(Util::Indentation.cut(<<-ACTION))
40
+ parsed = LiterateAction::MarkdownParser.parse(Util::Indentation.cut(<<-ACTION))
41
41
  # Title
42
42
 
43
43
  ## Test
@@ -7,7 +7,7 @@ describe Pione::Log::CUIMessageLogReceiver do
7
7
  end
8
8
 
9
9
  it "should receive a message" do
10
- @receiver.receive("test message", 0, "TEST", :red)
10
+ @receiver.receive("test message", 0, "TEST", :red, nil)
11
11
  @io.string.chomp.should == "%s test message" % " TEST".color(:red)
12
12
  end
13
13
  end
@@ -6,7 +6,7 @@ describe Pione::Package::PackageInfo do
6
6
  name: "P1",
7
7
  editor: "yamaguchi",
8
8
  tag: "test",
9
- parents: [Package::PackageInfo.new(name: "P2"), Package::PackageInfo.new(name: "P3")],
9
+ parents: [Package::ParentPackageInfo.new(name: "P2"), Package::ParentPackageInfo.new(name: "P3")],
10
10
  documents: ["D1.pione", "D2.pione", "D3.pione"],
11
11
  scenarios: ["s1", "s2", "s3"]
12
12
  )
@@ -7,6 +7,7 @@ TestHelper.scope do |this|
7
7
 
8
8
  describe Pione::PNML::InputMergeComplement do
9
9
  it "should name by `input merge` in simple case" do
10
+ env = Lang::Environment.new
10
11
  net = PNML::Reader.read(this::SIMPLE)
11
12
 
12
13
  # transition
@@ -14,13 +15,14 @@ TestHelper.scope do |this|
14
15
  place = net.find_all_places_by_target_id(transition_A.id).first
15
16
 
16
17
  # apply "input merge complement" rule
17
- PNML::NetRewriter.new{|rules| rules << PNML::InputMergeComplement}.rewrite(net)
18
+ PNML::NetRewriter.new{|rules| rules << PNML::InputMergeComplement}.rewrite(net, env)
18
19
 
19
20
  # test
20
21
  place.name.should == "<'i1' or 'i2' or 'i3'"
21
22
  end
22
23
 
23
24
  it "should name by `input merge` in complex case" do
25
+ env = Lang::Environment.new
24
26
  net = PNML::Reader.read(this::COMPLEX)
25
27
 
26
28
  # transition
@@ -30,7 +32,7 @@ TestHelper.scope do |this|
30
32
  place_LB = net.find_all_places_by_target_id(transition_B.id).first
31
33
 
32
34
  # apply "input merge complement" rule
33
- PNML::NetRewriter.new{|rules| rules << PNML::InputMergeComplement}.rewrite(net)
35
+ PNML::NetRewriter.new{|rules| rules << PNML::InputMergeComplement}.rewrite(net, env)
34
36
 
35
37
  # test
36
38
  place_LA.name.should == "<'i1' or 'i2' or 'i3'"
@@ -7,6 +7,7 @@ TestHelper.scope do |this|
7
7
 
8
8
  describe Pione::PNML::InputParallelizationComplement do
9
9
  it "should name by `input parallelization` in simple case" do
10
+ env = Lang::Environment.new
10
11
  net = PNML::Reader.read(this::SIMPLE)
11
12
 
12
13
  # elements
@@ -18,7 +19,7 @@ TestHelper.scope do |this|
18
19
  place_LC = net.find_all_places_by_target_id(transition_C.id).first
19
20
 
20
21
  # apply "input parallelization complement" rule
21
- PNML::NetRewriter.new{|rules| rules << PNML::InputParallelizationComplement}.rewrite(net)
22
+ PNML::NetRewriter.new{|rules| rules << PNML::InputParallelizationComplement}.rewrite(net, env)
22
23
 
23
24
  # test
24
25
  place_LA.name.should == "'i1'"
@@ -27,6 +28,7 @@ TestHelper.scope do |this|
27
28
  end
28
29
 
29
30
  it "should name by `input parallelization` in complex case" do
31
+ env = Lang::Environment.new
30
32
  net = PNML::Reader.read(this::COMPLEX)
31
33
 
32
34
  # elements
@@ -38,7 +40,7 @@ TestHelper.scope do |this|
38
40
  places_LC = net.find_all_places_by_target_id(transition_C.id)
39
41
 
40
42
  # apply "input parallelization complement" rule
41
- PNML::NetRewriter.new{|rules| rules << PNML::InputParallelizationComplement}.rewrite(net)
43
+ PNML::NetRewriter.new{|rules| rules << PNML::InputParallelizationComplement}.rewrite(net, env)
42
44
 
43
45
  # test
44
46
  places_LA.map{|place| place.name}.sort.should == ["'i1'", "'i2'"]
@@ -8,6 +8,7 @@ TestHelper.scope do |this|
8
8
 
9
9
  describe Pione::PNML::InputReduction do
10
10
  it "should reduce nodes by `input reduction` in simple case" do
11
+ env = Lang::Environment.new
11
12
  net = PNML::Reader.read(this::SIMPLE)
12
13
 
13
14
  # save net elements
@@ -17,7 +18,7 @@ TestHelper.scope do |this|
17
18
  arc_A_o1 = net.find_arc(transition_A.id, place_o1.id)
18
19
 
19
20
  # apply input reduction
20
- PNML::NetRewriter.new{|rules| rules << PNML::InputReduction}.rewrite(net)
21
+ PNML::NetRewriter.new{|rules| rules << PNML::InputReduction}.rewrite(net, env)
21
22
 
22
23
  # test transitions
23
24
  net.transitions.size.should == 1
@@ -35,6 +36,7 @@ TestHelper.scope do |this|
35
36
  end
36
37
 
37
38
  it "should reduce nodes by `input reduction` in complex case" do
39
+ env = Lang::Environment.new
38
40
  net = PNML::Reader.read(this::COMPLEX)
39
41
 
40
42
  # save net elements
@@ -45,7 +47,7 @@ TestHelper.scope do |this|
45
47
  place_o1 = net.find_place_by_name(">'o1'")
46
48
 
47
49
  # apply output reduction
48
- PNML::NetRewriter.new{|rules| rules << PNML::InputReduction}.rewrite(net)
50
+ PNML::NetRewriter.new{|rules| rules << PNML::InputReduction}.rewrite(net, env)
49
51
 
50
52
  # test transitions
51
53
  net.transitions.size.should == 1
@@ -67,6 +69,7 @@ TestHelper.scope do |this|
67
69
  end
68
70
 
69
71
  it "should reduce nodes by `input reduction` in long case" do
72
+ env = Lang::Environment.new
70
73
  net = PNML::Reader.read(this::LONG)
71
74
 
72
75
  # save net elements
@@ -76,7 +79,7 @@ TestHelper.scope do |this|
76
79
  arc_A_o1 = net.find_arc(transition_A.id, place_o1.id)
77
80
 
78
81
  # apply input reduction
79
- PNML::NetRewriter.new{|rules| rules << PNML::InputReduction}.rewrite(net)
82
+ PNML::NetRewriter.new{|rules| rules << PNML::InputReduction}.rewrite(net, env)
80
83
 
81
84
  # test transitions
82
85
  net.transitions.size.should == 1
@@ -94,6 +97,7 @@ TestHelper.scope do |this|
94
97
  end
95
98
 
96
99
  it "should not reduce any nodes if there aren't output reducible nodes" do
100
+ env = Lang::Environment.new
97
101
  net = PNML::Reader.read(this::DIR + "OutputReductionSimple.pnml")
98
102
 
99
103
  # save net elements
@@ -102,7 +106,7 @@ TestHelper.scope do |this|
102
106
  arcs = net.arcs.clone
103
107
 
104
108
  # apply input reduction
105
- PNML::NetRewriter.new{|rules| rules << PNML::InputReduction}.rewrite(net)
109
+ PNML::NetRewriter.new{|rules| rules << PNML::InputReduction}.rewrite(net, env)
106
110
 
107
111
  # test
108
112
  net.places.should == places
@@ -2,6 +2,7 @@ require 'pione/test-helper'
2
2
 
3
3
  describe Pione::PNML::InvalidArcElimination do
4
4
  it "should eliminate invalid arcs" do
5
+ env = Lang::Environment.new
5
6
  net = PNML::Net.new
6
7
 
7
8
  # place and transition
@@ -24,7 +25,7 @@ describe Pione::PNML::InvalidArcElimination do
24
25
  net.arcs << PNML::Arc.new(net, net.generate_id, transition.id, transition.id)
25
26
 
26
27
  # apply "invalid arc elimination" rule
27
- PNML::NetRewriter.new{|rules| rules << PNML::InvalidArcElimination}.rewrite(net)
28
+ PNML::NetRewriter.new{|rules| rules << PNML::InvalidArcElimination}.rewrite(net, env)
28
29
 
29
30
  # test
30
31
  net.arcs.size.should == 1
@@ -7,6 +7,7 @@ TestHelper.scope do |this|
7
7
 
8
8
  describe Pione::PNML::IOExpansion do
9
9
  it "should expand in simple case" do
10
+ env = Lang::Environment.new
10
11
  net = PNML::Reader.read(this::SIMPLE)
11
12
 
12
13
  # save elements
@@ -19,7 +20,7 @@ TestHelper.scope do |this|
19
20
  arc_p1_B = net.find_arc(place_p1.id, transition_B.id)
20
21
 
21
22
  # apply "input/output expansion"
22
- PNML::NetRewriter.new{|rules| rules << PNML::IOExpansion}.rewrite(net)
23
+ PNML::NetRewriter.new{|rules| rules << PNML::IOExpansion}.rewrite(net, env)
23
24
 
24
25
  # new elements
25
26
  places_p1= net.find_all_places_by_name("'p1'")
@@ -46,6 +47,7 @@ TestHelper.scope do |this|
46
47
  end
47
48
 
48
49
  it "should expand in complex case" do
50
+ env = Lang::Environment.new
49
51
  net = PNML::Reader.read(this::COMPLEX)
50
52
 
51
53
  # save elements
@@ -68,7 +70,7 @@ TestHelper.scope do |this|
68
70
  arc_p2_E = net.find_arc(place_p2.id, transition_E.id)
69
71
 
70
72
  # apply "input/output expansion"
71
- PNML::NetRewriter.new{|rules| rules << PNML::IOExpansion}.rewrite(net)
73
+ PNML::NetRewriter.new{|rules| rules << PNML::IOExpansion}.rewrite(net, env)
72
74
 
73
75
  # test the net
74
76
  net.should.valid
@@ -5,10 +5,11 @@ TestHelper.scope do |this|
5
5
 
6
6
  describe Pione::PNML::IsolatedElementElimination do
7
7
  it "should elminate floating elements" do
8
+ env = Lang::Environment.new
8
9
  net = PNML::Reader.read(this::DOC)
9
10
 
10
11
  # apply floating element elimination
11
- PNML::NetRewriter.new{|rules| rules << PNML::IsolatedElementElimination}.rewrite(net)
12
+ PNML::NetRewriter.new{|rules| rules << PNML::IsolatedElementElimination}.rewrite(net, env)
12
13
 
13
14
  # test
14
15
  net.find_transition_by_name("A").should.not.nil
@@ -0,0 +1,100 @@
1
+ require 'pione/test-helper'
2
+
3
+ describe Pione::PNML::LabelExtractor do
4
+ def extract(name, label, expected)
5
+ PNML::LabelExtractor.send(name, label).should == expected
6
+ end
7
+
8
+ it "should extract rule expressions" do
9
+ extract(:extract_rule_expr, "A", "A")
10
+ extract(:extract_rule_expr, "A # abc", "A")
11
+ extract(:extract_rule_expr, "A # a # b # c", "A")
12
+ extract(:extract_rule_expr, "A {X: 1}", "A {X: 1}")
13
+ extract(:extract_rule_expr, "extern A", "A")
14
+ extract(:extract_rule_expr, "extern A {X: 1}", "A {X: 1}")
15
+ end
16
+
17
+ it "sohuld extract data expressions" do
18
+ extract(:extract_data_expr, "'*.a'", "'*.a'")
19
+ extract(:extract_data_expr, "'*.a' # abc", "'*.a'")
20
+ extract(:extract_data_expr, "'#.a' # abc", "'#.a'")
21
+ extract(:extract_data_expr, "'*.a' # a # b # c", "'*.a'")
22
+ extract(:extract_data_expr, "< '*.a'", "'*.a'")
23
+ extract(:extract_data_expr, "< '*.a' # abc", "'*.a'")
24
+ extract(:extract_data_expr, "> '*.a'", "'*.a'")
25
+ extract(:extract_data_expr, "> '*.a' # abc", "'*.a'")
26
+ end
27
+
28
+ it "should extract param set expressions" do
29
+ { "{X: 1}" => "{X: 1}",
30
+ "{X: 1} # abc" => "{X: 1}",
31
+ "{X: 1, Y: 2, Z: 3}" => "{X: 1, Y: 2, Z: 3}",
32
+ "{X: 1, Y: 2, Z: 3} # abc" => "{X: 1, Y: 2, Z: 3}"
33
+ }.each do |label, expr|
34
+ PNML::LabelExtractor.extract_param_set(label).should == expr
35
+ end
36
+ end
37
+
38
+ it "should extract ticket expressions" do
39
+ { "<T>" => "<T>",
40
+ "<T> # abc" => "<T>"
41
+ }.each do |label, expr|
42
+ PNML::LabelExtractor.extract_ticket(label).should == expr
43
+ end
44
+ end
45
+
46
+ it "should extract feature expressions" do
47
+ { "+X" => "+X",
48
+ "-X" => "-X",
49
+ "!X" => "!X",
50
+ "?X" => "?X",
51
+ "+X # abc" => "+X",
52
+ "-X # abc" => "-X",
53
+ "!X # abc" => "!X",
54
+ "?X # abc" => "?X",
55
+ }.each do |label, expr|
56
+ PNML::LabelExtractor.extract_feature(label).should == expr
57
+ end
58
+ end
59
+
60
+ it "should extract parameter sentences" do
61
+ { "param $X" => "param $X",
62
+ "param $X := 1" => "param $X := 1",
63
+ "basic param $X" => "basic param $X",
64
+ "advanced param $X" => "advanced param $X",
65
+ "param $X # abc" => "param $X",
66
+ "param $X := 1 # abc" => "param $X := 1",
67
+ }.each do |label, expr|
68
+ PNML::LabelExtractor.extract_param_sentence(label).should == expr
69
+ end
70
+ end
71
+
72
+ it "should extract feature sentences" do
73
+ extract(:extract_feature_sentence, "feature +X", "feature +X")
74
+ extract(:extract_feature_sentence, "feature -X", "feature -X")
75
+ extract(:extract_feature_sentence, "feature !X", "feature !X")
76
+ extract(:extract_feature_sentence, "feature ?X", "feature ?X")
77
+ extract(:extract_feature_sentence, "feature +X # abc", "feature +X")
78
+ extract(:extract_feature_sentence, "feature -X # abc", "feature -X")
79
+ extract(:extract_feature_sentence, "feature !X # abc", "feature !X")
80
+ extract(:extract_feature_sentence, "feature ?X # abc", "feature ?X")
81
+ end
82
+
83
+ it "should extract variable binding sentences" do
84
+ extract(:extract_variable_binding, "$X := 1", "$X := 1")
85
+ extract(:extract_variable_binding, "$X := 1 # abc", "$X := 1")
86
+ extract(:extract_variable_binding, '$X := "# abc" # abc', '$X := "# abc"')
87
+ end
88
+
89
+ it "should extract priority" do
90
+ { "'*.a' #1" => 1,
91
+ "'*.a' #2" => 2,
92
+ "'*.a' #3" => 3,
93
+ "'*.a' #1 # abc" => 1,
94
+ "'#1' #1000" => 1000,
95
+ "'*.a'" => nil,
96
+ }.each do |label, priority|
97
+ PNML::LabelExtractor.extract_priority(label).should == priority
98
+ end
99
+ end
100
+ end
@@ -7,6 +7,7 @@ TestHelper.scope do |this|
7
7
 
8
8
  describe Pione::PNML::OutputDecompositionComplement do
9
9
  it "should complement the name of source place in simple case" do
10
+ env = Lang::Environment.new
10
11
  net = PNML::Reader.read(this::SIMPLE)
11
12
 
12
13
  # elements
@@ -14,13 +15,14 @@ TestHelper.scope do |this|
14
15
  place_RA = net.find_all_places_by_source_id(transition_A.id).first
15
16
 
16
17
  # apply "output decomposition complement" rule
17
- PNML::NetRewriter.new{|rules| rules << PNML::OutputDecompositionComplement}.rewrite(net)
18
+ PNML::NetRewriter.new{|rules| rules << PNML::OutputDecompositionComplement}.rewrite(net, env)
18
19
 
19
20
  # test
20
21
  place_RA.name.should == ">'o1' or 'o2' or 'o3'"
21
22
  end
22
23
 
23
24
  it "should complement the name of source place in complex case" do
25
+ env = Lang::Environment.new
24
26
  net = PNML::Reader.read(this::COMPLEX)
25
27
 
26
28
  # elements
@@ -30,7 +32,7 @@ TestHelper.scope do |this|
30
32
  place_RB = net.find_all_places_by_source_id(transition_B.id).first
31
33
 
32
34
  # apply "output decomposition complement" rule
33
- PNML::NetRewriter.new{|rules| rules << PNML::OutputDecompositionComplement}.rewrite(net)
35
+ PNML::NetRewriter.new{|rules| rules << PNML::OutputDecompositionComplement}.rewrite(net, env)
34
36
 
35
37
  # test
36
38
  place_RA.name.should == ">'o1' or 'o2' or 'o3'"