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
data/test/model/spec_float.rb
CHANGED
@@ -19,123 +19,5 @@ describe 'Model::PioneFloat' do
|
|
19
19
|
@one.should.not == PioneInteger.new(1)
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
it 'should true' do
|
24
|
-
@one.call_pione_method("==", PioneFloat.new(1.0)).should.true
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'should false' do
|
28
|
-
@one.call_pione_method("==", @two).should.not.true
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should raise type error' do
|
32
|
-
should.raise(PioneModelTypeError) do
|
33
|
-
@one.call_pione_method("==", PioneInteger.new(1))
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe 'pione method !=' do
|
39
|
-
it 'should true' do
|
40
|
-
@one.call_pione_method("!=", @two).should.true
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should false' do
|
44
|
-
@one.call_pione_method("!=", PioneFloat.new(1.0)).should.not.true
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'should raise type error' do
|
48
|
-
should.raise(PioneModelTypeError) do
|
49
|
-
@one.call_pione_method("!=", PioneInteger.new(1))
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe 'pione method >' do
|
55
|
-
it 'should true' do
|
56
|
-
@one.call_pione_method(">", PioneFloat.new(0.0)).should.true
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'should false' do
|
60
|
-
@one.call_pione_method(">", PioneFloat.new(1.0)).should.false
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'should raise type error' do
|
64
|
-
should.raise(PioneModelTypeError) do
|
65
|
-
@one.call_pione_method(">", PioneInteger.new(1))
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe 'pione method >=' do
|
71
|
-
it 'should true' do
|
72
|
-
@one.call_pione_method(">=", PioneFloat.new(1.0)).should.true
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'should false' do
|
76
|
-
@one.call_pione_method(">=", @two).should.false
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'should raise type error' do
|
80
|
-
should.raise(PioneModelTypeError) do
|
81
|
-
@one.call_pione_method(">=", PioneInteger.new(1))
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
describe 'pione method <' do
|
87
|
-
it 'should true' do
|
88
|
-
@one.call_pione_method("<", @two).should.true
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'should false' do
|
92
|
-
@one.call_pione_method("<", PioneFloat.new(1.0)).should.false
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'should raise type error' do
|
96
|
-
should.raise(PioneModelTypeError) do
|
97
|
-
@one.call_pione_method("<", PioneInteger.new(1))
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe 'pione method <=' do
|
103
|
-
it 'should true' do
|
104
|
-
@one.call_pione_method("<=", PioneFloat.new(1.0)).should.true
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'should false' do
|
108
|
-
@one.call_pione_method("<=", PioneFloat.new(0.0)).should.false
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'should raise type error' do
|
112
|
-
should.raise(PioneModelTypeError) do
|
113
|
-
@one.call_pione_method("<=", PioneInteger.new(1))
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
describe 'pione method +' do
|
119
|
-
it 'should sum' do
|
120
|
-
@one.call_pione_method("+", @one).should == @two
|
121
|
-
end
|
122
|
-
|
123
|
-
it 'should raise type error' do
|
124
|
-
should.raise(PioneModelTypeError) do
|
125
|
-
@one.call_pione_method("+", PioneInteger.new(1))
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe 'pione method -' do
|
131
|
-
it 'should get difference' do
|
132
|
-
@two.call_pione_method("-", @one).should == @one
|
133
|
-
end
|
134
|
-
|
135
|
-
it 'should raise type error' do
|
136
|
-
should.raise(PioneModelTypeError) do
|
137
|
-
@one.call_pione_method("-", PioneInteger.new(1))
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
22
|
+
test_pione_method("float")
|
141
23
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# +
|
2
|
+
- "1.1" : "1.0 + 0.1"
|
3
|
+
|
4
|
+
# -
|
5
|
+
- "0.9" : "1.0 - 0.1"
|
6
|
+
|
7
|
+
# as_string, str
|
8
|
+
- '"0.1"' : "0.1.as_string"
|
9
|
+
- '"1.0"' : "1.0.str"
|
10
|
+
|
11
|
+
# as_int, i
|
12
|
+
- "1" : "1.0.as_integer"
|
13
|
+
- "0" : "0.1.i"
|
14
|
+
|
15
|
+
# as_float, f
|
16
|
+
- "0.1" : "0.1.as_float"
|
17
|
+
- "1.0" : "1.0.f"
|
data/test/model/spec_integer.rb
CHANGED
@@ -19,123 +19,5 @@ describe 'Model::PioneInteger' do
|
|
19
19
|
@one.should.not == PioneFloat.new(1.0)
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
it 'should true' do
|
24
|
-
@one.call_pione_method("==", PioneInteger.new(1)).should.true
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'should false' do
|
28
|
-
@one.call_pione_method("==", PioneInteger.new(2)).should.not.true
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should raise type error' do
|
32
|
-
should.raise(PioneModelTypeError) do
|
33
|
-
@one.call_pione_method("==", PioneFloat.new(1.0))
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe 'pione method !=' do
|
39
|
-
it 'should true' do
|
40
|
-
@one.call_pione_method("!=", PioneInteger.new(2)).should.true
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should false' do
|
44
|
-
@one.call_pione_method("!=", PioneInteger.new(1)).should.not.true
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'should raise type error' do
|
48
|
-
should.raise(PioneModelTypeError) do
|
49
|
-
@one.call_pione_method("!=", PioneFloat.new(1.0))
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe 'pione method >' do
|
55
|
-
it 'should true' do
|
56
|
-
@one.call_pione_method(">", PioneInteger.new(0)).should.true
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'should false' do
|
60
|
-
@one.call_pione_method(">", PioneInteger.new(1)).should.false
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'should raise type error' do
|
64
|
-
should.raise(PioneModelTypeError) do
|
65
|
-
@one.call_pione_method(">", PioneFloat.new(1.0))
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe 'pione method >=' do
|
71
|
-
it 'should true' do
|
72
|
-
@one.call_pione_method(">=", PioneInteger.new(1)).should.true
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'should false' do
|
76
|
-
@one.call_pione_method(">=", PioneInteger.new(2)).should.false
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'should raise type error' do
|
80
|
-
should.raise(PioneModelTypeError) do
|
81
|
-
@one.call_pione_method(">=", PioneFloat.new(1.0))
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
describe 'pione method <' do
|
87
|
-
it 'should true' do
|
88
|
-
@one.call_pione_method("<", PioneInteger.new(2)).should.true
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'should false' do
|
92
|
-
@one.call_pione_method("<", PioneInteger.new(1)).should.false
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'should raise type error' do
|
96
|
-
should.raise(PioneModelTypeError) do
|
97
|
-
@one.call_pione_method("<", PioneFloat.new(1.0))
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe 'pione method <=' do
|
103
|
-
it 'should true' do
|
104
|
-
@one.call_pione_method("<=", PioneInteger.new(1)).should.true
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'should false' do
|
108
|
-
@one.call_pione_method("<=", PioneInteger.new(0)).should.false
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'should raise type error' do
|
112
|
-
should.raise(PioneModelTypeError) do
|
113
|
-
@one.call_pione_method("<=", PioneFloat.new(1.0))
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
describe 'pione method +' do
|
119
|
-
it 'should sum' do
|
120
|
-
@one.call_pione_method("+", @one).should == @two
|
121
|
-
end
|
122
|
-
|
123
|
-
it 'should raise type error' do
|
124
|
-
should.raise(PioneModelTypeError) do
|
125
|
-
@one.call_pione_method("+", PioneFloat.new(1.0))
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe 'pione method -' do
|
131
|
-
it 'should get difference' do
|
132
|
-
@two.call_pione_method("-", @one).should == @one
|
133
|
-
end
|
134
|
-
|
135
|
-
it 'should raise type error' do
|
136
|
-
should.raise(PioneModelTypeError) do
|
137
|
-
@one.call_pione_method("-", PioneFloat.new(1.0))
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
22
|
+
test_pione_method("integer")
|
141
23
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# ==, !=
|
2
|
+
- true : '1 == 1'
|
3
|
+
- false : '1 == 2'
|
4
|
+
- true : '1 != 2'
|
5
|
+
- false : '1 != 1'
|
6
|
+
|
7
|
+
# length
|
8
|
+
- "3" : '(1 | 2 | 3).length'
|
9
|
+
|
10
|
+
# []
|
11
|
+
- "1" : '(1 | 2 | 3)[1]'
|
12
|
+
- "2" : '(1 | 2 | 3)[2]'
|
13
|
+
- "3" : '(1 | 2 | 3)[3]'
|
14
|
+
|
15
|
+
# as_string, str
|
16
|
+
- '"1" | "2" | "3"' : '(1 | 2 | 3).str'
|
17
|
+
|
18
|
+
# +
|
19
|
+
- "6" : '1 + 2 + 3'
|
20
|
+
- "2 | 3 | 4" : '1 + (1 | 2 | 3)'
|
21
|
+
- "2 | 3 | 4" : '(1 | 2 | 3) + 1'
|
22
|
+
- "2 | 3 | 4| 3 | 4 | 5 | 4 | 5 | 6" : '(1 | 2 | 3) + (1 | 2 | 3)'
|
23
|
+
|
24
|
+
# -
|
25
|
+
- "-4" : '1 - 2 - 3'
|
26
|
+
- "0 | -1 | -2" : '1 - (1 | 2 | 3)'
|
27
|
+
- "0 | 1 | 2" : '(1 | 2 | 3) - 1'
|
28
|
+
- "0 | -1 | -2 | 1 | 0 | -1 | 2 | 1 | 0" : '(1 | 2 | 3) - (1 | 2 | 3)'
|
29
|
+
|
30
|
+
# *
|
31
|
+
- "6" : '1 * 2 * 3'
|
32
|
+
- "3 | 6 | 9" : '3 * (1 | 2 | 3)'
|
33
|
+
- "3 | 6 | 9" : '(1 | 2 | 3) * 3'
|
34
|
+
- "1 | 2 | 3 | 2 | 4 | 6 | 3 | 6 | 9" : '(1 | 2 | 3) * (1 | 2 | 3)'
|
35
|
+
|
36
|
+
# /
|
37
|
+
- true : '4 / 2 == 2'
|
38
|
+
- true : '4 / (4 | 2) == (1 | 2)'
|
39
|
+
- true : '(4 | 2) / 2 == (2 | 1)'
|
40
|
+
- true : '(4 | 2) / (4 | 2) == (1 | 2 | 0 | 1)'
|
41
|
+
|
42
|
+
# upto
|
43
|
+
- '1 | 2 | 3' : '1.upto(3)'
|
44
|
+
- '1' : '1.upto(1)'
|
45
|
+
- '1' : '1.upto(0)'
|
46
|
+
- '1 | 2 | 3 | 2 | 3 | 3' : '(1 | 2 | 3).upto(3)'
|
47
|
+
- '1 | 1 | 2 | 1 | 2 | 3' : '1.upto(1 | 2 | 3)'
|
48
|
+
- '1 | 1 | 2 | 1 | 2 | 3 | 2 | 2 | 2 | 3 | 3 | 3 | 3' : '(1 | 2 | 3).upto(1 | 2 | 3)'
|
49
|
+
|
50
|
+
# downto
|
51
|
+
- '3 | 2 | 1' : '3.downto(1)'
|
52
|
+
- '3' : '3.downto(3)'
|
53
|
+
- '3' : '3.downto(4)'
|
54
|
+
- '3 | 2 | 1 | 2 | 1 | 1' : '(3 | 2 | 1).downto(1)'
|
55
|
+
- '3 | 3 | 2 | 3 | 2 | 1' : '3.downto(3 | 2 | 1)'
|
56
|
+
- '3 | 3 | 2 | 3 | 2 | 1 | 2 | 2 | 2 | 1 | 1 | 1 | 1' : '(3 | 2 | 1).downto(3 | 2 | 1)'
|
57
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# :
|
2
|
+
- '(1 : "a") | (2 : "b") | (3 : "c")' : '(1 : "a") | (2 : "b") | (3 : "c")'
|
3
|
+
- '("a" : 1) | ("b" : 2) | ("c" : 3)' : '("a" : 1) | ("b" : 2) | ("c" : 3)'
|
4
|
+
- '(1 : "a") | (2 : "a") | (3 : "a")' : '(1 | 2 | 3) : "a"'
|
5
|
+
|
6
|
+
# []
|
7
|
+
- '"a"' : '((1 : "a") | (2 : "b") | (3 : "c"))[1]'
|
8
|
+
- '"b"' : '((1 : "a") | (2 : "b") | (3 : "c"))[2]'
|
9
|
+
- '"c"' : '((1 : "a") | (2 : "b") | (3 : "c"))[3]'
|
10
|
+
- '"a" | "b"' : '((1 : ("a" | "b")) | (2 : ("c" | "d")) | (3 : ("e" | "f")))[1]'
|
11
|
+
- '"c" | "d"' : '((1 : ("a" | "b")) | (2 : ("c" | "d")) | (3 : ("e" | "f")))[2]'
|
12
|
+
- '"e" | "f"' : '((1 : ("a" | "b")) | (2 : ("c" | "d")) | (3 : ("e" | "f")))[3]'
|
13
|
+
- '1' : '(("a" : 1) | ("b" : 2) | ("c" : 3))["a"]'
|
14
|
+
- '2' : '(("a" : 1) | ("b" : 2) | ("c" : 3))["b"]'
|
15
|
+
- '3' : '(("a" : 1) | ("b" : 2) | ("c" : 3))["c"]'
|
16
|
+
|
17
|
+
# keys
|
18
|
+
- '1 | 2 | 3' : '((1 : "a") | (2 : "b") | (3 : "c")).keys'
|
19
|
+
|
20
|
+
# values
|
21
|
+
- '"a" | "b" | "c"' : '((1 : "a") | (2 : "b") | (3 : "c")).values'
|
22
|
+
|
data/test/model/spec_message.rb
CHANGED
@@ -2,13 +2,13 @@ require_relative '../test-util'
|
|
2
2
|
|
3
3
|
describe 'Model::Message' do
|
4
4
|
before do
|
5
|
-
@a = Model::Message.new("next", 1)
|
6
|
-
@b = Model::Message.new("substring", "abcdefg", 2, 3)
|
5
|
+
@a = Model::Message.new("next", PioneInteger.new(1).to_seq)
|
6
|
+
@b = Model::Message.new("substring", PioneString.new("abcdefg").to_seq, PioneInteger.new(2).to_seq, PioneInteger.new(3).to_seq)
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'should equal' do
|
10
|
-
@a.should == Model::Message.new("next", 1)
|
11
|
-
@b.should == Model::Message.new("substring", "abcdefg", 2, 3)
|
10
|
+
@a.should == Model::Message.new("next", PioneInteger.new(1).to_seq)
|
11
|
+
@b.should == Model::Message.new("substring", PioneString.new("abcdefg").to_seq, PioneInteger.new(2).to_seq, PioneInteger.new(3).to_seq)
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'should not equal' do
|
@@ -16,14 +16,14 @@ describe 'Model::Message' do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should send message' do
|
19
|
-
@a.eval(VariableTable.new).should == 2.
|
20
|
-
@b.eval(VariableTable.new).should == "
|
19
|
+
@a.eval(VariableTable.new).should == PioneInteger.new(2).to_seq
|
20
|
+
@b.eval(VariableTable.new).should == PioneString.new("bcd").to_seq
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'should get the method result from variable table' do
|
24
24
|
vtable = VariableTable.new
|
25
25
|
vtable.set(Variable.new("X"), @a)
|
26
|
-
vtable.get(Variable.new("X")).should == 2.
|
26
|
+
vtable.get(Variable.new("X")).should == PioneInteger.new(2).to_seq
|
27
27
|
vtable.to_hash[Variable.new("X")].should == @a
|
28
28
|
end
|
29
29
|
|
@@ -77,72 +77,59 @@ describe 'Model::Parameters' do
|
|
77
77
|
@params_a.should.not.be.empty
|
78
78
|
end
|
79
79
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
PioneBoolean.true
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
PioneBoolean.
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
PioneBoolean.
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
describe 'pione method []' do
|
117
|
-
it 'should get a value' do
|
118
|
-
@params_a.call_pione_method("[]", "a".to_pione).should ==
|
119
|
-
"A".to_pione
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
describe 'pione method get' do
|
124
|
-
it 'should get a value' do
|
125
|
-
@params_a.call_pione_method("get", "a".to_pione).should ==
|
126
|
-
"A".to_pione
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe 'pione method set' do
|
131
|
-
it 'should add a parameter' do
|
132
|
-
new_params = @params_a.call_pione_method("set", "d".to_pione, "D".to_pione)
|
133
|
-
new_params.get(Variable.new("d")).should == "D".to_pione
|
134
|
-
end
|
135
|
-
|
136
|
-
it 'should overwrite a parameter' do
|
137
|
-
new_params = @params_a.call_pione_method("set", "a".to_pione, "X".to_pione)
|
138
|
-
new_params.get(Variable.new("a")).should == "X".to_pione
|
80
|
+
it 'should expand sequence with each modifier' do
|
81
|
+
seq_a = StringSequence.new([PioneString.new("X"), PioneString.new("Y"), PioneString.new("Z")]).set_each
|
82
|
+
seq_b = IntegerSequence.new([PioneInteger.new(1), PioneInteger.new(2), PioneInteger.new(3)]).set_each
|
83
|
+
seq_c = BooleanSequence.new([PioneBoolean.new(true), PioneBoolean.new(false)]).set_each
|
84
|
+
params = Parameters.new(Variable.new("A") => seq_a, Variable.new("B") => seq_b, Variable.new("C") => seq_c)
|
85
|
+
params.to_a.tap do |list|
|
86
|
+
list.size.should == 18
|
87
|
+
comb = [
|
88
|
+
[PioneString.new("X"), PioneInteger.new(1), PioneBoolean.new(true)],
|
89
|
+
[PioneString.new("X"), PioneInteger.new(2), PioneBoolean.new(true)],
|
90
|
+
[PioneString.new("X"), PioneInteger.new(3), PioneBoolean.new(true)],
|
91
|
+
[PioneString.new("X"), PioneInteger.new(1), PioneBoolean.new(false)],
|
92
|
+
[PioneString.new("X"), PioneInteger.new(2), PioneBoolean.new(false)],
|
93
|
+
[PioneString.new("X"), PioneInteger.new(3), PioneBoolean.new(false)],
|
94
|
+
[PioneString.new("Y"), PioneInteger.new(1), PioneBoolean.new(true)],
|
95
|
+
[PioneString.new("Y"), PioneInteger.new(2), PioneBoolean.new(true)],
|
96
|
+
[PioneString.new("Y"), PioneInteger.new(3), PioneBoolean.new(true)],
|
97
|
+
[PioneString.new("Y"), PioneInteger.new(1), PioneBoolean.new(false)],
|
98
|
+
[PioneString.new("Y"), PioneInteger.new(2), PioneBoolean.new(false)],
|
99
|
+
[PioneString.new("Y"), PioneInteger.new(3), PioneBoolean.new(false)],
|
100
|
+
[PioneString.new("Z"), PioneInteger.new(1), PioneBoolean.new(true)],
|
101
|
+
[PioneString.new("Z"), PioneInteger.new(2), PioneBoolean.new(true)],
|
102
|
+
[PioneString.new("Z"), PioneInteger.new(3), PioneBoolean.new(true)],
|
103
|
+
[PioneString.new("Z"), PioneInteger.new(1), PioneBoolean.new(false)],
|
104
|
+
[PioneString.new("Z"), PioneInteger.new(2), PioneBoolean.new(false)],
|
105
|
+
[PioneString.new("Z"), PioneInteger.new(3), PioneBoolean.new(false)]
|
106
|
+
]
|
107
|
+
comb.each do |elts|
|
108
|
+
list.should.include(
|
109
|
+
Parameters.new(
|
110
|
+
Variable.new("A") => elts[0].to_seq,
|
111
|
+
Variable.new("B") => elts[1].to_seq,
|
112
|
+
Variable.new("C") => elts[2].to_seq
|
113
|
+
)
|
114
|
+
)
|
115
|
+
end
|
139
116
|
end
|
140
117
|
end
|
141
118
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
119
|
+
it 'should expand sequences with all modifier' do
|
120
|
+
seq_a = StringSequence.new([PioneString.new("X"), PioneString.new("Y"), PioneString.new("Z")]).set_all
|
121
|
+
seq_b = IntegerSequence.new([PioneInteger.new(1), PioneInteger.new(2), PioneInteger.new(3)]).set_all
|
122
|
+
seq_c = BooleanSequence.new([PioneBoolean.new(true), PioneBoolean.new(false)]).set_all
|
123
|
+
params = Parameters.new(Variable.new("A") => seq_a, Variable.new("B") => seq_b, Variable.new("C") => seq_c)
|
124
|
+
params.to_a.tap do |list|
|
125
|
+
list.size.should == 1
|
126
|
+
list.should.include(
|
127
|
+
Parameters.new(
|
128
|
+
Variable.new("A") => seq_a,
|
129
|
+
Variable.new("B") => seq_b,
|
130
|
+
Variable.new("C") => seq_c
|
131
|
+
)
|
132
|
+
)
|
146
133
|
end
|
147
134
|
end
|
148
135
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require_relative '../test-util'
|
2
|
+
|
3
|
+
describe "Pione::Model::PioneMethod" do
|
4
|
+
before do
|
5
|
+
@int_1 = PioneInteger.new(1).to_seq
|
6
|
+
@int_2 = PioneInteger.new(2).to_seq
|
7
|
+
@int_3 = PioneInteger.new(3).to_seq
|
8
|
+
@str_1 = PioneString.new(1).to_seq
|
9
|
+
@method_1 = Model::PioneMethod.new([TypeInteger], TypeInteger, lambda{|rec, arg1| arg1})
|
10
|
+
@method_2 = Model::PioneMethod.new([TypeInteger, TypeString], TypeInteger, lambda{|rec, arg1, arg2| arg1})
|
11
|
+
@method_3 = Model::PioneMethod.new([], :receiver_type, lambda{|rec| rec})
|
12
|
+
@method_bad = Model::PioneMethod.new([TypeString], TypeInteger, lambda{|rec, arg1| arg1})
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should get inputs" do
|
16
|
+
@method_1.inputs.should == [TypeInteger]
|
17
|
+
@method_2.inputs.should == [TypeInteger, TypeString]
|
18
|
+
@method_3.inputs.should == []
|
19
|
+
@method_bad.inputs.should == [TypeString]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should get output" do
|
23
|
+
@method_1.output.should == TypeInteger
|
24
|
+
@method_2.output.should == TypeInteger
|
25
|
+
@method_3.output.should == :receiver_type
|
26
|
+
@method_bad.output.should == TypeInteger
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should be callable" do
|
30
|
+
@method_1.call(@int_1, @int_2).should == @int_2
|
31
|
+
@method_2.call(@int_1, @int_2, @str_1).should == @int_2
|
32
|
+
@method_3.call(@int_1).should == @int_1
|
33
|
+
@method_3.call(@str_1).should == @str_1
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should validate inputs" do
|
37
|
+
@method_1.validate_inputs(@int_1).should.be.false
|
38
|
+
@method_2.validate_inputs(@int_1).should.be.false
|
39
|
+
@method_2.validate_inputs(@int_1, @str_1).should.be.false
|
40
|
+
@method_2.validate_inputs(@int_1, @int_2).should.be.false
|
41
|
+
@method_2.validate_inputs(@int_1, @int_2, @int_3, @str_1).should.be.false
|
42
|
+
@method_3.validate_inputs(@int_1, @int_2).should.be.false
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should call" do
|
46
|
+
@method_1.call(@int_1, @int_2).should == @int_2
|
47
|
+
@method_2.call(@int_1, @int_2, @str_1).should == @int_2
|
48
|
+
@method_3.call(@int_1).should == @int_1
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should raise interface error" do
|
52
|
+
should.raise(MethodInterfaceError){ @method_1.call(@int_1, @str_1) }
|
53
|
+
should.raise(MethodInterfaceError){ @method_2.call(@int_1, @str_1, @str_1) }
|
54
|
+
should.raise(MethodInterfaceError){ @method_bad.call(@int_1, @str_1) }
|
55
|
+
end
|
56
|
+
end
|
@@ -14,11 +14,21 @@ describe 'Model::RuleExpr' do
|
|
14
14
|
@a.should.not == @b
|
15
15
|
end
|
16
16
|
|
17
|
+
it 'should set/get input ticket expression' do
|
18
|
+
ticket = TicketExpr.new("A").to_seq
|
19
|
+
@a.add_input_ticket_expr(ticket).input_ticket_expr.should == ticket
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should set/get output ticket expression' do
|
23
|
+
ticket = TicketExpr.new("A").to_seq
|
24
|
+
@a.add_output_ticket_expr(ticket).output_ticket_expr.should == ticket
|
25
|
+
end
|
26
|
+
|
17
27
|
describe 'pione method ==' do
|
18
28
|
it 'should true' do
|
19
29
|
@a.call_pione_method(
|
20
30
|
"==", RuleExpr.new(Package.new("main"), "a")
|
21
|
-
).should.true
|
31
|
+
).should == PioneBoolean.new(true).to_seq
|
22
32
|
end
|
23
33
|
|
24
34
|
it 'should false' do
|
@@ -26,15 +36,15 @@ describe 'Model::RuleExpr' do
|
|
26
36
|
end
|
27
37
|
|
28
38
|
it 'should raise type error' do
|
29
|
-
should.raise(
|
30
|
-
@a.call_pione_method("==", PioneInteger.new(1))
|
39
|
+
should.raise(MethodNotFound) do
|
40
|
+
@a.call_pione_method("==", PioneInteger.new(1).to_seq)
|
31
41
|
end
|
32
42
|
end
|
33
43
|
end
|
34
44
|
|
35
45
|
describe 'pione method !=' do
|
36
46
|
it 'should true' do
|
37
|
-
@a.call_pione_method("!=", @b).should.true
|
47
|
+
@a.call_pione_method("!=", @b).should == PioneBoolean.new(true).to_seq
|
38
48
|
end
|
39
49
|
|
40
50
|
it 'should false' do
|
@@ -44,15 +54,15 @@ describe 'Model::RuleExpr' do
|
|
44
54
|
end
|
45
55
|
|
46
56
|
it 'should raise type error' do
|
47
|
-
should.raise(
|
48
|
-
@a.call_pione_method("!=", PioneInteger.new(1))
|
57
|
+
should.raise(MethodNotFound) do
|
58
|
+
@a.call_pione_method("!=", PioneInteger.new(1).to_seq)
|
49
59
|
end
|
50
60
|
end
|
51
61
|
end
|
52
62
|
|
53
63
|
describe 'pione method as_string' do
|
54
64
|
it 'should get string' do
|
55
|
-
@a.call_pione_method("as_string").should == PioneString.new("a")
|
65
|
+
@a.call_pione_method("as_string").should == PioneString.new("a").to_seq
|
56
66
|
end
|
57
67
|
end
|
58
68
|
|
@@ -60,7 +70,7 @@ describe 'Model::RuleExpr' do
|
|
60
70
|
it 'should set parameters' do
|
61
71
|
params = Parameters.new({Variable.new("a") => PioneBoolean.true})
|
62
72
|
@a.call_pione_method("params", params).should ==
|
63
|
-
RuleExpr.new(Package.new("main"), "a", params)
|
73
|
+
RuleExpr.new(Package.new("main"), "a", params: params)
|
64
74
|
end
|
65
75
|
end
|
66
76
|
end
|