pione 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. data/History.txt +12 -1
  2. data/example/AbstractRule/AbstractRule.pione +40 -0
  3. data/example/Fib/Fib.pione +12 -5
  4. data/example/LucasNumber/LucasNumber.pione +1 -1
  5. data/example/MakePair/MakePair.pione +21 -6
  6. data/example/OddSelector/OddSelector.pione +17 -0
  7. data/example/OddSelector/data/1.i +0 -0
  8. data/example/OddSelector/data/10.i +0 -0
  9. data/example/OddSelector/data/2.i +0 -0
  10. data/example/OddSelector/data/3.i +0 -0
  11. data/example/OddSelector/data/4.i +0 -0
  12. data/example/OddSelector/data/5.i +0 -0
  13. data/example/OddSelector/data/6.i +0 -0
  14. data/example/OddSelector/data/7.i +0 -0
  15. data/example/OddSelector/data/8.i +0 -0
  16. data/example/OddSelector/data/9.i +0 -0
  17. data/example/SequentialParameter/SequentialParameter.pione +4 -0
  18. data/example/SieveOfEratosthenes/SieveOfEratosthenes.pione +31 -43
  19. data/example/SingleParticlesWithRef/SingleParticlesWithRef.pione +1 -1
  20. data/example/Touch/Touch.pione +3 -0
  21. data/lib/pione/command/pione-syntax-checker.rb +4 -4
  22. data/lib/pione/model/assignment.rb +6 -1
  23. data/lib/pione/model/basic-model.rb +92 -278
  24. data/lib/pione/model/binary-operator.rb +5 -1
  25. data/lib/pione/model/block.rb +17 -0
  26. data/lib/pione/model/boolean.rb +54 -22
  27. data/lib/pione/model/constraints.rb +34 -0
  28. data/lib/pione/model/data-expr.rb +184 -297
  29. data/lib/pione/model/feature-expr.rb +13 -4
  30. data/lib/pione/model/float.rb +24 -41
  31. data/lib/pione/model/integer.rb +75 -41
  32. data/lib/pione/model/keyed-sequence.rb +143 -0
  33. data/lib/pione/model/list.rb +12 -8
  34. data/lib/pione/model/message.rb +8 -4
  35. data/lib/pione/model/ordinal-sequence.rb +75 -0
  36. data/lib/pione/model/package.rb +6 -2
  37. data/lib/pione/model/parameters.rb +61 -9
  38. data/lib/pione/model/pione-method.rb +146 -0
  39. data/lib/pione/model/rule-expr.rb +44 -38
  40. data/lib/pione/model/rule-io.rb +11 -3
  41. data/lib/pione/model/rule.rb +105 -155
  42. data/lib/pione/model/sequence.rb +273 -0
  43. data/lib/pione/model/string.rb +75 -29
  44. data/lib/pione/model/ticket-expr.rb +17 -29
  45. data/lib/pione/model/type.rb +242 -0
  46. data/lib/pione/model/variable-table.rb +52 -53
  47. data/lib/pione/model/variable.rb +8 -4
  48. data/lib/pione/model.rb +34 -0
  49. data/lib/pione/parser/block-parser.rb +44 -20
  50. data/lib/pione/parser/common-parser.rb +2 -1
  51. data/lib/pione/parser/document-parser.rb +6 -1
  52. data/lib/pione/parser/expr-parser.rb +57 -11
  53. data/lib/pione/parser/flow-element-parser.rb +2 -2
  54. data/lib/pione/parser/rule-definition-parser.rb +23 -1
  55. data/lib/pione/patch/rinda-patch.rb +1 -5
  56. data/lib/pione/rule-handler/action-handler.rb +5 -5
  57. data/lib/pione/rule-handler/basic-handler.rb +30 -7
  58. data/lib/pione/rule-handler/empty-handler.rb +14 -0
  59. data/lib/pione/rule-handler/flow-handler.rb +132 -115
  60. data/lib/pione/rule-handler/root-handler.rb +6 -2
  61. data/lib/pione/rule-handler/update-criteria.rb +152 -0
  62. data/lib/pione/rule-handler.rb +14 -0
  63. data/lib/pione/system/identifier.rb +9 -9
  64. data/lib/pione/transformer/block-transformer.rb +4 -0
  65. data/lib/pione/transformer/expr-transformer.rb +1 -1
  66. data/lib/pione/transformer/flow-element-transformer.rb +4 -2
  67. data/lib/pione/transformer/literal-transformer.rb +14 -3
  68. data/lib/pione/transformer/rule-definition-transformer.rb +17 -5
  69. data/lib/pione/tuple-space/data-finder.rb +15 -52
  70. data/lib/pione/version.rb +1 -1
  71. data/lib/pione.rb +12 -38
  72. data/test/agent/spec_task-worker.rb +13 -12
  73. data/test/model/spec_assignment.rb +2 -2
  74. data/test/model/spec_binary-operator.rb +10 -10
  75. data/test/model/spec_block.rb +8 -8
  76. data/test/model/spec_boolean.rb +1 -72
  77. data/test/model/spec_boolean.yml +134 -0
  78. data/test/model/spec_data-expr.rb +50 -237
  79. data/test/model/spec_data-expr.yml +16 -45
  80. data/test/model/spec_data-expr_match.yml +45 -0
  81. data/test/model/spec_feature-expr.rb +2 -43
  82. data/test/model/spec_feature-expr.yml +0 -28
  83. data/test/model/spec_feature-expr_decide.yml +28 -0
  84. data/test/model/spec_float.rb +1 -119
  85. data/test/model/spec_float.yml +17 -0
  86. data/test/model/spec_integer.rb +1 -119
  87. data/test/model/spec_integer.yml +57 -0
  88. data/test/model/spec_keyed-sequence.rb +5 -0
  89. data/test/model/spec_keyed-sequence.yml +22 -0
  90. data/test/model/spec_message.rb +7 -7
  91. data/test/model/spec_parameters.rb +50 -63
  92. data/test/model/spec_pione-method.rb +56 -0
  93. data/test/model/spec_rule-expr.rb +18 -8
  94. data/test/model/spec_rule.rb +12 -12
  95. data/test/model/spec_sequence.rb +5 -0
  96. data/test/model/spec_sequence.yml +60 -0
  97. data/test/model/spec_string.rb +3 -70
  98. data/test/model/spec_string.yml +83 -0
  99. data/test/model/spec_ticket-expr.rb +4 -54
  100. data/test/model/spec_ticket-expr.yml +11 -0
  101. data/test/model/spec_variable-table.rb +41 -42
  102. data/test/model/spec_variable.rb +20 -22
  103. data/test/parser/spec_block-parser.yml +9 -0
  104. data/test/parser/spec_expr-parser.yml +0 -17
  105. data/test/parser/spec_flow-element-parser.yml +1 -1
  106. data/test/parser/spec_rule-definition-parser.yml +0 -4
  107. data/test/rule-handler/spec_update-criteria.pione +39 -0
  108. data/test/rule-handler/spec_update-criteria.rb +53 -0
  109. data/test/rule-handler/spec_update-criteria.yml +158 -0
  110. data/test/test-util.rb +25 -0
  111. data/test/transformer/spec_block-transformer.rb +7 -0
  112. data/test/transformer/spec_expr-transformer.rb +64 -19
  113. data/test/transformer/spec_flow-element-transformer.rb +11 -11
  114. data/test/transformer/spec_literal-transformer.rb +29 -29
  115. data/test/transformer/spec_rule-definition-transformer.rb +39 -21
  116. metadata +57 -11
  117. data/lib/pione/model/undefined-value.rb +0 -24
  118. data/lib/pione/tuple-space/update-criteria.rb +0 -97
  119. data/test/model/spec_list.rb +0 -26
  120. data/test/model/spec_rule-io.rb +0 -32
  121. 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("+", 1.to_pione, 2.to_pione)
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("+", "a".to_pione, "b".to_pione)
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("||", PioneBoolean.false, PioneBoolean.true)
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("*", Variable.new("Var"), 3.to_pione)
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("==", Variable.new("Var1"), "a".to_pione)
23
- right = BinaryOperator.new("==", Variable.new("Var2"), PioneString.new("b"))
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("index", "abc".to_pione, 1.to_pione, 1.to_pione)
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("prev", BinaryOperator.new("+", 1.to_pione, 2.to_pione))
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", Parameters.empty, TicketExpr.empty, TicketExpr.empty)
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
- {"var1" => 1}.to_params
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
- {"var1" => 1, "var2" => 2}.to_params
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
- {"var1" => "a", "var2" => "b", "var3" => "c"}.to_params
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>" => Ticket.new("T"))
61
- tc("< T>" => Ticket.new("T"))
62
- tc("<T >" => Ticket.new("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