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,28 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # since Mon Oct 9 22:19:44 JST 2006
6
+ #
7
+
8
+ def l (t)
9
+
10
+ if ARGV.include?('--split')
11
+
12
+ _v = ARGV.include?('-v') ? ' -v' : ' '
13
+
14
+ puts
15
+ puts "=== #{t} :"
16
+ puts `ruby#{_v} #{t} #{ARGV.join(' ')}`
17
+
18
+ exit $?.exitstatus if $?.exitstatus != 0
19
+ else
20
+ load(t)
21
+ end
22
+ end
23
+
24
+ load File.join(File.dirname(__FILE__), 'storage.rb')
25
+
26
+ Dir.glob(File.join(File.dirname(__FILE__), 'ut_*.rb')).sort.each { |t| l(t) }
27
+ Dir.glob(File.join(File.dirname(__FILE__), 'hut_*.rb')).sort.each { |t| l(t) }
28
+
@@ -0,0 +1,223 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Tue May 12 15:31:26 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'test_helper.rb')
9
+
10
+ require 'ruote/reader'
11
+
12
+
13
+ class UtRubyReaderTest < Test::Unit::TestCase
14
+
15
+ #def test_whatever
16
+ # tree = Ruote.define do
17
+ # set "f:x" => 12
18
+ # end
19
+ # p tree
20
+ #end
21
+
22
+ def test_sequence
23
+
24
+ tree = Ruote.define :name => 'nada' do
25
+ sequence do
26
+ participant :ref => :alpha
27
+ bravo
28
+ end
29
+ end
30
+
31
+ assert_equal(
32
+ ["define", {"name"=>"nada"}, [
33
+ ["sequence", {}, [
34
+ ["participant", {"ref"=>"alpha"}, []], ["bravo", {}, []]]]]],
35
+ tree)
36
+ end
37
+
38
+ def test_empty_sub
39
+
40
+ tree = Ruote.define :name => 'nada' do
41
+ sequence do
42
+ alpha
43
+ bravo
44
+ end
45
+ define 'toto' do
46
+ end
47
+ end
48
+
49
+ assert_equal(
50
+ ["define", {"name"=>"nada"}, [
51
+ ["sequence", {}, [["alpha", {}, []], ["bravo", {}, []]]],
52
+ ["define", {"toto"=>nil}, []]
53
+ ]],
54
+ tree)
55
+ end
56
+
57
+ def test_echo
58
+
59
+ tree = Ruote.define :name => 'nada' do
60
+ echo 'a'
61
+ end
62
+
63
+ assert_equal(
64
+ ["define", {"name"=>"nada"}, [
65
+ ["echo", {"a"=>nil}, []]
66
+ ]],
67
+ tree)
68
+ end
69
+
70
+ def test_echo_with_escape
71
+
72
+ tree = Ruote.define :name => 'nada' do
73
+ echo 'a', :escape => true
74
+ end
75
+
76
+ assert_equal(
77
+ ["define", {"name"=>"nada"}, [
78
+ ["echo", {"a"=>nil, "escape"=>true}, []]
79
+ ]],
80
+ tree)
81
+ end
82
+
83
+ def test_set
84
+
85
+ tree = Ruote.define :name => 'nada' do
86
+ set :var => 'v', :val => %w[ 1 2 3 4 ]
87
+ end
88
+
89
+ assert_equal(
90
+ ["define", {"name"=>"nada"}, [
91
+ ["set", {"val"=>["1", "2", "3", "4"], "var"=>"v"}, []]
92
+ ]],
93
+ tree)
94
+ end
95
+
96
+ #def test_set_nested
97
+ # tree = Ruote.define :name => 'nada' do
98
+ # set do
99
+ # %w[ 1 2 3 4 ]
100
+ # end
101
+ # end
102
+ # assert_equal(
103
+ # ["define", {"name"=>"nada"}, [
104
+ # ["sequence", {}, [["alpha", {}, []], ["bravo", {}, []]]]
105
+ # ]],
106
+ # tree)
107
+ #end
108
+
109
+ def test_escaping_ruby_keywords
110
+
111
+ tree = Ruote.define do
112
+ _redo 'nada'
113
+ end
114
+
115
+ assert_equal(
116
+ ["define", {}, [["redo", {"nada"=>nil}, []]]],
117
+ tree)
118
+ end
119
+
120
+ def test_to_tree
121
+
122
+ assert_equal(
123
+ [ 'sequence', {}, [ [ 'alpha', {}, [] ], [ 'bravo', {}, [] ] ] ],
124
+ Ruote.to_tree { sequence { alpha; bravo } })
125
+ end
126
+
127
+ def test_treechecker
128
+
129
+ #assert_raise Nada do
130
+ Ruote::Reader.read %{ Ruote.define { alpha } }
131
+ #end
132
+
133
+ assert_raise Ruote::Reader::Error do
134
+ Ruote::Reader.read %{ Ruote.define { abort } }
135
+ end
136
+ assert_raise Ruote::Reader::Error do
137
+ Ruote::Reader.read %{ Ruote.define { exit } }
138
+ end
139
+ assert_raise Ruote::Reader::Error do
140
+ Ruote::Reader.read %{ Ruote.define { exit! } }
141
+ end
142
+
143
+ assert_raise Ruote::Reader::Error do
144
+ Ruote::Reader.read %{ Ruote.define { x = Kernel } }
145
+ end
146
+
147
+ assert_raise Ruote::Reader::Error do
148
+ Ruote::Reader.read %{ Ruote.define { module Nada; end } }
149
+ end
150
+
151
+ assert_raise Ruote::Reader::Error do
152
+ Ruote::Reader.read %{ Ruote.define { File.read('stuff') } }
153
+ end
154
+
155
+ assert_raise Ruote::Reader::Error do
156
+ Ruote::Reader.read %{ Ruote.define { at_exit { } } }
157
+ end
158
+
159
+ assert_raise Ruote::Reader::Error do
160
+ Ruote::Reader.read %{ Ruote.define { def nada; end } }
161
+ end
162
+ end
163
+
164
+ def test_attribute_text_regexp
165
+
166
+ tree = Ruote.define do
167
+ given "${target}" do
168
+ of "/^employee-/" do
169
+ end
170
+ of /^customer-/ do
171
+ end
172
+ end
173
+ end
174
+
175
+ assert_equal(
176
+ ["define", {}, [
177
+ ["given", {"${target}"=>nil}, [
178
+ ["of", {"/^employee-/"=>nil}, []],
179
+ ["of", {"/^customer-/"=>nil}, []]]]]],
180
+ tree)
181
+ end
182
+
183
+ def test_attribute_value_regexp
184
+
185
+ tree = Ruote.define do
186
+ subprocess 'alpha', :match => /^nada$/
187
+ end
188
+
189
+ assert_equal(
190
+ ["define", {}, [["subprocess", {"alpha"=>nil, "match"=>"/^nada$/"}, []]]],
191
+ tree)
192
+ end
193
+
194
+ def test_attribute_value_regexp_deep
195
+
196
+ tree = Ruote.define do
197
+ alpha :filter => { :in => [ { :field => /^private_/ } ] }
198
+ end
199
+
200
+ assert_equal(
201
+ [ "define", {}, [
202
+ [ "alpha", { "filter" => { "in" => [ { "field" => '/^private_/' } ] } }, [] ]
203
+ ] ],
204
+ tree)
205
+ end
206
+
207
+ def test_proc
208
+
209
+ tree = Ruote.define do
210
+ set 'v:v' => "lambda { |wi| p wi }\n"
211
+ set 'v:v' => lambda { |wi| p wi }
212
+ set 'v:v' => { 'on_workitem' => lambda { |wi| p wi } }
213
+ end
214
+
215
+ assert_equal(
216
+ [ 'define', {}, [
217
+ [ 'set', { 'v:v' => "lambda { |wi| p wi }\n" }, [] ],
218
+ [ 'set', { 'v:v' => "proc { |wi| p wi }\n" }, [] ],
219
+ [ 'set', { 'v:v' => { 'on_workitem' => "proc { |wi| p wi }\n" } }, [] ] ] ],
220
+ tree)
221
+ end
222
+ end
223
+
@@ -0,0 +1,122 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Mon Aug 3 19:19:58 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'test_helper.rb')
9
+
10
+ require 'ruote/util/lookup'
11
+
12
+
13
+ class LookupTest < Test::Unit::TestCase
14
+
15
+ def test_lookup
16
+
17
+ assert_equal(%w[ A B C ], Ruote.lookup({ 'h' => %w[ A B C ] }, 'h'))
18
+ assert_equal('B', Ruote.lookup({ 'h' => %w[ A B C ] }, 'h.1'))
19
+ end
20
+
21
+ def test_lookup_dot
22
+
23
+ h = { 'a' => 'b' }
24
+
25
+ assert_equal h, Ruote.lookup(h, '.')
26
+ end
27
+
28
+ def test_container_lookup
29
+
30
+ assert_equal(
31
+ %w[ A B C ],
32
+ Ruote.lookup({ 'h' => { 'hh' => %w[ A B C ]} }, 'h.hh', false))
33
+ assert_equal(
34
+ [ 'hh', { 'hh' => %w[ A B C ] } ],
35
+ Ruote.lookup({ 'h' => { 'hh' => %w[ A B C ]} }, 'h.hh', true))
36
+ end
37
+
38
+ def test_deep_container_lookup
39
+
40
+ h = { 'foo' => { 'bar' => { 'baz' => { 'fruit' => 'pineapple' } } } }
41
+
42
+ assert_equal(
43
+ "pineapple",
44
+ Ruote.lookup(h, 'foo.bar.baz.fruit', false))
45
+ assert_equal(
46
+ [ 'fruit', { 'fruit' => 'pineapple' } ],
47
+ Ruote.lookup(h, 'foo.bar.baz.fruit', true))
48
+ end
49
+
50
+ def test_missing_container_lookup
51
+
52
+ assert_equal(
53
+ [ 'nada', nil ],
54
+ Ruote.lookup({ 'h' => { 'hh' => %w[ A B C ]} }, 'nada.nada', true))
55
+ end
56
+
57
+ def test_set
58
+
59
+ h = { 'customer' => { 'name' => 'alpha' } }
60
+ Ruote.set(h, 'customer.name', 'bravo')
61
+
62
+ assert_equal({"customer"=>{"name"=>"bravo"}}, h)
63
+ end
64
+
65
+ # courtesy of Nando Sola
66
+ #
67
+ def test_deep_set
68
+
69
+ h = { 'foo' => { 'bar' => { 'baz' => { 'fruit' => 'pineapple' } } } }
70
+
71
+ Ruote.set(h, 'foo.bar.baz.fruit', 'orange')
72
+
73
+ assert_equal(
74
+ { "foo" => { "bar" => { "baz" => { "fruit" => "orange" } } } },
75
+ h)
76
+ end
77
+
78
+ def test_set_missing
79
+
80
+ h = {}
81
+ Ruote.set(h, 'customer.name', 'bravo')
82
+
83
+ assert_equal({"customer.name"=>"bravo"}, h)
84
+ end
85
+
86
+ def test_hash_unset
87
+
88
+ h = { 'customer' => { 'name' => 'alpha', 'rank' => '1st' } }
89
+ r = Ruote.unset(h, 'customer.rank')
90
+
91
+ assert_equal('1st', r)
92
+ assert_equal({ 'customer' => { 'name' => 'alpha' } }, h)
93
+ end
94
+
95
+ def test_array_unset
96
+
97
+ h = { 'customers' => %w[ alpha bravo charly ] }
98
+ r = Ruote.unset(h, 'customers.1')
99
+
100
+ assert_equal('bravo', r)
101
+ assert_equal({ 'customers' => %w[ alpha charly ] }, h)
102
+ end
103
+
104
+ def test_array_unset_fail
105
+
106
+ h = { 'customers' => %w[ alpha bravo charly ] }
107
+ r = Ruote.unset(h, 'customers.x')
108
+
109
+ assert_equal(nil, r)
110
+ assert_equal({ 'customers' => %w[ alpha bravo charly ] }, h)
111
+ end
112
+
113
+ def test_unset_fail
114
+
115
+ h = { 'customer' => { 'name' => 'alpha', 'rank' => '1st' } }
116
+ r = Ruote.unset(h, 'customer.rank.0')
117
+
118
+ assert_equal(nil, r)
119
+ assert_equal({ 'customer' => { 'name' => 'alpha', 'rank' => '1st' } }, h)
120
+ end
121
+ end
122
+
@@ -0,0 +1,65 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Thu Aug 27 10:44:44 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'test_helper.rb')
9
+
10
+ require 'ruote/util/serializer'
11
+
12
+
13
+ class UtSerializerTest < Test::Unit::TestCase
14
+
15
+ class Vehicle
16
+ attr_accessor :type
17
+ def initialize(t)
18
+ @type = t
19
+ end
20
+ end
21
+
22
+ #def setup
23
+ #end
24
+ #def teardown
25
+ #end
26
+
27
+ def test_yaml
28
+
29
+ s = Ruote::Serializer.new(:yaml)
30
+
31
+ data = s.encode(Vehicle.new('bike'))
32
+
33
+ assert_match /^---/, data
34
+
35
+ v = s.decode(data)
36
+
37
+ assert_equal Vehicle, v.class
38
+ assert_equal 'bike', v.type
39
+ end
40
+
41
+ def test_marshal
42
+
43
+ s = Ruote::Serializer.new(:marshal)
44
+
45
+ data = s.encode(Vehicle.new('bike'))
46
+
47
+ v = s.decode(data)
48
+
49
+ assert_equal Vehicle, v.class
50
+ assert_equal 'bike', v.type
51
+ end
52
+
53
+ def test_marshal64
54
+
55
+ s = Ruote::Serializer.new(:marshal64)
56
+
57
+ data = s.encode(Vehicle.new('bike'))
58
+
59
+ v = s.decode(data)
60
+
61
+ assert_equal Vehicle, v.class
62
+ assert_equal 'bike', v.type
63
+ end
64
+ end
65
+
@@ -0,0 +1,28 @@
1
+
2
+ #
3
+ # testing ruote
4
+ #
5
+ # Tue Sep 1 13:39:43 JST 2009
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'test_helper.rb')
9
+
10
+ require 'ruote/util/misc'
11
+
12
+
13
+ class UtIsUriTest < Test::Unit::TestCase
14
+
15
+ def test_is
16
+
17
+ assert Ruote.is_uri?('definition.rb')
18
+ assert Ruote.is_uri?('/definition.xml')
19
+ assert Ruote.is_uri?('http://nada.example.com/')
20
+ end
21
+
22
+ def test_is_not
23
+
24
+ assert ! Ruote.is_uri?('toto')
25
+ assert ! Ruote.is_uri?('definition. nada')
26
+ end
27
+ end
28
+