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.
- data/CHANGELOG.txt +290 -0
- data/CREDITS.txt +99 -0
- data/LICENSE.txt +21 -0
- data/README.rdoc +88 -0
- data/Rakefile +108 -0
- data/TODO.txt +488 -0
- data/lib/ruote.rb +7 -0
- data/lib/ruote/context.rb +194 -0
- data/lib/ruote/engine.rb +1062 -0
- data/lib/ruote/engine/process_error.rb +122 -0
- data/lib/ruote/engine/process_status.rb +448 -0
- data/lib/ruote/exp/command.rb +87 -0
- data/lib/ruote/exp/commanded.rb +69 -0
- data/lib/ruote/exp/condition.rb +227 -0
- data/lib/ruote/exp/fe_add_branches.rb +138 -0
- data/lib/ruote/exp/fe_apply.rb +154 -0
- data/lib/ruote/exp/fe_cancel_process.rb +78 -0
- data/lib/ruote/exp/fe_command.rb +156 -0
- data/lib/ruote/exp/fe_concurrence.rb +321 -0
- data/lib/ruote/exp/fe_concurrent_iterator.rb +219 -0
- data/lib/ruote/exp/fe_cron.rb +141 -0
- data/lib/ruote/exp/fe_cursor.rb +324 -0
- data/lib/ruote/exp/fe_define.rb +112 -0
- data/lib/ruote/exp/fe_echo.rb +60 -0
- data/lib/ruote/exp/fe_equals.rb +115 -0
- data/lib/ruote/exp/fe_error.rb +82 -0
- data/lib/ruote/exp/fe_filter.rb +648 -0
- data/lib/ruote/exp/fe_forget.rb +88 -0
- data/lib/ruote/exp/fe_given.rb +154 -0
- data/lib/ruote/exp/fe_if.rb +127 -0
- data/lib/ruote/exp/fe_inc.rb +205 -0
- data/lib/ruote/exp/fe_iterator.rb +234 -0
- data/lib/ruote/exp/fe_let.rb +75 -0
- data/lib/ruote/exp/fe_listen.rb +304 -0
- data/lib/ruote/exp/fe_lose.rb +110 -0
- data/lib/ruote/exp/fe_noop.rb +45 -0
- data/lib/ruote/exp/fe_once.rb +215 -0
- data/lib/ruote/exp/fe_participant.rb +287 -0
- data/lib/ruote/exp/fe_read.rb +69 -0
- data/lib/ruote/exp/fe_redo.rb +82 -0
- data/lib/ruote/exp/fe_ref.rb +152 -0
- data/lib/ruote/exp/fe_registerp.rb +110 -0
- data/lib/ruote/exp/fe_reserve.rb +126 -0
- data/lib/ruote/exp/fe_restore.rb +102 -0
- data/lib/ruote/exp/fe_save.rb +72 -0
- data/lib/ruote/exp/fe_sequence.rb +59 -0
- data/lib/ruote/exp/fe_set.rb +154 -0
- data/lib/ruote/exp/fe_subprocess.rb +211 -0
- data/lib/ruote/exp/fe_that.rb +92 -0
- data/lib/ruote/exp/fe_undo.rb +67 -0
- data/lib/ruote/exp/fe_unregisterp.rb +69 -0
- data/lib/ruote/exp/fe_wait.rb +95 -0
- data/lib/ruote/exp/flowexpression.rb +886 -0
- data/lib/ruote/exp/iterator.rb +81 -0
- data/lib/ruote/exp/merge.rb +118 -0
- data/lib/ruote/exp/ro_attributes.rb +212 -0
- data/lib/ruote/exp/ro_filters.rb +136 -0
- data/lib/ruote/exp/ro_persist.rb +154 -0
- data/lib/ruote/exp/ro_variables.rb +189 -0
- data/lib/ruote/exp/ro_vf.rb +68 -0
- data/lib/ruote/fei.rb +260 -0
- data/lib/ruote/id/mnemo_wfid_generator.rb +43 -0
- data/lib/ruote/id/wfid_generator.rb +81 -0
- data/lib/ruote/log/default_history.rb +122 -0
- data/lib/ruote/log/pretty.rb +176 -0
- data/lib/ruote/log/storage_history.rb +159 -0
- data/lib/ruote/log/test_logger.rb +208 -0
- data/lib/ruote/log/wait_logger.rb +64 -0
- data/lib/ruote/part/block_participant.rb +137 -0
- data/lib/ruote/part/code_participant.rb +81 -0
- data/lib/ruote/part/engine_participant.rb +189 -0
- data/lib/ruote/part/local_participant.rb +138 -0
- data/lib/ruote/part/no_op_participant.rb +60 -0
- data/lib/ruote/part/null_participant.rb +54 -0
- data/lib/ruote/part/rev_participant.rb +169 -0
- data/lib/ruote/part/smtp_participant.rb +116 -0
- data/lib/ruote/part/storage_participant.rb +392 -0
- data/lib/ruote/part/template.rb +84 -0
- data/lib/ruote/participant.rb +7 -0
- data/lib/ruote/reader.rb +278 -0
- data/lib/ruote/reader/json.rb +49 -0
- data/lib/ruote/reader/radial.rb +290 -0
- data/lib/ruote/reader/ruby_dsl.rb +186 -0
- data/lib/ruote/reader/xml.rb +99 -0
- data/lib/ruote/receiver/base.rb +212 -0
- data/lib/ruote/storage/base.rb +364 -0
- data/lib/ruote/storage/composite_storage.rb +121 -0
- data/lib/ruote/storage/fs_storage.rb +139 -0
- data/lib/ruote/storage/hash_storage.rb +211 -0
- data/lib/ruote/svc/dispatch_pool.rb +158 -0
- data/lib/ruote/svc/dollar_sub.rb +298 -0
- data/lib/ruote/svc/error_handler.rb +138 -0
- data/lib/ruote/svc/expression_map.rb +97 -0
- data/lib/ruote/svc/participant_list.rb +397 -0
- data/lib/ruote/svc/tracker.rb +172 -0
- data/lib/ruote/svc/treechecker.rb +141 -0
- data/lib/ruote/tree_dot.rb +85 -0
- data/lib/ruote/util/filter.rb +525 -0
- data/lib/ruote/util/hashdot.rb +79 -0
- data/lib/ruote/util/look.rb +128 -0
- data/lib/ruote/util/lookup.rb +127 -0
- data/lib/ruote/util/misc.rb +167 -0
- data/lib/ruote/util/ometa.rb +71 -0
- data/lib/ruote/util/serializer.rb +103 -0
- data/lib/ruote/util/subprocess.rb +88 -0
- data/lib/ruote/util/time.rb +100 -0
- data/lib/ruote/util/tree.rb +58 -0
- data/lib/ruote/version.rb +29 -0
- data/lib/ruote/worker.rb +386 -0
- data/lib/ruote/workitem.rb +394 -0
- data/phil.txt +14 -0
- data/ruote.gemspec +44 -0
- data/test/bm/ci.rb +55 -0
- data/test/bm/ici.rb +71 -0
- data/test/bm/juuman.rb +54 -0
- data/test/bm/launch_bench.rb +37 -0
- data/test/bm/load_26c.rb +97 -0
- data/test/bm/mega.rb +64 -0
- data/test/bm/seq_thousand.rb +31 -0
- data/test/bm/t.rb +35 -0
- data/test/functional/base.rb +247 -0
- data/test/functional/concurrent_base.rb +98 -0
- data/test/functional/crunner.rb +31 -0
- data/test/functional/ct_0_concurrence.rb +65 -0
- data/test/functional/ct_1_iterator.rb +67 -0
- data/test/functional/ct_2_cancel.rb +81 -0
- data/test/functional/eft_0_process_definition.rb +65 -0
- data/test/functional/eft_10_cancel_process.rb +46 -0
- data/test/functional/eft_11_wait.rb +109 -0
- data/test/functional/eft_12_listen.rb +500 -0
- data/test/functional/eft_13_iterator.rb +342 -0
- data/test/functional/eft_14_cursor.rb +456 -0
- data/test/functional/eft_15_loop.rb +69 -0
- data/test/functional/eft_16_if.rb +183 -0
- data/test/functional/eft_17_equals.rb +55 -0
- data/test/functional/eft_18_concurrent_iterator.rb +410 -0
- data/test/functional/eft_19_reserve.rb +136 -0
- data/test/functional/eft_1_echo.rb +68 -0
- data/test/functional/eft_20_save.rb +116 -0
- data/test/functional/eft_21_restore.rb +61 -0
- data/test/functional/eft_22_noop.rb +28 -0
- data/test/functional/eft_23_apply.rb +168 -0
- data/test/functional/eft_24_add_branches.rb +98 -0
- data/test/functional/eft_25_command.rb +28 -0
- data/test/functional/eft_26_error.rb +77 -0
- data/test/functional/eft_27_inc.rb +280 -0
- data/test/functional/eft_28_once.rb +135 -0
- data/test/functional/eft_29_cron.rb +64 -0
- data/test/functional/eft_2_sequence.rb +58 -0
- data/test/functional/eft_30_ref.rb +155 -0
- data/test/functional/eft_31_registerp.rb +130 -0
- data/test/functional/eft_32_lose.rb +93 -0
- data/test/functional/eft_33_let.rb +31 -0
- data/test/functional/eft_34_given.rb +123 -0
- data/test/functional/eft_35_filter.rb +375 -0
- data/test/functional/eft_36_read.rb +95 -0
- data/test/functional/eft_3_participant.rb +149 -0
- data/test/functional/eft_4_set.rb +296 -0
- data/test/functional/eft_5_subprocess.rb +163 -0
- data/test/functional/eft_6_concurrence.rb +304 -0
- data/test/functional/eft_7_forget.rb +61 -0
- data/test/functional/eft_8_undo.rb +114 -0
- data/test/functional/eft_9_redo.rb +138 -0
- data/test/functional/ft_0_worker.rb +65 -0
- data/test/functional/ft_10_dollar.rb +304 -0
- data/test/functional/ft_11_recursion.rb +109 -0
- data/test/functional/ft_12_launchitem.rb +43 -0
- data/test/functional/ft_13_variables.rb +151 -0
- data/test/functional/ft_14_re_apply.rb +324 -0
- data/test/functional/ft_15_timeout.rb +226 -0
- data/test/functional/ft_16_participant_params.rb +98 -0
- data/test/functional/ft_17_conditional.rb +102 -0
- data/test/functional/ft_18_kill.rb +138 -0
- data/test/functional/ft_19_participant_code.rb +67 -0
- data/test/functional/ft_1_process_status.rb +796 -0
- data/test/functional/ft_20_storage_participant.rb +543 -0
- data/test/functional/ft_21_forget.rb +153 -0
- data/test/functional/ft_22_process_definitions.rb +90 -0
- data/test/functional/ft_23_load_defs.rb +79 -0
- data/test/functional/ft_24_block_participant.rb +235 -0
- data/test/functional/ft_25_receiver.rb +207 -0
- data/test/functional/ft_26_participant_rtimeout.rb +179 -0
- data/test/functional/ft_27_var_indirection.rb +128 -0
- data/test/functional/ft_28_null_noop_participants.rb +51 -0
- data/test/functional/ft_29_part_template.rb +60 -0
- data/test/functional/ft_2_errors.rb +380 -0
- data/test/functional/ft_30_smtp_participant.rb +122 -0
- data/test/functional/ft_31_part_blocking.rb +72 -0
- data/test/functional/ft_33_participant_subprocess_priority.rb +32 -0
- data/test/functional/ft_34_cursor_rewind.rb +101 -0
- data/test/functional/ft_35_add_service.rb +56 -0
- data/test/functional/ft_36_storage_history.rb +150 -0
- data/test/functional/ft_37_default_history.rb +109 -0
- data/test/functional/ft_38_participant_more.rb +193 -0
- data/test/functional/ft_39_wait_for.rb +136 -0
- data/test/functional/ft_3_participant_registration.rb +574 -0
- data/test/functional/ft_40_wait_logger.rb +62 -0
- data/test/functional/ft_41_participants.rb +91 -0
- data/test/functional/ft_42_storage_copy.rb +71 -0
- data/test/functional/ft_43_participant_on_reply.rb +87 -0
- data/test/functional/ft_44_var_participant.rb +35 -0
- data/test/functional/ft_45_participant_accept.rb +64 -0
- data/test/functional/ft_46_launch_single.rb +83 -0
- data/test/functional/ft_47_wfid_generator.rb +54 -0
- data/test/functional/ft_48_lose.rb +112 -0
- data/test/functional/ft_49_engine_on_error.rb +201 -0
- data/test/functional/ft_4_cancel.rb +132 -0
- data/test/functional/ft_50_engine_config.rb +22 -0
- data/test/functional/ft_51_misc.rb +67 -0
- data/test/functional/ft_52_case.rb +134 -0
- data/test/functional/ft_53_engine_on_terminate.rb +95 -0
- data/test/functional/ft_54_patterns.rb +104 -0
- data/test/functional/ft_55_engine_participant.rb +303 -0
- data/test/functional/ft_56_filter_attribute.rb +259 -0
- data/test/functional/ft_57_rev_participant.rb +252 -0
- data/test/functional/ft_58_workitem.rb +69 -0
- data/test/functional/ft_59_pause.rb +343 -0
- data/test/functional/ft_5_on_error.rb +384 -0
- data/test/functional/ft_60_code_participant.rb +45 -0
- data/test/functional/ft_61_trailing_fields.rb +34 -0
- data/test/functional/ft_62_exp_name_and_dollar_substitution.rb +35 -0
- data/test/functional/ft_6_on_cancel.rb +221 -0
- data/test/functional/ft_7_tags.rb +177 -0
- data/test/functional/ft_8_participant_consumption.rb +124 -0
- data/test/functional/ft_9_subprocesses.rb +146 -0
- data/test/functional/restart_base.rb +34 -0
- data/test/functional/rt_0_wait.rb +55 -0
- data/test/functional/rt_1_listen.rb +56 -0
- data/test/functional/rt_2_errors.rb +56 -0
- data/test/functional/rt_3_once.rb +70 -0
- data/test/functional/rt_4_cron.rb +64 -0
- data/test/functional/rt_5_timeout.rb +60 -0
- data/test/functional/rtest.rb +8 -0
- data/test/functional/storage_helper.rb +93 -0
- data/test/functional/test.rb +44 -0
- data/test/functional/vertical.rb +46 -0
- data/test/path_helper.rb +15 -0
- data/test/test.rb +13 -0
- data/test/test_helper.rb +28 -0
- data/test/unit/storage.rb +428 -0
- data/test/unit/storages.rb +37 -0
- data/test/unit/test.rb +28 -0
- data/test/unit/ut_0_ruby_reader.rb +223 -0
- data/test/unit/ut_11_lookup.rb +122 -0
- data/test/unit/ut_13_serializer.rb +65 -0
- data/test/unit/ut_14_is_uri.rb +28 -0
- data/test/unit/ut_15_util.rb +57 -0
- data/test/unit/ut_16_reader.rb +225 -0
- data/test/unit/ut_18_engine.rb +47 -0
- data/test/unit/ut_19_part_template.rb +86 -0
- data/test/unit/ut_1_fei.rb +165 -0
- data/test/unit/ut_20_composite_storage.rb +74 -0
- data/test/unit/ut_21_svc_participant_list.rb +46 -0
- data/test/unit/ut_22_filter.rb +1094 -0
- data/test/unit/ut_23_svc_tracker.rb +48 -0
- data/test/unit/ut_24_radial_reader.rb +332 -0
- data/test/unit/ut_25_merge.rb +113 -0
- data/test/unit/ut_3_wait_logger.rb +39 -0
- data/test/unit/ut_4_expmap.rb +20 -0
- data/test/unit/ut_5_tree.rb +54 -0
- data/test/unit/ut_6_condition.rb +303 -0
- data/test/unit/ut_7_workitem.rb +99 -0
- data/test/unit/ut_8_tree_to_dot.rb +72 -0
- data/test/unit/ut_9_xml_reader.rb +61 -0
- 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
|
+
|