pione 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +12 -1
- data/example/AbstractRule/AbstractRule.pione +40 -0
- data/example/Fib/Fib.pione +12 -5
- data/example/LucasNumber/LucasNumber.pione +1 -1
- data/example/MakePair/MakePair.pione +21 -6
- data/example/OddSelector/OddSelector.pione +17 -0
- data/example/OddSelector/data/1.i +0 -0
- data/example/OddSelector/data/10.i +0 -0
- data/example/OddSelector/data/2.i +0 -0
- data/example/OddSelector/data/3.i +0 -0
- data/example/OddSelector/data/4.i +0 -0
- data/example/OddSelector/data/5.i +0 -0
- data/example/OddSelector/data/6.i +0 -0
- data/example/OddSelector/data/7.i +0 -0
- data/example/OddSelector/data/8.i +0 -0
- data/example/OddSelector/data/9.i +0 -0
- data/example/SequentialParameter/SequentialParameter.pione +4 -0
- data/example/SieveOfEratosthenes/SieveOfEratosthenes.pione +31 -43
- data/example/SingleParticlesWithRef/SingleParticlesWithRef.pione +1 -1
- data/example/Touch/Touch.pione +3 -0
- data/lib/pione/command/pione-syntax-checker.rb +4 -4
- data/lib/pione/model/assignment.rb +6 -1
- data/lib/pione/model/basic-model.rb +92 -278
- data/lib/pione/model/binary-operator.rb +5 -1
- data/lib/pione/model/block.rb +17 -0
- data/lib/pione/model/boolean.rb +54 -22
- data/lib/pione/model/constraints.rb +34 -0
- data/lib/pione/model/data-expr.rb +184 -297
- data/lib/pione/model/feature-expr.rb +13 -4
- data/lib/pione/model/float.rb +24 -41
- data/lib/pione/model/integer.rb +75 -41
- data/lib/pione/model/keyed-sequence.rb +143 -0
- data/lib/pione/model/list.rb +12 -8
- data/lib/pione/model/message.rb +8 -4
- data/lib/pione/model/ordinal-sequence.rb +75 -0
- data/lib/pione/model/package.rb +6 -2
- data/lib/pione/model/parameters.rb +61 -9
- data/lib/pione/model/pione-method.rb +146 -0
- data/lib/pione/model/rule-expr.rb +44 -38
- data/lib/pione/model/rule-io.rb +11 -3
- data/lib/pione/model/rule.rb +105 -155
- data/lib/pione/model/sequence.rb +273 -0
- data/lib/pione/model/string.rb +75 -29
- data/lib/pione/model/ticket-expr.rb +17 -29
- data/lib/pione/model/type.rb +242 -0
- data/lib/pione/model/variable-table.rb +52 -53
- data/lib/pione/model/variable.rb +8 -4
- data/lib/pione/model.rb +34 -0
- data/lib/pione/parser/block-parser.rb +44 -20
- data/lib/pione/parser/common-parser.rb +2 -1
- data/lib/pione/parser/document-parser.rb +6 -1
- data/lib/pione/parser/expr-parser.rb +57 -11
- data/lib/pione/parser/flow-element-parser.rb +2 -2
- data/lib/pione/parser/rule-definition-parser.rb +23 -1
- data/lib/pione/patch/rinda-patch.rb +1 -5
- data/lib/pione/rule-handler/action-handler.rb +5 -5
- data/lib/pione/rule-handler/basic-handler.rb +30 -7
- data/lib/pione/rule-handler/empty-handler.rb +14 -0
- data/lib/pione/rule-handler/flow-handler.rb +132 -115
- data/lib/pione/rule-handler/root-handler.rb +6 -2
- data/lib/pione/rule-handler/update-criteria.rb +152 -0
- data/lib/pione/rule-handler.rb +14 -0
- data/lib/pione/system/identifier.rb +9 -9
- data/lib/pione/transformer/block-transformer.rb +4 -0
- data/lib/pione/transformer/expr-transformer.rb +1 -1
- data/lib/pione/transformer/flow-element-transformer.rb +4 -2
- data/lib/pione/transformer/literal-transformer.rb +14 -3
- data/lib/pione/transformer/rule-definition-transformer.rb +17 -5
- data/lib/pione/tuple-space/data-finder.rb +15 -52
- data/lib/pione/version.rb +1 -1
- data/lib/pione.rb +12 -38
- data/test/agent/spec_task-worker.rb +13 -12
- data/test/model/spec_assignment.rb +2 -2
- data/test/model/spec_binary-operator.rb +10 -10
- data/test/model/spec_block.rb +8 -8
- data/test/model/spec_boolean.rb +1 -72
- data/test/model/spec_boolean.yml +134 -0
- data/test/model/spec_data-expr.rb +50 -237
- data/test/model/spec_data-expr.yml +16 -45
- data/test/model/spec_data-expr_match.yml +45 -0
- data/test/model/spec_feature-expr.rb +2 -43
- data/test/model/spec_feature-expr.yml +0 -28
- data/test/model/spec_feature-expr_decide.yml +28 -0
- data/test/model/spec_float.rb +1 -119
- data/test/model/spec_float.yml +17 -0
- data/test/model/spec_integer.rb +1 -119
- data/test/model/spec_integer.yml +57 -0
- data/test/model/spec_keyed-sequence.rb +5 -0
- data/test/model/spec_keyed-sequence.yml +22 -0
- data/test/model/spec_message.rb +7 -7
- data/test/model/spec_parameters.rb +50 -63
- data/test/model/spec_pione-method.rb +56 -0
- data/test/model/spec_rule-expr.rb +18 -8
- data/test/model/spec_rule.rb +12 -12
- data/test/model/spec_sequence.rb +5 -0
- data/test/model/spec_sequence.yml +60 -0
- data/test/model/spec_string.rb +3 -70
- data/test/model/spec_string.yml +83 -0
- data/test/model/spec_ticket-expr.rb +4 -54
- data/test/model/spec_ticket-expr.yml +11 -0
- data/test/model/spec_variable-table.rb +41 -42
- data/test/model/spec_variable.rb +20 -22
- data/test/parser/spec_block-parser.yml +9 -0
- data/test/parser/spec_expr-parser.yml +0 -17
- data/test/parser/spec_flow-element-parser.yml +1 -1
- data/test/parser/spec_rule-definition-parser.yml +0 -4
- data/test/rule-handler/spec_update-criteria.pione +39 -0
- data/test/rule-handler/spec_update-criteria.rb +53 -0
- data/test/rule-handler/spec_update-criteria.yml +158 -0
- data/test/test-util.rb +25 -0
- data/test/transformer/spec_block-transformer.rb +7 -0
- data/test/transformer/spec_expr-transformer.rb +64 -19
- data/test/transformer/spec_flow-element-transformer.rb +11 -11
- data/test/transformer/spec_literal-transformer.rb +29 -29
- data/test/transformer/spec_rule-definition-transformer.rb +39 -21
- metadata +57 -11
- data/lib/pione/model/undefined-value.rb +0 -24
- data/lib/pione/tuple-space/update-criteria.rb +0 -97
- data/test/model/spec_list.rb +0 -26
- data/test/model/spec_rule-io.rb +0 -32
- data/test/spec_update-criteria.rb +0 -83
@@ -0,0 +1,39 @@
|
|
1
|
+
Rule NoOutputConditions
|
2
|
+
input '*'
|
3
|
+
End
|
4
|
+
|
5
|
+
Rule A2B
|
6
|
+
input '*.a'
|
7
|
+
output '*.b'
|
8
|
+
Action
|
9
|
+
cat {$I[1]} > {$O[1]}
|
10
|
+
End
|
11
|
+
|
12
|
+
Rule A2Null
|
13
|
+
input '*.a'
|
14
|
+
output null
|
15
|
+
End
|
16
|
+
|
17
|
+
Rule RemoveA
|
18
|
+
input '*.a'
|
19
|
+
output '*.a'.remove
|
20
|
+
End
|
21
|
+
|
22
|
+
Rule RemoveAB
|
23
|
+
input '*.a'
|
24
|
+
input '*.b'
|
25
|
+
output '*.a'.remove
|
26
|
+
output '*.b'.remove
|
27
|
+
End
|
28
|
+
|
29
|
+
Rule Touch
|
30
|
+
input '*.a'
|
31
|
+
output '*.b'.touch
|
32
|
+
End
|
33
|
+
|
34
|
+
Rule NeglectOutput
|
35
|
+
input '*.a'
|
36
|
+
output '*.b'.neglect
|
37
|
+
Action
|
38
|
+
echo {$I[1]} > {$O[1]}
|
39
|
+
End
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require_relative '../test-util'
|
2
|
+
|
3
|
+
path = Pathname.new(File.join(File.dirname(__FILE__), "spec_update-criteria.pione"))
|
4
|
+
document = Document.parse(path.read)
|
5
|
+
|
6
|
+
time = 10.times.map {sleep 0.001; Time.now}
|
7
|
+
tuple = {}
|
8
|
+
['a', 'b', 'c'].map do |ext|
|
9
|
+
10.times do |i|
|
10
|
+
name = 't%d.%s' % [i, ext]
|
11
|
+
tuple[name] = Tuple[:data].new('test', name, nil, time[i])
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
UC = Pione::RuleHandler::UpdateCriteria
|
16
|
+
|
17
|
+
#
|
18
|
+
# test cases
|
19
|
+
#
|
20
|
+
yamlname = 'spec_update-criteria.yml'
|
21
|
+
ymlpath = File.join(File.dirname(__FILE__), yamlname)
|
22
|
+
testcases = YAML.load_file(ymlpath)
|
23
|
+
|
24
|
+
describe 'RuleHandler::UpdateCriteria' do
|
25
|
+
testcases.each do |rule_name, cases|
|
26
|
+
rule = document["&main:%s" % rule_name]
|
27
|
+
describe rule_name do
|
28
|
+
cases.each do |case_name, testcase|
|
29
|
+
describe case_name do
|
30
|
+
inputs = testcase["inputs"].map do |input|
|
31
|
+
input.kind_of?(Array) ? input.map {|i| tuple[i]} : tuple[input]
|
32
|
+
end
|
33
|
+
outputs = (testcase["outputs"] || []).map do |output|
|
34
|
+
output.kind_of?(Array) ? output.map {|i| tuple[i]} : tuple[output]
|
35
|
+
end
|
36
|
+
vtable = VariableTable.new
|
37
|
+
|
38
|
+
testcase["criteria"].each do |criterion, truth|
|
39
|
+
it "should be %s on criterion of %s" % [truth, criterion] do
|
40
|
+
UC.send("%s?" % criterion, rule, inputs, outputs, vtable).should == truth
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should get update order" do
|
45
|
+
order = testcase["order"]
|
46
|
+
order = order.to_sym if order
|
47
|
+
UC.order(rule, inputs, outputs, vtable).should == order
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
NoOutputConditions:
|
2
|
+
case1:
|
3
|
+
inputs:
|
4
|
+
- "t1.a"
|
5
|
+
criteria:
|
6
|
+
no_output_conditions: true
|
7
|
+
not_exist_output_data: false
|
8
|
+
exist_output_data: false
|
9
|
+
exist_newer_input_data: false
|
10
|
+
order: "force"
|
11
|
+
A2B:
|
12
|
+
case1:
|
13
|
+
inputs:
|
14
|
+
- "t1.a"
|
15
|
+
outputs:
|
16
|
+
- "t1.b"
|
17
|
+
criteria:
|
18
|
+
no_output_conditions: false
|
19
|
+
not_exist_output_data: false
|
20
|
+
exist_output_data: false
|
21
|
+
exist_newer_input_data: false
|
22
|
+
case2:
|
23
|
+
inputs:
|
24
|
+
- "t1.a"
|
25
|
+
outputs:
|
26
|
+
- "t2.b"
|
27
|
+
criteria:
|
28
|
+
no_output_conditions: false
|
29
|
+
not_exist_output_data: false
|
30
|
+
exist_output_data: false
|
31
|
+
exist_newer_input_data: false
|
32
|
+
case3:
|
33
|
+
inputs:
|
34
|
+
- "t2.a"
|
35
|
+
outputs:
|
36
|
+
- "t1.b"
|
37
|
+
criteria:
|
38
|
+
no_output_conditions: false
|
39
|
+
not_exist_output_data: false
|
40
|
+
exist_output_data: false
|
41
|
+
exist_newer_input_data: true
|
42
|
+
order: "force"
|
43
|
+
A2Null:
|
44
|
+
case1:
|
45
|
+
inputs:
|
46
|
+
- "t1.a"
|
47
|
+
criteria:
|
48
|
+
no_output_conditions: false
|
49
|
+
not_exist_output_data: false
|
50
|
+
exist_output_data: false
|
51
|
+
exist_newer_input_data: false
|
52
|
+
RemoveA:
|
53
|
+
case1:
|
54
|
+
inputs:
|
55
|
+
- "t1.a"
|
56
|
+
outputs:
|
57
|
+
- "t1.a"
|
58
|
+
criteria:
|
59
|
+
no_output_conditions: false
|
60
|
+
not_exist_output_data: false
|
61
|
+
exist_output_data: true
|
62
|
+
exist_newer_input_data: false
|
63
|
+
order: "weak"
|
64
|
+
RemoveAB:
|
65
|
+
case1:
|
66
|
+
inputs:
|
67
|
+
- "t1.a"
|
68
|
+
- "t2.b"
|
69
|
+
outputs:
|
70
|
+
- "t1.a"
|
71
|
+
- "t2.b"
|
72
|
+
criteria:
|
73
|
+
no_output_conditions: false
|
74
|
+
not_exist_output_data: false
|
75
|
+
exist_output_data: true
|
76
|
+
exist_newer_input_data: true
|
77
|
+
order: "force"
|
78
|
+
Touch:
|
79
|
+
case1:
|
80
|
+
inputs:
|
81
|
+
- "t1.a"
|
82
|
+
criteria:
|
83
|
+
no_output_conditions: false
|
84
|
+
not_exist_output_data: true
|
85
|
+
exist_output_data: false
|
86
|
+
exist_newer_input_data: false
|
87
|
+
order: "weak"
|
88
|
+
case2:
|
89
|
+
inputs:
|
90
|
+
- "t1.a"
|
91
|
+
outputs:
|
92
|
+
- "t1.b"
|
93
|
+
criteria:
|
94
|
+
no_output_conditions: false
|
95
|
+
not_exist_output_data: false
|
96
|
+
exist_output_data: false
|
97
|
+
exist_newer_input_data: false
|
98
|
+
case3:
|
99
|
+
inputs:
|
100
|
+
- "t1.a"
|
101
|
+
outputs:
|
102
|
+
- "t2.b"
|
103
|
+
criteria:
|
104
|
+
no_output_conditions: false
|
105
|
+
not_exist_output_data: false
|
106
|
+
exist_output_data: false
|
107
|
+
exist_newer_input_data: false
|
108
|
+
case4:
|
109
|
+
inputs:
|
110
|
+
- "t2.a"
|
111
|
+
outputs:
|
112
|
+
- "t1.b"
|
113
|
+
criteria:
|
114
|
+
no_output_conditions: false
|
115
|
+
not_exist_output_data: false
|
116
|
+
exist_output_data: false
|
117
|
+
exist_newer_input_data: true
|
118
|
+
order: "force"
|
119
|
+
NeglectOutput:
|
120
|
+
case1:
|
121
|
+
inputs:
|
122
|
+
- "t1.a"
|
123
|
+
criteria:
|
124
|
+
no_output_conditions: false
|
125
|
+
not_exist_output_data: true
|
126
|
+
exist_output_data: false
|
127
|
+
exist_newer_input_data: false
|
128
|
+
order: "weak"
|
129
|
+
case2:
|
130
|
+
inputs:
|
131
|
+
- "t1.a"
|
132
|
+
outputs:
|
133
|
+
- "t1.b"
|
134
|
+
criteria:
|
135
|
+
no_output_conditions: false
|
136
|
+
not_exist_output_data: false
|
137
|
+
exist_output_data: false
|
138
|
+
exist_newer_input_data: false
|
139
|
+
case3:
|
140
|
+
inputs:
|
141
|
+
- "t1.a"
|
142
|
+
outputs:
|
143
|
+
- "t2.b"
|
144
|
+
criteria:
|
145
|
+
no_output_conditions: false
|
146
|
+
not_exist_output_data: false
|
147
|
+
exist_output_data: false
|
148
|
+
exist_newer_input_data: false
|
149
|
+
case4:
|
150
|
+
inputs:
|
151
|
+
- "t2.a"
|
152
|
+
outputs:
|
153
|
+
- "t1.b"
|
154
|
+
criteria:
|
155
|
+
no_output_conditions: false
|
156
|
+
not_exist_output_data: false
|
157
|
+
exist_output_data: false
|
158
|
+
exist_newer_input_data: false
|
data/test/test-util.rb
CHANGED
@@ -169,6 +169,31 @@ class Bacon::Context
|
|
169
169
|
end
|
170
170
|
end
|
171
171
|
|
172
|
+
module TestUtil
|
173
|
+
def test_pione_method(name)
|
174
|
+
#
|
175
|
+
# test cases
|
176
|
+
#
|
177
|
+
yamlname = 'spec_%s.yml' % name
|
178
|
+
ymlpath = File.join(File.dirname(__FILE__), 'model', yamlname)
|
179
|
+
testcases = YAML.load_file(ymlpath)
|
180
|
+
|
181
|
+
describe "pione method test cases" do
|
182
|
+
testcases.each do |testcase|
|
183
|
+
expect = testcase.keys.first
|
184
|
+
expr = testcase[expect].to_s
|
185
|
+
expect = expect.to_s
|
186
|
+
vtable = VariableTable.new
|
187
|
+
it '%s should be %s' % [expr, expect] do
|
188
|
+
expect = DocumentTransformer.new.apply(DocumentParser.new.expr.parse(expect))
|
189
|
+
expr = DocumentTransformer.new.apply(DocumentParser.new.expr.parse(expr))
|
190
|
+
expect.eval(vtable).should == expr.eval(vtable)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
172
197
|
module Pione::TupleSpace
|
173
198
|
class TupleSpaceServer
|
174
199
|
# Return all tuples of the tuple space.
|
@@ -21,6 +21,13 @@ describe 'Pione::Transformer::BlockTransformer' do
|
|
21
21
|
CallRule.new(RuleExpr.new(Package.new("main"), "Test"))
|
22
22
|
)
|
23
23
|
end
|
24
|
+
end
|
24
25
|
|
26
|
+
transformer_spec("empty_block", :empty_block) do
|
27
|
+
tc(<<-STRING) do
|
28
|
+
End
|
29
|
+
STRING
|
30
|
+
EmptyBlock.instance
|
31
|
+
end
|
25
32
|
end
|
26
33
|
end
|
@@ -3,70 +3,106 @@ require_relative '../test-util'
|
|
3
3
|
describe 'Pione::Transformer::ExprTransformer' do
|
4
4
|
transformer_spec("binary operator", :expr) do
|
5
5
|
tc "1 + 2" do
|
6
|
-
BinaryOperator.new(
|
6
|
+
BinaryOperator.new(
|
7
|
+
"+",
|
8
|
+
IntegerSequence.new([1.to_pione]),
|
9
|
+
IntegerSequence.new([2.to_pione])
|
10
|
+
)
|
7
11
|
end
|
8
12
|
|
9
13
|
tc '"a" + "b"' do
|
10
|
-
BinaryOperator.new(
|
14
|
+
BinaryOperator.new(
|
15
|
+
"+",
|
16
|
+
StringSequence.new(["a".to_pione]),
|
17
|
+
StringSequence.new(["b".to_pione])
|
18
|
+
)
|
11
19
|
end
|
12
20
|
|
13
21
|
tc "false || true" do
|
14
|
-
BinaryOperator.new(
|
22
|
+
BinaryOperator.new(
|
23
|
+
"||",
|
24
|
+
BooleanSequence.new([PioneBoolean.false]),
|
25
|
+
BooleanSequence.new([PioneBoolean.true])
|
26
|
+
)
|
15
27
|
end
|
16
28
|
|
17
29
|
tc "$Var * 3" do
|
18
|
-
BinaryOperator.new(
|
30
|
+
BinaryOperator.new(
|
31
|
+
"*",
|
32
|
+
Variable.new("Var"),
|
33
|
+
IntegerSequence.new([3.to_pione])
|
34
|
+
)
|
19
35
|
end
|
20
36
|
|
21
37
|
tc "($Var1 == \"a\") && ($Var2 == \"b\")" do
|
22
|
-
left = BinaryOperator.new(
|
23
|
-
|
38
|
+
left = BinaryOperator.new(
|
39
|
+
"==",
|
40
|
+
Variable.new("Var1"),
|
41
|
+
StringSequence.new(["a".to_pione])
|
42
|
+
)
|
43
|
+
right = BinaryOperator.new(
|
44
|
+
"==",
|
45
|
+
Variable.new("Var2"),
|
46
|
+
StringSequence.new([PioneString.new("b")])
|
47
|
+
)
|
24
48
|
BinaryOperator.new("&&", left, right)
|
25
49
|
end
|
26
50
|
end
|
27
51
|
|
28
52
|
transformer_spec("data_expr", :expr) do
|
29
53
|
tc "'test.a'" do
|
30
|
-
DataExpr.new("test.a")
|
54
|
+
DataExpr.new("test.a").to_seq
|
31
55
|
end
|
32
56
|
|
33
57
|
tc "null" do
|
34
|
-
DataExprNull.instance
|
58
|
+
DataExprNull.instance.to_seq
|
35
59
|
end
|
36
60
|
end
|
37
61
|
|
38
62
|
transformer_spec("message", :expr) do
|
39
63
|
tc "1.next" do
|
40
|
-
Message.new("next", 1.to_pione)
|
64
|
+
Message.new("next", IntegerSequence.new([1.to_pione]))
|
41
65
|
end
|
42
66
|
|
43
67
|
tc "1.next.next" do
|
44
|
-
Message.new("next", Message.new("next", 1.to_pione))
|
68
|
+
Message.new("next", Message.new("next", IntegerSequence.new([1.to_pione])))
|
45
69
|
end
|
46
70
|
|
47
71
|
tc "\"abc\".index(1,1)" do
|
48
|
-
Message.new(
|
72
|
+
Message.new(
|
73
|
+
"index",
|
74
|
+
StringSequence.new(["abc".to_pione]),
|
75
|
+
IntegerSequence.new([1.to_pione]),
|
76
|
+
IntegerSequence.new([1.to_pione])
|
77
|
+
)
|
49
78
|
end
|
50
79
|
|
51
80
|
tc "(1 + 2).prev" do
|
52
|
-
Message.new(
|
81
|
+
Message.new(
|
82
|
+
"prev",
|
83
|
+
BinaryOperator.new(
|
84
|
+
"+",
|
85
|
+
IntegerSequence.new([1.to_pione]),
|
86
|
+
IntegerSequence.new([2.to_pione])
|
87
|
+
)
|
88
|
+
)
|
53
89
|
end
|
54
90
|
|
55
91
|
tc "abc.sync" do
|
56
|
-
rule = RuleExpr.new(Package.new("main"), "abc"
|
92
|
+
rule = RuleExpr.new(Package.new("main"), "abc")
|
57
93
|
Message.new("sync", rule)
|
58
94
|
end
|
59
95
|
|
60
96
|
tc "'*.txt'.all" do
|
61
|
-
Message.new("all", DataExpr.new("*.txt"))
|
97
|
+
Message.new("all", DataExpr.new("*.txt").to_seq)
|
62
98
|
end
|
63
99
|
|
64
100
|
tc "'*.txt'.all()" do
|
65
|
-
Message.new("all", DataExpr.new("*.txt"))
|
101
|
+
Message.new("all", DataExpr.new("*.txt").to_seq)
|
66
102
|
end
|
67
103
|
|
68
104
|
tc "'*.txt'.all(true)" do
|
69
|
-
Message.new("all", DataExpr.new("*.txt"), PioneBoolean.true)
|
105
|
+
Message.new("all", DataExpr.new("*.txt").to_seq, BooleanSequence.new([PioneBoolean.true]))
|
70
106
|
end
|
71
107
|
end
|
72
108
|
|
@@ -76,15 +112,24 @@ describe 'Pione::Transformer::ExprTransformer' do
|
|
76
112
|
end
|
77
113
|
|
78
114
|
tc "{var1: 1}" do
|
79
|
-
|
115
|
+
Parameters.new(
|
116
|
+
{Variable.new("var1") => IntegerSequence.new([PioneInteger.new(1)])}
|
117
|
+
)
|
80
118
|
end
|
81
119
|
|
82
120
|
tc "{var1: 1, var2: 2}" do
|
83
|
-
|
121
|
+
Parameters.new(
|
122
|
+
{ Variable.new("var1") => IntegerSequence.new([PioneInteger.new(1)]),
|
123
|
+
Variable.new("var2") => IntegerSequence.new([PioneInteger.new(2)]) }
|
124
|
+
)
|
84
125
|
end
|
85
126
|
|
86
127
|
tc "{var1: \"a\", var2: \"b\", var3: \"c\"}" do
|
87
|
-
|
128
|
+
Parameters.new(
|
129
|
+
{ Variable.new("var1") => StringSequence.new([PioneString.new("a")]),
|
130
|
+
Variable.new("var2") => StringSequence.new([PioneString.new("b")]),
|
131
|
+
Variable.new("var3") => StringSequence.new([PioneString.new("c")]) }
|
132
|
+
)
|
88
133
|
end
|
89
134
|
end
|
90
135
|
end
|
@@ -20,7 +20,7 @@ describe 'Pione::Transformer::FlowElementTransformer' do
|
|
20
20
|
transformer_spec("assignment", :assignment) do
|
21
21
|
tc(
|
22
22
|
"$var := 1" =>
|
23
|
-
Assignment.new(Variable.new("var"), PioneInteger.new(1))
|
23
|
+
Assignment.new(Variable.new("var"), IntegerSequence.new([PioneInteger.new(1)]))
|
24
24
|
)
|
25
25
|
tc(
|
26
26
|
"$a := $b" =>
|
@@ -45,9 +45,9 @@ describe 'Pione::Transformer::FlowElementTransformer' do
|
|
45
45
|
BinaryOperator.new(
|
46
46
|
"==",
|
47
47
|
Variable.new("Var"),
|
48
|
-
PioneInteger.new(1)
|
48
|
+
IntegerSequence.new([PioneInteger.new(1)])
|
49
49
|
),
|
50
|
-
{ PioneBoolean.true =>
|
50
|
+
{ BooleanSequence.new([PioneBoolean.true]) =>
|
51
51
|
FlowBlock.new(
|
52
52
|
CallRule.new(RuleExpr.new(Package.new("main"), "A"))
|
53
53
|
)
|
@@ -65,9 +65,9 @@ describe 'Pione::Transformer::FlowElementTransformer' do
|
|
65
65
|
BinaryOperator.new(
|
66
66
|
"==",
|
67
67
|
Variable.new("Var"),
|
68
|
-
PioneString.new("a")
|
68
|
+
StringSequence.new([PioneString.new("a")])
|
69
69
|
),
|
70
|
-
{ PioneBoolean.true =>
|
70
|
+
{ BooleanSequence.new([PioneBoolean.true]) =>
|
71
71
|
FlowBlock.new(CallRule.new(RuleExpr.new(Package.new("main"), "A"))),
|
72
72
|
:else =>
|
73
73
|
FlowBlock.new(CallRule.new(RuleExpr.new(Package.new("main"), "B")))
|
@@ -88,7 +88,7 @@ describe 'Pione::Transformer::FlowElementTransformer' do
|
|
88
88
|
inner_block = FlowBlock.new(
|
89
89
|
ConditionalBlock.new(
|
90
90
|
Variable.new("b"),
|
91
|
-
{ PioneBoolean.true =>
|
91
|
+
{ BooleanSequence.new([PioneBoolean.true]) =>
|
92
92
|
FlowBlock.new(
|
93
93
|
CallRule.new(RuleExpr.new(Package.new("main"), "Test1"))
|
94
94
|
),
|
@@ -101,7 +101,7 @@ describe 'Pione::Transformer::FlowElementTransformer' do
|
|
101
101
|
)
|
102
102
|
ConditionalBlock.new(
|
103
103
|
Variable.new("a"),
|
104
|
-
{ PioneBoolean.true => inner_block,
|
104
|
+
{ BooleanSequence.new([PioneBoolean.true]) => inner_block,
|
105
105
|
:else =>
|
106
106
|
FlowBlock.new(
|
107
107
|
CallRule.new(RuleExpr.new(Package.new("main"), "Test3"))
|
@@ -124,11 +124,11 @@ describe 'Pione::Transformer::FlowElementTransformer' do
|
|
124
124
|
STRING
|
125
125
|
ConditionalBlock.new(
|
126
126
|
Variable.new("Var"),
|
127
|
-
{ PioneString.new("a") =>
|
127
|
+
{ StringSequence.new([PioneString.new("a")]) =>
|
128
128
|
FlowBlock.new(CallRule.new(RuleExpr.new(Package.new("main"), "A"))),
|
129
|
-
PioneString.new("b") =>
|
129
|
+
StringSequence.new([PioneString.new("b")]) =>
|
130
130
|
FlowBlock.new(CallRule.new(RuleExpr.new(Package.new("main"), "B"))),
|
131
|
-
PioneString.new("c") =>
|
131
|
+
StringSequence.new([PioneString.new("c")]) =>
|
132
132
|
FlowBlock.new(CallRule.new(RuleExpr.new(Package.new("main"), "C")))
|
133
133
|
}
|
134
134
|
)
|
@@ -143,7 +143,7 @@ describe 'Pione::Transformer::FlowElementTransformer' do
|
|
143
143
|
STRING
|
144
144
|
ConditionalBlock.new(
|
145
145
|
Variable.new("Var"),
|
146
|
-
{ PioneString.new("a") =>
|
146
|
+
{ StringSequence.new([PioneString.new("a")]) =>
|
147
147
|
FlowBlock.new(CallRule.new(RuleExpr.new(Package.new("main"), "Test1"))),
|
148
148
|
:else =>
|
149
149
|
FlowBlock.new(CallRule.new(RuleExpr.new(Package.new("main"), "Test2")))
|
@@ -2,37 +2,37 @@ require_relative '../test-util'
|
|
2
2
|
|
3
3
|
describe 'Pione::Transformer::LiteralTransformer' do
|
4
4
|
transformer_spec('boolean', :boolean) do
|
5
|
-
tc('true' => PioneBoolean.true)
|
6
|
-
tc('false' => PioneBoolean.false)
|
5
|
+
tc('true' => BooleanSequence.new([PioneBoolean.true]))
|
6
|
+
tc('false' => BooleanSequence.new([PioneBoolean.false]))
|
7
7
|
end
|
8
8
|
|
9
9
|
transformer_spec('string', :string) do
|
10
|
-
tc('"abc"' => PioneString.new('abc'))
|
11
|
-
tc('"a\bc"' => PioneString.new('abc'))
|
12
|
-
tc('"a\'"' => PioneString.new('a\''))
|
13
|
-
tc('"a\""' => PioneString.new('a"'))
|
10
|
+
tc('"abc"' => StringSequence.new([PioneString.new('abc')]))
|
11
|
+
tc('"a\bc"' => StringSequence.new([PioneString.new('abc')]))
|
12
|
+
tc('"a\'"' => StringSequence.new([PioneString.new('a\'')]))
|
13
|
+
tc('"a\""' => StringSequence.new([PioneString.new('a"')]))
|
14
14
|
end
|
15
15
|
|
16
16
|
transformer_spec('integer', :integer) do
|
17
|
-
tc('1' => PioneInteger.new(1))
|
18
|
-
tc('123' => PioneInteger.new(123))
|
19
|
-
tc('01' => PioneInteger.new(1))
|
20
|
-
tc('000123' => PioneInteger.new(123))
|
21
|
-
tc('-1' => PioneInteger.new(-1))
|
22
|
-
tc('-01' => PioneInteger.new(-1))
|
23
|
-
tc('+1' => PioneInteger.new(1))
|
24
|
-
tc('+01' => PioneInteger.new(1))
|
17
|
+
tc('1' => IntegerSequence.new([PioneInteger.new(1)]))
|
18
|
+
tc('123' => IntegerSequence.new([PioneInteger.new(123)]))
|
19
|
+
tc('01' => IntegerSequence.new([PioneInteger.new(1)]))
|
20
|
+
tc('000123' => IntegerSequence.new([PioneInteger.new(123)]))
|
21
|
+
tc('-1' => IntegerSequence.new([PioneInteger.new(-1)]))
|
22
|
+
tc('-01' => IntegerSequence.new([PioneInteger.new(-1)]))
|
23
|
+
tc('+1' => IntegerSequence.new([PioneInteger.new(1)]))
|
24
|
+
tc('+01' => IntegerSequence.new([PioneInteger.new(1)]))
|
25
25
|
end
|
26
26
|
|
27
27
|
transformer_spec('float', :float) do
|
28
|
-
tc('0.1' => PioneFloat.new(0.1))
|
29
|
-
tc('123.1' => PioneFloat.new(123.1))
|
30
|
-
tc('01.23' => PioneFloat.new(1.23))
|
31
|
-
tc('000123.456' => PioneFloat.new(123.456))
|
32
|
-
tc('-1.2' => PioneFloat.new(-1.2))
|
33
|
-
tc('-01.1' => PioneFloat.new(-1.1))
|
34
|
-
tc('+1.9' => PioneFloat.new(1.9))
|
35
|
-
tc('+01.8' => PioneFloat.new(1.8))
|
28
|
+
tc('0.1' => FloatSequence.new([PioneFloat.new(0.1)]))
|
29
|
+
tc('123.1' => FloatSequence.new([PioneFloat.new(123.1)]))
|
30
|
+
tc('01.23' => FloatSequence.new([PioneFloat.new(1.23)]))
|
31
|
+
tc('000123.456' => FloatSequence.new([PioneFloat.new(123.456)]))
|
32
|
+
tc('-1.2' => FloatSequence.new([PioneFloat.new(-1.2)]))
|
33
|
+
tc('-01.1' => FloatSequence.new([PioneFloat.new(-1.1)]))
|
34
|
+
tc('+1.9' => FloatSequence.new([PioneFloat.new(1.9)]))
|
35
|
+
tc('+01.8' => FloatSequence.new([PioneFloat.new(1.8)]))
|
36
36
|
end
|
37
37
|
|
38
38
|
transformer_spec('variable', :variable) do
|
@@ -41,10 +41,10 @@ describe 'Pione::Transformer::LiteralTransformer' do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
transformer_spec('data_name', :data_name) do
|
44
|
-
tc("'abc'" => DataExpr.new('abc'))
|
45
|
-
tc("'a\\bc'" => DataExpr.new('abc'))
|
46
|
-
tc("'a\\''" => DataExpr.new("a'"))
|
47
|
-
tc("'a\\\"'" => DataExpr.new("a\""))
|
44
|
+
tc("'abc'" => DataExpr.new('abc').to_seq)
|
45
|
+
tc("'a\\bc'" => DataExpr.new('abc').to_seq)
|
46
|
+
tc("'a\\''" => DataExpr.new("a'").to_seq)
|
47
|
+
tc("'a\\\"'" => DataExpr.new("a\"").to_seq)
|
48
48
|
end
|
49
49
|
|
50
50
|
transformer_spec('package_name', :package_name) do
|
@@ -57,8 +57,8 @@ describe 'Pione::Transformer::LiteralTransformer' do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
transformer_spec('ticket', :ticket) do
|
60
|
-
tc("<T>" =>
|
61
|
-
tc("< T>" =>
|
62
|
-
tc("<T >" =>
|
60
|
+
tc("<T>" => TicketExpr.new("T").to_seq)
|
61
|
+
tc("< T>" => TicketExpr.new("T").to_seq)
|
62
|
+
tc("<T >" => TicketExpr.new("T").to_seq)
|
63
63
|
end
|
64
64
|
end
|