ruote-maestrodev 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. data/CHANGELOG.txt +290 -0
  2. data/CREDITS.txt +99 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.rdoc +88 -0
  5. data/Rakefile +108 -0
  6. data/TODO.txt +488 -0
  7. data/lib/ruote.rb +7 -0
  8. data/lib/ruote/context.rb +194 -0
  9. data/lib/ruote/engine.rb +1062 -0
  10. data/lib/ruote/engine/process_error.rb +122 -0
  11. data/lib/ruote/engine/process_status.rb +448 -0
  12. data/lib/ruote/exp/command.rb +87 -0
  13. data/lib/ruote/exp/commanded.rb +69 -0
  14. data/lib/ruote/exp/condition.rb +227 -0
  15. data/lib/ruote/exp/fe_add_branches.rb +138 -0
  16. data/lib/ruote/exp/fe_apply.rb +154 -0
  17. data/lib/ruote/exp/fe_cancel_process.rb +78 -0
  18. data/lib/ruote/exp/fe_command.rb +156 -0
  19. data/lib/ruote/exp/fe_concurrence.rb +321 -0
  20. data/lib/ruote/exp/fe_concurrent_iterator.rb +219 -0
  21. data/lib/ruote/exp/fe_cron.rb +141 -0
  22. data/lib/ruote/exp/fe_cursor.rb +324 -0
  23. data/lib/ruote/exp/fe_define.rb +112 -0
  24. data/lib/ruote/exp/fe_echo.rb +60 -0
  25. data/lib/ruote/exp/fe_equals.rb +115 -0
  26. data/lib/ruote/exp/fe_error.rb +82 -0
  27. data/lib/ruote/exp/fe_filter.rb +648 -0
  28. data/lib/ruote/exp/fe_forget.rb +88 -0
  29. data/lib/ruote/exp/fe_given.rb +154 -0
  30. data/lib/ruote/exp/fe_if.rb +127 -0
  31. data/lib/ruote/exp/fe_inc.rb +205 -0
  32. data/lib/ruote/exp/fe_iterator.rb +234 -0
  33. data/lib/ruote/exp/fe_let.rb +75 -0
  34. data/lib/ruote/exp/fe_listen.rb +304 -0
  35. data/lib/ruote/exp/fe_lose.rb +110 -0
  36. data/lib/ruote/exp/fe_noop.rb +45 -0
  37. data/lib/ruote/exp/fe_once.rb +215 -0
  38. data/lib/ruote/exp/fe_participant.rb +287 -0
  39. data/lib/ruote/exp/fe_read.rb +69 -0
  40. data/lib/ruote/exp/fe_redo.rb +82 -0
  41. data/lib/ruote/exp/fe_ref.rb +152 -0
  42. data/lib/ruote/exp/fe_registerp.rb +110 -0
  43. data/lib/ruote/exp/fe_reserve.rb +126 -0
  44. data/lib/ruote/exp/fe_restore.rb +102 -0
  45. data/lib/ruote/exp/fe_save.rb +72 -0
  46. data/lib/ruote/exp/fe_sequence.rb +59 -0
  47. data/lib/ruote/exp/fe_set.rb +154 -0
  48. data/lib/ruote/exp/fe_subprocess.rb +211 -0
  49. data/lib/ruote/exp/fe_that.rb +92 -0
  50. data/lib/ruote/exp/fe_undo.rb +67 -0
  51. data/lib/ruote/exp/fe_unregisterp.rb +69 -0
  52. data/lib/ruote/exp/fe_wait.rb +95 -0
  53. data/lib/ruote/exp/flowexpression.rb +886 -0
  54. data/lib/ruote/exp/iterator.rb +81 -0
  55. data/lib/ruote/exp/merge.rb +118 -0
  56. data/lib/ruote/exp/ro_attributes.rb +212 -0
  57. data/lib/ruote/exp/ro_filters.rb +136 -0
  58. data/lib/ruote/exp/ro_persist.rb +154 -0
  59. data/lib/ruote/exp/ro_variables.rb +189 -0
  60. data/lib/ruote/exp/ro_vf.rb +68 -0
  61. data/lib/ruote/fei.rb +260 -0
  62. data/lib/ruote/id/mnemo_wfid_generator.rb +43 -0
  63. data/lib/ruote/id/wfid_generator.rb +81 -0
  64. data/lib/ruote/log/default_history.rb +122 -0
  65. data/lib/ruote/log/pretty.rb +176 -0
  66. data/lib/ruote/log/storage_history.rb +159 -0
  67. data/lib/ruote/log/test_logger.rb +208 -0
  68. data/lib/ruote/log/wait_logger.rb +64 -0
  69. data/lib/ruote/part/block_participant.rb +137 -0
  70. data/lib/ruote/part/code_participant.rb +81 -0
  71. data/lib/ruote/part/engine_participant.rb +189 -0
  72. data/lib/ruote/part/local_participant.rb +138 -0
  73. data/lib/ruote/part/no_op_participant.rb +60 -0
  74. data/lib/ruote/part/null_participant.rb +54 -0
  75. data/lib/ruote/part/rev_participant.rb +169 -0
  76. data/lib/ruote/part/smtp_participant.rb +116 -0
  77. data/lib/ruote/part/storage_participant.rb +392 -0
  78. data/lib/ruote/part/template.rb +84 -0
  79. data/lib/ruote/participant.rb +7 -0
  80. data/lib/ruote/reader.rb +278 -0
  81. data/lib/ruote/reader/json.rb +49 -0
  82. data/lib/ruote/reader/radial.rb +290 -0
  83. data/lib/ruote/reader/ruby_dsl.rb +186 -0
  84. data/lib/ruote/reader/xml.rb +99 -0
  85. data/lib/ruote/receiver/base.rb +212 -0
  86. data/lib/ruote/storage/base.rb +364 -0
  87. data/lib/ruote/storage/composite_storage.rb +121 -0
  88. data/lib/ruote/storage/fs_storage.rb +139 -0
  89. data/lib/ruote/storage/hash_storage.rb +211 -0
  90. data/lib/ruote/svc/dispatch_pool.rb +158 -0
  91. data/lib/ruote/svc/dollar_sub.rb +298 -0
  92. data/lib/ruote/svc/error_handler.rb +138 -0
  93. data/lib/ruote/svc/expression_map.rb +97 -0
  94. data/lib/ruote/svc/participant_list.rb +397 -0
  95. data/lib/ruote/svc/tracker.rb +172 -0
  96. data/lib/ruote/svc/treechecker.rb +141 -0
  97. data/lib/ruote/tree_dot.rb +85 -0
  98. data/lib/ruote/util/filter.rb +525 -0
  99. data/lib/ruote/util/hashdot.rb +79 -0
  100. data/lib/ruote/util/look.rb +128 -0
  101. data/lib/ruote/util/lookup.rb +127 -0
  102. data/lib/ruote/util/misc.rb +167 -0
  103. data/lib/ruote/util/ometa.rb +71 -0
  104. data/lib/ruote/util/serializer.rb +103 -0
  105. data/lib/ruote/util/subprocess.rb +88 -0
  106. data/lib/ruote/util/time.rb +100 -0
  107. data/lib/ruote/util/tree.rb +58 -0
  108. data/lib/ruote/version.rb +29 -0
  109. data/lib/ruote/worker.rb +386 -0
  110. data/lib/ruote/workitem.rb +394 -0
  111. data/phil.txt +14 -0
  112. data/ruote.gemspec +44 -0
  113. data/test/bm/ci.rb +55 -0
  114. data/test/bm/ici.rb +71 -0
  115. data/test/bm/juuman.rb +54 -0
  116. data/test/bm/launch_bench.rb +37 -0
  117. data/test/bm/load_26c.rb +97 -0
  118. data/test/bm/mega.rb +64 -0
  119. data/test/bm/seq_thousand.rb +31 -0
  120. data/test/bm/t.rb +35 -0
  121. data/test/functional/base.rb +247 -0
  122. data/test/functional/concurrent_base.rb +98 -0
  123. data/test/functional/crunner.rb +31 -0
  124. data/test/functional/ct_0_concurrence.rb +65 -0
  125. data/test/functional/ct_1_iterator.rb +67 -0
  126. data/test/functional/ct_2_cancel.rb +81 -0
  127. data/test/functional/eft_0_process_definition.rb +65 -0
  128. data/test/functional/eft_10_cancel_process.rb +46 -0
  129. data/test/functional/eft_11_wait.rb +109 -0
  130. data/test/functional/eft_12_listen.rb +500 -0
  131. data/test/functional/eft_13_iterator.rb +342 -0
  132. data/test/functional/eft_14_cursor.rb +456 -0
  133. data/test/functional/eft_15_loop.rb +69 -0
  134. data/test/functional/eft_16_if.rb +183 -0
  135. data/test/functional/eft_17_equals.rb +55 -0
  136. data/test/functional/eft_18_concurrent_iterator.rb +410 -0
  137. data/test/functional/eft_19_reserve.rb +136 -0
  138. data/test/functional/eft_1_echo.rb +68 -0
  139. data/test/functional/eft_20_save.rb +116 -0
  140. data/test/functional/eft_21_restore.rb +61 -0
  141. data/test/functional/eft_22_noop.rb +28 -0
  142. data/test/functional/eft_23_apply.rb +168 -0
  143. data/test/functional/eft_24_add_branches.rb +98 -0
  144. data/test/functional/eft_25_command.rb +28 -0
  145. data/test/functional/eft_26_error.rb +77 -0
  146. data/test/functional/eft_27_inc.rb +280 -0
  147. data/test/functional/eft_28_once.rb +135 -0
  148. data/test/functional/eft_29_cron.rb +64 -0
  149. data/test/functional/eft_2_sequence.rb +58 -0
  150. data/test/functional/eft_30_ref.rb +155 -0
  151. data/test/functional/eft_31_registerp.rb +130 -0
  152. data/test/functional/eft_32_lose.rb +93 -0
  153. data/test/functional/eft_33_let.rb +31 -0
  154. data/test/functional/eft_34_given.rb +123 -0
  155. data/test/functional/eft_35_filter.rb +375 -0
  156. data/test/functional/eft_36_read.rb +95 -0
  157. data/test/functional/eft_3_participant.rb +149 -0
  158. data/test/functional/eft_4_set.rb +296 -0
  159. data/test/functional/eft_5_subprocess.rb +163 -0
  160. data/test/functional/eft_6_concurrence.rb +304 -0
  161. data/test/functional/eft_7_forget.rb +61 -0
  162. data/test/functional/eft_8_undo.rb +114 -0
  163. data/test/functional/eft_9_redo.rb +138 -0
  164. data/test/functional/ft_0_worker.rb +65 -0
  165. data/test/functional/ft_10_dollar.rb +304 -0
  166. data/test/functional/ft_11_recursion.rb +109 -0
  167. data/test/functional/ft_12_launchitem.rb +43 -0
  168. data/test/functional/ft_13_variables.rb +151 -0
  169. data/test/functional/ft_14_re_apply.rb +324 -0
  170. data/test/functional/ft_15_timeout.rb +226 -0
  171. data/test/functional/ft_16_participant_params.rb +98 -0
  172. data/test/functional/ft_17_conditional.rb +102 -0
  173. data/test/functional/ft_18_kill.rb +138 -0
  174. data/test/functional/ft_19_participant_code.rb +67 -0
  175. data/test/functional/ft_1_process_status.rb +796 -0
  176. data/test/functional/ft_20_storage_participant.rb +543 -0
  177. data/test/functional/ft_21_forget.rb +153 -0
  178. data/test/functional/ft_22_process_definitions.rb +90 -0
  179. data/test/functional/ft_23_load_defs.rb +79 -0
  180. data/test/functional/ft_24_block_participant.rb +235 -0
  181. data/test/functional/ft_25_receiver.rb +207 -0
  182. data/test/functional/ft_26_participant_rtimeout.rb +179 -0
  183. data/test/functional/ft_27_var_indirection.rb +128 -0
  184. data/test/functional/ft_28_null_noop_participants.rb +51 -0
  185. data/test/functional/ft_29_part_template.rb +60 -0
  186. data/test/functional/ft_2_errors.rb +380 -0
  187. data/test/functional/ft_30_smtp_participant.rb +122 -0
  188. data/test/functional/ft_31_part_blocking.rb +72 -0
  189. data/test/functional/ft_33_participant_subprocess_priority.rb +32 -0
  190. data/test/functional/ft_34_cursor_rewind.rb +101 -0
  191. data/test/functional/ft_35_add_service.rb +56 -0
  192. data/test/functional/ft_36_storage_history.rb +150 -0
  193. data/test/functional/ft_37_default_history.rb +109 -0
  194. data/test/functional/ft_38_participant_more.rb +193 -0
  195. data/test/functional/ft_39_wait_for.rb +136 -0
  196. data/test/functional/ft_3_participant_registration.rb +574 -0
  197. data/test/functional/ft_40_wait_logger.rb +62 -0
  198. data/test/functional/ft_41_participants.rb +91 -0
  199. data/test/functional/ft_42_storage_copy.rb +71 -0
  200. data/test/functional/ft_43_participant_on_reply.rb +87 -0
  201. data/test/functional/ft_44_var_participant.rb +35 -0
  202. data/test/functional/ft_45_participant_accept.rb +64 -0
  203. data/test/functional/ft_46_launch_single.rb +83 -0
  204. data/test/functional/ft_47_wfid_generator.rb +54 -0
  205. data/test/functional/ft_48_lose.rb +112 -0
  206. data/test/functional/ft_49_engine_on_error.rb +201 -0
  207. data/test/functional/ft_4_cancel.rb +132 -0
  208. data/test/functional/ft_50_engine_config.rb +22 -0
  209. data/test/functional/ft_51_misc.rb +67 -0
  210. data/test/functional/ft_52_case.rb +134 -0
  211. data/test/functional/ft_53_engine_on_terminate.rb +95 -0
  212. data/test/functional/ft_54_patterns.rb +104 -0
  213. data/test/functional/ft_55_engine_participant.rb +303 -0
  214. data/test/functional/ft_56_filter_attribute.rb +259 -0
  215. data/test/functional/ft_57_rev_participant.rb +252 -0
  216. data/test/functional/ft_58_workitem.rb +69 -0
  217. data/test/functional/ft_59_pause.rb +343 -0
  218. data/test/functional/ft_5_on_error.rb +384 -0
  219. data/test/functional/ft_60_code_participant.rb +45 -0
  220. data/test/functional/ft_61_trailing_fields.rb +34 -0
  221. data/test/functional/ft_62_exp_name_and_dollar_substitution.rb +35 -0
  222. data/test/functional/ft_6_on_cancel.rb +221 -0
  223. data/test/functional/ft_7_tags.rb +177 -0
  224. data/test/functional/ft_8_participant_consumption.rb +124 -0
  225. data/test/functional/ft_9_subprocesses.rb +146 -0
  226. data/test/functional/restart_base.rb +34 -0
  227. data/test/functional/rt_0_wait.rb +55 -0
  228. data/test/functional/rt_1_listen.rb +56 -0
  229. data/test/functional/rt_2_errors.rb +56 -0
  230. data/test/functional/rt_3_once.rb +70 -0
  231. data/test/functional/rt_4_cron.rb +64 -0
  232. data/test/functional/rt_5_timeout.rb +60 -0
  233. data/test/functional/rtest.rb +8 -0
  234. data/test/functional/storage_helper.rb +93 -0
  235. data/test/functional/test.rb +44 -0
  236. data/test/functional/vertical.rb +46 -0
  237. data/test/path_helper.rb +15 -0
  238. data/test/test.rb +13 -0
  239. data/test/test_helper.rb +28 -0
  240. data/test/unit/storage.rb +428 -0
  241. data/test/unit/storages.rb +37 -0
  242. data/test/unit/test.rb +28 -0
  243. data/test/unit/ut_0_ruby_reader.rb +223 -0
  244. data/test/unit/ut_11_lookup.rb +122 -0
  245. data/test/unit/ut_13_serializer.rb +65 -0
  246. data/test/unit/ut_14_is_uri.rb +28 -0
  247. data/test/unit/ut_15_util.rb +57 -0
  248. data/test/unit/ut_16_reader.rb +225 -0
  249. data/test/unit/ut_18_engine.rb +47 -0
  250. data/test/unit/ut_19_part_template.rb +86 -0
  251. data/test/unit/ut_1_fei.rb +165 -0
  252. data/test/unit/ut_20_composite_storage.rb +74 -0
  253. data/test/unit/ut_21_svc_participant_list.rb +46 -0
  254. data/test/unit/ut_22_filter.rb +1094 -0
  255. data/test/unit/ut_23_svc_tracker.rb +48 -0
  256. data/test/unit/ut_24_radial_reader.rb +332 -0
  257. data/test/unit/ut_25_merge.rb +113 -0
  258. data/test/unit/ut_3_wait_logger.rb +39 -0
  259. data/test/unit/ut_4_expmap.rb +20 -0
  260. data/test/unit/ut_5_tree.rb +54 -0
  261. data/test/unit/ut_6_condition.rb +303 -0
  262. data/test/unit/ut_7_workitem.rb +99 -0
  263. data/test/unit/ut_8_tree_to_dot.rb +72 -0
  264. data/test/unit/ut_9_xml_reader.rb +61 -0
  265. metadata +504 -0
@@ -0,0 +1,39 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Thu Dec 10 14:08:30 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'test_helper.rb')
9
+
10
+ require 'ruote'
11
+
12
+
13
+ class UtWaitLoggerTest < Test::Unit::TestCase
14
+
15
+ def test_wait_for_participant
16
+
17
+ pdef = Ruote.process_definition :name => 'test' do
18
+ sequence do
19
+ #wait '1'
20
+ alpha
21
+ end
22
+ end
23
+
24
+ engine = Ruote::Engine.new(Ruote::Worker.new(Ruote::HashStorage.new))
25
+
26
+ #engine.context.logger.noisy = true
27
+
28
+ alpha = engine.register_participant :alpha, Ruote::StorageParticipant
29
+
30
+ engine.launch(pdef)
31
+ msg = engine.wait_for(:alpha)
32
+
33
+ assert_equal 1, alpha.size
34
+
35
+ assert_not_nil msg
36
+ assert_not_nil msg['workitem']
37
+ end
38
+ end
39
+
@@ -0,0 +1,20 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Wed May 20 11:21:39 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'test_helper.rb')
9
+
10
+ require 'ruote/svc/expression_map'
11
+
12
+
13
+ class UtExpMapTest < Test::Unit::TestCase
14
+
15
+ def test_zero
16
+
17
+ assert true
18
+ end
19
+ end
20
+
@@ -0,0 +1,54 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Thu May 21 15:29:48 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'test_helper.rb')
9
+
10
+ require 'ruote/engine/process_status'
11
+
12
+
13
+ class TreeTest < Test::Unit::TestCase
14
+
15
+ def test_decompose_tree
16
+
17
+ assert_equal(
18
+ {"0"=>["define", {"name"=>"nada"}],
19
+ "0_0"=>["sequence", {}],
20
+ "0_0_0"=>["alpha", {}],
21
+ "0_0_1"=>["bravo", {}]},
22
+ Ruote.decompose_tree(
23
+ ["define", {"name"=>"nada"}, [
24
+ ["sequence", {}, [["alpha", {}, []], ["bravo", {}, []]]]
25
+ ]]))
26
+ end
27
+
28
+ def test_decompose_sub_tree
29
+
30
+ assert_equal(
31
+ {"0_1"=>["define", {"name"=>"nada"}],
32
+ "0_1_0"=>["sequence", {}],
33
+ "0_1_0_0"=>["alpha", {}],
34
+ "0_1_0_1"=>["bravo", {}]},
35
+ Ruote.decompose_tree(
36
+ ["define", {"name"=>"nada"}, [
37
+ ["sequence", {}, [["alpha", {}, []], ["bravo", {}, []]]]
38
+ ]], '0_1'))
39
+ end
40
+
41
+ def test_recompose_tree
42
+
43
+ assert_equal(
44
+ ["define", {"name"=>"nada"}, [
45
+ ["sequence", {}, [["alpha", {}, []], ["bravo", {}, []]]]
46
+ ]],
47
+ Ruote.recompose_tree(
48
+ {"0"=>["define", {"name"=>"nada"}],
49
+ "0_0"=>["sequence", {}],
50
+ "0_0_0"=>["alpha", {}],
51
+ "0_0_1"=>["bravo", {}]}))
52
+ end
53
+ end
54
+
@@ -0,0 +1,303 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Sun Jun 14 17:30:43 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'test_helper.rb')
9
+
10
+ require 'ruote/svc/treechecker'
11
+ require 'ruote/svc/expression_map'
12
+
13
+
14
+ class ConditionTest < Test::Unit::TestCase
15
+
16
+ class FakeExpression
17
+
18
+ def initialize(h)
19
+ @h = h
20
+ end
21
+ def attribute(k)
22
+ @h[k]
23
+ end
24
+ end
25
+
26
+ def assert_not_skip(result, h)
27
+
28
+ fe = FakeExpression.new(h)
29
+
30
+ sif = fe.attribute(:if)
31
+ sunless = fe.attribute(:unless)
32
+
33
+ assert_equal result, Ruote::Exp::Condition.apply?(sif, sunless)
34
+ end
35
+
36
+ def assert_b(b, conditional=nil)
37
+
38
+ if conditional == nil
39
+ conditional = b
40
+ b = true
41
+ end
42
+
43
+ assert_equal(
44
+ b,
45
+ Ruote::Exp::Condition.true?(conditional),
46
+ ">#{conditional}< was expected to be #{b}")
47
+ end
48
+
49
+ def test_blank
50
+
51
+ assert_b(false, '')
52
+ assert_b(false, ' ')
53
+ assert_b(true, true)
54
+ assert_b(false, false)
55
+ end
56
+
57
+ def test_if
58
+
59
+ assert_not_skip false, :if => 'true == false'
60
+ assert_not_skip false, :if => "'true' == 'false'"
61
+ assert_not_skip false, :if => '"true" == "false"'
62
+
63
+ assert_not_skip true, :if => 'a == a'
64
+ assert_not_skip true, :if => '"a" == "a"'
65
+
66
+ assert_not_skip true, :if => 'blah blah blah'
67
+ end
68
+
69
+ def test_unless
70
+
71
+ assert_not_skip true, :unless => 'true == false'
72
+ assert_not_skip false, :unless => 'false == false'
73
+ end
74
+
75
+ def test_set
76
+
77
+ assert_not_skip true, :if => 'true set'
78
+ assert_not_skip true, :if => "'true' set"
79
+ assert_not_skip true, :if => '"true" set'
80
+
81
+ assert_not_skip true, :if => 'true is set'
82
+ assert_not_skip true, :if => '"true" is set'
83
+ assert_not_skip true, :if => "'true' is set"
84
+ assert_not_skip false, :if => 'true is not set'
85
+ end
86
+
87
+ def test_illegal_code
88
+
89
+ assert_not_skip true, :if => 'exit'
90
+ end
91
+
92
+ def test_true
93
+
94
+ assert_b true, 'true == true'
95
+ assert_b true, 'alpha == alpha'
96
+
97
+ assert_b true, 'true is set'
98
+ assert_b true, 'false is set'
99
+
100
+ assert_b false, 'true is not set'
101
+ assert_b false, 'is set'
102
+ assert_b false, ' is set'
103
+ end
104
+
105
+ def test_bang_equal
106
+
107
+ assert_b false, 'true != true'
108
+ assert_b true, 'true != false'
109
+ end
110
+
111
+ def test_match
112
+
113
+ assert_b false, 'alpha =~ bravo'
114
+ assert_b true, 'alpha =~ al'
115
+ end
116
+
117
+ def test_number_comparison
118
+
119
+ assert_b true, 'b > a'
120
+ assert_b false, 'a > b'
121
+ assert_b true, '100 > 10'
122
+ assert_b true, '100 > 90'
123
+ assert_b true, '100.0 > 90'
124
+ end
125
+
126
+ def test_emptiness
127
+
128
+ assert_b false, ' == '
129
+ assert_b false, " == ''"
130
+ assert_b false, ' == ""'
131
+ assert_b false, ' == a'
132
+ assert_b false, 'a == '
133
+ end
134
+
135
+ def test_strip
136
+
137
+ assert_not_skip true, :if => 'a == a '
138
+ assert_not_skip true, :if => ' a == a '
139
+ assert_not_skip true, :if => ' a == a'
140
+ assert_not_skip true, :if => 'a == a'
141
+ assert_not_skip true, :if => 'a == a'
142
+ assert_not_skip true, :if => 'a==a'
143
+ end
144
+
145
+ def test_boolean_literals
146
+
147
+ assert_b true, true
148
+ assert_b false, false
149
+ end
150
+
151
+ def test_complex_strings
152
+
153
+ assert_b true, "'some dude' == 'some dude'"
154
+ assert_b true, "some dude == \"some dude\""
155
+ assert_b true, "some dude == 'some dude'"
156
+
157
+ assert_b false, "'some other dude' == 'some dude'"
158
+ assert_b false, "some other dude == 'some dude'"
159
+ end
160
+
161
+ def test_and_or
162
+
163
+ assert_b "1 and 2 and 3"
164
+ assert_b "1 && 2 && 3"
165
+
166
+ assert_b "1 or 2 or 3"
167
+ assert_b "1 || 2 || 3"
168
+
169
+ assert_b true, "true or false"
170
+
171
+ assert_b true, "true and (true or false)"
172
+ assert_b false, "true and (true and false)"
173
+
174
+ assert_b true, "'a' and ('b' and 'c')"
175
+ end
176
+
177
+ def test_not
178
+
179
+ assert_b true, "not false"
180
+ assert_b false, "not true"
181
+ assert_b true, "! false"
182
+ assert_b false, " ! true"
183
+ end
184
+
185
+ def assert_e(target, code)
186
+
187
+ assert_equal(
188
+ target,
189
+ Ruote::Exp::Condition.eval(code),
190
+ ">#{code}< was expected to eval to #{target.inspect}")
191
+ end
192
+
193
+ def test_eval
194
+
195
+ assert_e nil, "nil"
196
+
197
+ assert_e true, "true"
198
+ assert_e false, "false"
199
+ assert_e 'alice', '"alice"'
200
+ assert_e 1, '1'
201
+
202
+ assert_e([ 1, 2, 3 ], "[ 1, 2, 3 ]")
203
+ assert_e({ 'a' => 2, 'b' => 2.0 }, "{ 'a' => 2, 'b' => 2.0 }")
204
+
205
+ assert_e /^a/, "/^a/"
206
+
207
+ assert_e 'Loan', 'Loan'
208
+ assert_e 'Loan/Grant', 'Loan/Grant'
209
+ assert_e 'Loan/Grant', 'Loan / Grant'
210
+ end
211
+
212
+ def test_something_or_not
213
+
214
+ assert_b "something"
215
+ assert_b false, ""
216
+ end
217
+
218
+ def test_is_empty
219
+
220
+ assert_b "'' empty"
221
+ assert_b "'' is empty"
222
+ assert_b '"" empty'
223
+ assert_b '"" is empty'
224
+
225
+ assert_b "[] empty"
226
+ assert_b "[] is empty"
227
+
228
+ assert_b "{} empty"
229
+ assert_b "{} is empty"
230
+
231
+ assert_b false, "[1] is empty"
232
+ assert_b false, "{1=>2} is empty"
233
+ end
234
+
235
+ def test_is_not_empty
236
+
237
+ assert_b false, "'' not empty"
238
+ assert_b false, "'' is not empty"
239
+ assert_b false, '"" not empty'
240
+ assert_b false, '"" is not empty'
241
+
242
+ assert_b false, "[] not empty"
243
+ assert_b false, "[] is not empty"
244
+
245
+ assert_b false, "{} not empty"
246
+ assert_b false, "{} is not empty"
247
+
248
+ assert_b true, "[1] is not empty"
249
+ assert_b true, "{1=>2} is not empty"
250
+ end
251
+
252
+ def test_null
253
+
254
+ assert_b "nil == nil"
255
+ assert_b "1 != nil"
256
+ assert_b false, "1 == nil"
257
+ assert_b false, "nil != nil"
258
+
259
+ assert_b "nil null"
260
+ assert_b "nil is null"
261
+
262
+ assert_b false, "nil not null"
263
+ assert_b false, "nil is not null"
264
+
265
+ assert_b false, "1 null"
266
+ assert_b false, "1 is null"
267
+
268
+ assert_b true, "1 not null"
269
+ assert_b true, "1 is not null"
270
+ end
271
+
272
+ def test_in
273
+
274
+ assert_b "1 in [1, 2]"
275
+ assert_b "1 in {1 => 2}"
276
+
277
+ assert_b false, "3 in [1, 2]"
278
+ assert_b false, "2 in {1 => 2}"
279
+ end
280
+
281
+ def test_not_in
282
+
283
+ assert_b "7 not in [1, 2]"
284
+ assert_b "2 not in {1 => 2}"
285
+
286
+ assert_b false, "1 not in [1, 2]"
287
+ assert_b false, "1 not in {1 => 2}"
288
+ end
289
+
290
+ def test_in_gone_bad
291
+
292
+ assert_b false, "1 in [1 2]"
293
+ assert_b false, "1 in {x}"
294
+ end
295
+
296
+ def test_matching
297
+
298
+ assert_b "alpha =~ /^a/"
299
+ assert_b "'alpha toto' =~ /^a/"
300
+ assert_b false, "alpha =~ /^b/"
301
+ end
302
+ end
303
+
@@ -0,0 +1,99 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Mon Jun 15 16:43:06 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'test_helper.rb')
9
+
10
+ require 'ruote/fei'
11
+ require 'ruote/workitem'
12
+
13
+ require_json
14
+ require 'rufus/json'
15
+
16
+
17
+ class UtWorkitemTest < Test::Unit::TestCase
18
+
19
+ def test_equality
20
+
21
+ f0 = { 'expid' => '0', 'wfid' => '20101224-baba', 'engine_id' => 'engine' }
22
+ f1 = { 'expid' => '0', 'wfid' => '20101224-baba', 'engine_id' => 'engine' }
23
+ f2 = { 'expid' => '1', 'wfid' => '20101224-baba', 'engine_id' => 'engine' }
24
+
25
+ w0 = Ruote::Workitem.new('fei' => f0, 'fields' => { 'a' => 'A' })
26
+ w1 = Ruote::Workitem.new('fei' => f1, 'fields' => { 'b' => 'B' })
27
+ w2 = Ruote::Workitem.new('fei' => f2, 'fields' => { 'c' => 'C' })
28
+
29
+ assert w0 == w1
30
+ assert w0 != w2
31
+
32
+ assert_equal w0.hash, w1.hash
33
+ assert_not_equal w0.hash, w2.hash
34
+ end
35
+
36
+ def test_lookup
37
+
38
+ w0 = Ruote::Workitem.new(
39
+ 'fields' => {
40
+ 'customer' => {
41
+ 'name' => 'Jeff',
42
+ 'address' => [ 'Cornwall Square 10', 'Singapore-La' ] } })
43
+
44
+ assert_equal 'Jeff', w0.lookup('customer.name')
45
+ assert_equal 'Singapore-La', w0.lf('customer.address.1')
46
+
47
+ w0.set_field('customer.address', [ 'Cornwall Square 10b', 'Singapore-La' ])
48
+ assert_equal 'Cornwall Square 10b', w0.lookup('customer.address.0')
49
+ end
50
+
51
+ #def test_indifferent_access
52
+ # w0 = Ruote::Workitem.new(
53
+ # 'fields' => { 'customer' => 'john' })
54
+ # assert_equal 'john', w0.fields['customer']
55
+ # assert_equal 'john', w0.fields[:customer]
56
+ #end
57
+
58
+ def test_sid
59
+
60
+ f0 = { 'expid' => '0', 'wfid' => '20101224-baba', 'engine_id' => 'engine' }
61
+ w0 = Ruote::Workitem.new('fei' => f0, 'fields' => { 'a' => 'A' })
62
+
63
+ assert_equal '0!!20101224-baba', w0.sid
64
+ end
65
+
66
+ def test_wfid
67
+
68
+ f0 = { 'expid' => '0', 'wfid' => '20101224-baba', 'engine_id' => 'engine' }
69
+ w0 = Ruote::Workitem.new('fei' => f0, 'fields' => { 'a' => 'A' })
70
+
71
+ assert_equal '20101224-baba', w0.wfid
72
+ end
73
+
74
+ WI = {
75
+ 'fei' => {
76
+ 'expid' => '0',
77
+ 'wfid' => '20101224-baba',
78
+ 'engine_id' => 'engine',
79
+ 'subid' => '123423fde6' },
80
+ 'participant_name' => 'john',
81
+ 'fields' => {
82
+ 'customer' => 'swissre'
83
+ }
84
+ }
85
+ WI_JSON = ::Rufus::Json.encode(WI)
86
+ WI_PRETTY_JSON = ::Rufus::Json.pretty_encode(WI)
87
+
88
+ def test_from_json
89
+
90
+ assert_equal WI, Ruote::Workitem.from_json(WI_JSON).h
91
+ assert_equal WI, Ruote::Workitem.from_json(WI_PRETTY_JSON).h
92
+ end
93
+
94
+ def test_as_json
95
+
96
+ assert_equal WI, Rufus::Json.decode(Ruote::Workitem.new(WI).as_json)
97
+ end
98
+ end
99
+