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_rule.rb
CHANGED
@@ -5,14 +5,14 @@ describe 'Model::RuleCondition' do
|
|
5
5
|
a = RuleCondition.new(
|
6
6
|
[DataExpr.new("a")],
|
7
7
|
[DataExpr.new("a")],
|
8
|
-
Parameters.new(Variable.new("var") => "a".to_pione),
|
9
|
-
Feature.and(Feature::RequisiteExpr.new("a"))
|
8
|
+
params: Parameters.new(Variable.new("var") => "a".to_pione),
|
9
|
+
features: Feature.and(Feature::RequisiteExpr.new("a"))
|
10
10
|
)
|
11
11
|
b = RuleCondition.new(
|
12
12
|
[DataExpr.new("a")],
|
13
13
|
[DataExpr.new("a")],
|
14
|
-
Parameters.new(Variable.new("var") => "a".to_pione),
|
15
|
-
Feature.and(Feature::RequisiteExpr.new("a"))
|
14
|
+
params: Parameters.new(Variable.new("var") => "a".to_pione),
|
15
|
+
features: Feature.and(Feature::RequisiteExpr.new("a"))
|
16
16
|
)
|
17
17
|
a.should == b
|
18
18
|
end
|
@@ -21,14 +21,14 @@ describe 'Model::RuleCondition' do
|
|
21
21
|
a = RuleCondition.new(
|
22
22
|
[DataExpr.new("a")],
|
23
23
|
[DataExpr.new("a")],
|
24
|
-
Parameters.new(Variable.new("var") => "a".to_pione),
|
25
|
-
Feature.and(Feature::RequisiteExpr.new("a"))
|
24
|
+
parmas: Parameters.new(Variable.new("var") => "a".to_pione),
|
25
|
+
features: Feature.and(Feature::RequisiteExpr.new("a"))
|
26
26
|
)
|
27
27
|
b = RuleCondition.new(
|
28
28
|
[DataExpr.new("b")],
|
29
29
|
[DataExpr.new("b")],
|
30
|
-
Parameters.new(Variable.new("var") => "b".to_pione),
|
31
|
-
Feature.and(Feature::RequisiteExpr.new("b"))
|
30
|
+
params: Parameters.new(Variable.new("var") => "b".to_pione),
|
31
|
+
features: Feature.and(Feature::RequisiteExpr.new("b"))
|
32
32
|
)
|
33
33
|
a.should.not == b
|
34
34
|
end
|
@@ -37,14 +37,14 @@ end
|
|
37
37
|
condition_a = RuleCondition.new(
|
38
38
|
[DataExpr.new("a")],
|
39
39
|
[DataExpr.new("a")],
|
40
|
-
Parameters.new(Variable.new("var") => "a".to_pione),
|
41
|
-
Feature.and(Feature::RequisiteExpr.new("a"))
|
40
|
+
params: Parameters.new(Variable.new("var") => "a".to_pione),
|
41
|
+
features: Feature.and(Feature::RequisiteExpr.new("a"))
|
42
42
|
)
|
43
43
|
condition_b = RuleCondition.new(
|
44
44
|
[DataExpr.new("b")],
|
45
45
|
[DataExpr.new("b")],
|
46
|
-
Parameters.new(Variable.new("var") => "b".to_pione),
|
47
|
-
Feature.and(Feature::RequisiteExpr.new("b"))
|
46
|
+
params: Parameters.new(Variable.new("var") => "b".to_pione),
|
47
|
+
features: Feature.and(Feature::RequisiteExpr.new("b"))
|
48
48
|
)
|
49
49
|
|
50
50
|
describe 'Model::ActionRule' do
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# type check
|
2
|
+
- '"integer"' : (1 | 2 | 3).type
|
3
|
+
- '"string"' : ("a" | "b" | "c").type
|
4
|
+
- '"float"' : (0.1 | 1.0 | 0.1e10).type
|
5
|
+
- '"boolean"' : (true | false).type
|
6
|
+
|
7
|
+
# each, each?, all, all?
|
8
|
+
- true : '"a".each?'
|
9
|
+
- false : '"a".all?'
|
10
|
+
- true : '"a".each.each?'
|
11
|
+
- false : '"a".each.all?'
|
12
|
+
- true : '"a".all.all?'
|
13
|
+
- false : '"a".all.each?'
|
14
|
+
|
15
|
+
# sequence
|
16
|
+
- "(1 | 2 | 3)" : ((1 | 2) | 3)
|
17
|
+
- "(1 | 2 | 3)" : (1 | (2 | 3))
|
18
|
+
|
19
|
+
# length
|
20
|
+
- true: '"abc".length == 1'
|
21
|
+
- true: '("a" | "b" | "c").length == 3'
|
22
|
+
- true: '("a" + "b" + "c").length == 1'
|
23
|
+
|
24
|
+
# []
|
25
|
+
- '"a"' : '("a" | "b" | "c")[1]'
|
26
|
+
- '"b"' : '("a" | "b" | "c")[2]'
|
27
|
+
- '"c"' : '("a" | "b" | "c")[3]'
|
28
|
+
- '"a" | "b"' : '("a" | "b" | "c")[1 | 2]'
|
29
|
+
- '"a" | "b" | "c"' : '("a" | "b" | "c")[1 | 2 | 3]'
|
30
|
+
- '"c" | "b" | "a"' : '("a" | "b" | "c")[3 | 2 | 1]'
|
31
|
+
- '"a"' : '"a"[1]'
|
32
|
+
|
33
|
+
# head
|
34
|
+
- '1' : '(1 | 2 | 3).head'
|
35
|
+
- '1' : '1.head'
|
36
|
+
|
37
|
+
# tail
|
38
|
+
- '2 | 3' : '(1 | 2 | 3).tail'
|
39
|
+
# - 'error' : '1.tail'
|
40
|
+
|
41
|
+
# last
|
42
|
+
- '3' : '(1 | 2 | 3).last'
|
43
|
+
- '1' : '1.last'
|
44
|
+
|
45
|
+
# init
|
46
|
+
- '1 | 2' : '(1 | 2 | 3).init'
|
47
|
+
# - 'error' : '1.init'
|
48
|
+
|
49
|
+
# memeber
|
50
|
+
- 'true' : '(1 | 2 | 3).member?(1)'
|
51
|
+
- 'true' : '(1 | 2 | 3).member?(2)'
|
52
|
+
- 'true' : '(1 | 2 | 3).member?(3)'
|
53
|
+
- 'false' : '(1 | 2 | 3).member?(4)'
|
54
|
+
- 'true | true | true' : '(1 | 2 | 3).member?(1 | 2 | 3)'
|
55
|
+
- 'true | false' : '(1 | 2).member?(1 | 3)'
|
56
|
+
|
57
|
+
# reverse
|
58
|
+
- '3 | 2 | 1' : '(1 | 2 | 3).reverse'
|
59
|
+
- '1' : '1.reverse'
|
60
|
+
|
data/test/model/spec_string.rb
CHANGED
@@ -20,8 +20,8 @@ describe 'Model::PioneString' do
|
|
20
20
|
|
21
21
|
it 'should expand variables' do
|
22
22
|
vtable = VariableTable.new({
|
23
|
-
Variable.new("var1") => PioneString.new("a"),
|
24
|
-
Variable.new("var2") => PioneString.new("b")
|
23
|
+
Variable.new("var1") => PioneString.new("a").to_seq,
|
24
|
+
Variable.new("var2") => PioneString.new("b").to_seq
|
25
25
|
})
|
26
26
|
PioneString.new("{$var1}:{$var2}").eval(vtable).should ==
|
27
27
|
PioneString.new("a:b")
|
@@ -35,72 +35,5 @@ describe 'Model::PioneString' do
|
|
35
35
|
PioneString.new("1 + 2 = 3")
|
36
36
|
end
|
37
37
|
|
38
|
-
|
39
|
-
it 'should true' do
|
40
|
-
@a.call_pione_method("==", PioneString.new("a")).should.true
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should false' do
|
44
|
-
@a.call_pione_method("==", @b).should.not.true
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'should raise type error' do
|
48
|
-
should.raise(PioneModelTypeError) do
|
49
|
-
@a.call_pione_method("==", PioneInteger.new(1))
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe 'pione method !=' do
|
55
|
-
it 'should true' do
|
56
|
-
@a.call_pione_method("!=", @b).should.true
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'should false' do
|
60
|
-
@a.call_pione_method("!=", PioneString.new("a")).should.not.true
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'should raise type error' do
|
64
|
-
should.raise(PioneModelTypeError) do
|
65
|
-
@a.call_pione_method("!=", PioneInteger.new(1))
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe 'pione method +' do
|
71
|
-
it 'should get appended string' do
|
72
|
-
@a.call_pione_method("+", @b).should == PioneString.new("ab")
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'should raise type error' do
|
76
|
-
should.raise(PioneModelTypeError) do
|
77
|
-
@a.call_pione_method("!=", PioneInteger.new(1))
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe 'pione method as_string' do
|
83
|
-
it 'should get string' do
|
84
|
-
@a.call_pione_method("as_string").should == @a
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
describe 'pione method length' do
|
89
|
-
it 'should get length of string' do
|
90
|
-
@a.call_pione_method("length").should == PioneInteger.new(1)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
describe 'pione method include?' do
|
95
|
-
it 'should get truth' do
|
96
|
-
PioneString.new("acd").call_pione_method("include?", @a).should.true
|
97
|
-
PioneString.new("acd").call_pione_method("include?", @b).should.false
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'should raise type error' do
|
101
|
-
should.raise(PioneModelTypeError) do
|
102
|
-
@a.call_pione_method("include?", PioneInteger.new(1))
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
38
|
+
test_pione_method("string")
|
106
39
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# ==, !=
|
2
|
+
- true : '"a" == "a"'
|
3
|
+
- false : '"a" != "a"'
|
4
|
+
- false : '"a" == "b"'
|
5
|
+
- true : '"a" != "b"'
|
6
|
+
- true : '"" == ""'
|
7
|
+
- true : '"" != "a"'
|
8
|
+
- true : '("a" | "b" | "c") == ("a" | "b" | "c")'
|
9
|
+
- true : '("a" | "b" | "c") != ("c" | "b" | "a")'
|
10
|
+
- false : '("" | "") == ""'
|
11
|
+
|
12
|
+
# +
|
13
|
+
- true : '("a" + "b") == "ab"'
|
14
|
+
- true : '("a" + "b" + "c") == "abc"'
|
15
|
+
- false : '("a" + "b" + "c") == ("a" | "b" | "c")'
|
16
|
+
- true : '(("a" | "b" | "c") + "a") == ("aa" | "ba" | "ca")'
|
17
|
+
- true : '("a" + ("a" | "b" | "c")) == ("aa" | "ab" | "ac")'
|
18
|
+
- true : '(("a" | "b" | "c") + ("a" | "b" | "c")) == ("aa" | "ab" | "ac" | "ba" | "bb" | "bc" | "ca" | "cb" | "cc")'
|
19
|
+
|
20
|
+
# include?
|
21
|
+
- true : '"abc".include?("")'
|
22
|
+
- true : '"abc".include?("a")'
|
23
|
+
- true : '"abc".include?("ab")'
|
24
|
+
- true : '"abc".include?("bc")'
|
25
|
+
- true : '"abc".include?("abc")'
|
26
|
+
- false : '"abc".include?("abcd")'
|
27
|
+
- 'true | true | true' : '("a" | "b" | "c").include?("")'
|
28
|
+
- 'true | false | false' : '("a" | "b" | "c").include?("a")'
|
29
|
+
- 'false | false | false' : '("a" | "b" | "c").include?("ab")'
|
30
|
+
- 'false | false | false' : '("a" | "b" | "c").include?("abc")'
|
31
|
+
- 'false | false | false' : '("a" | "b" | "c").include?("abcd")'
|
32
|
+
- 'false | false | false' : '"".include?("a" | "b" | "c")'
|
33
|
+
- 'true | false | false' : '"a".include?("a" | "b" | "c")'
|
34
|
+
- 'true | true | false' : '"ab".include?("a" | "b" | "c")'
|
35
|
+
- 'true | true | true' : '"abc".include?("a" | "b" | "c")'
|
36
|
+
- 'true | true | true' : '"abc".include?("c" | "b" | "a")'
|
37
|
+
- 'true | false | false | false | true | false | false | false | true' : '("a" | "b" | "c").include?("a" | "b" | "c")'
|
38
|
+
|
39
|
+
# insert
|
40
|
+
- '"Xabc"' : '"abc".insert(1, "X")'
|
41
|
+
- '"aXbc"' : '"abc".insert(2, "X")'
|
42
|
+
- '"abXc"' : '"abc".insert(3, "X")'
|
43
|
+
- '"abcX"' : '"abc".insert(4, "X")'
|
44
|
+
- '"Xabc" | "aXbc" | "abXc" | "abcX"' : '"abc".insert(1 | 2 | 3 | 4, "X")'
|
45
|
+
|
46
|
+
# count
|
47
|
+
- true: '"".count == 0'
|
48
|
+
- true: '"a".count == 1'
|
49
|
+
- true: '"ab".count == 2'
|
50
|
+
- true: '"abc".count == 3'
|
51
|
+
- true: '" ".count == 1'
|
52
|
+
|
53
|
+
# substring
|
54
|
+
- '""' : '"abc".substring(1,0)'
|
55
|
+
- '"a"' : '"abc".substring(1,1)'
|
56
|
+
- '"ab"' : '"abc".substring(1,2)'
|
57
|
+
- '"abc"' : '"abc".substring(1,3)'
|
58
|
+
- '"abc"' : '"abc".substring(1,4)'
|
59
|
+
- '"a" | "b" | "c"' : '"abc".substring(1 | 2 | 3, 1)'
|
60
|
+
- '"a" | "ab" | "abc"' : '"abc".substring(1, 1 | 2 | 3)'
|
61
|
+
- '"a" | "ab" | "abc" | "b" | "bc" | "bc" | "c" | "c" | "c"' : '"abc".substring(1 | 2 | 3, 1 | 2 | 3)'
|
62
|
+
|
63
|
+
# []
|
64
|
+
- true: '"abc"[0] == "abc"'
|
65
|
+
- true: '("a" | "b" | "c")[0] == "abc"'
|
66
|
+
|
67
|
+
# as_integer, i
|
68
|
+
- "1" : '"1".as_integer'
|
69
|
+
- "1" : '"1".i'
|
70
|
+
- "10" : '"10".i'
|
71
|
+
- "100" : '"100".i'
|
72
|
+
- "1" : '"01".i'
|
73
|
+
- "10" : '"010".i'
|
74
|
+
- "100" : '"0100".i'
|
75
|
+
- "-1" : '"-1".i'
|
76
|
+
- "(1 | 2 | 3)" : '("1" | "2" | "3").i'
|
77
|
+
|
78
|
+
# as_float, f
|
79
|
+
- "1.0" : '"1.0".as_float'
|
80
|
+
- "1.0" : '"1.0".f'
|
81
|
+
- "0.1" : '"0.1".f'
|
82
|
+
- "0.1e10" : '"0.1e10".f'
|
83
|
+
- "(0.1 | 1.0 | 0.1e10)" : '("0.1" | "1.0" | "0.1e10").f'
|
@@ -1,67 +1,17 @@
|
|
1
1
|
require_relative '../test-util'
|
2
2
|
|
3
3
|
describe 'Model::TicketExpr' do
|
4
|
-
it 'should get empty ticket expression' do
|
5
|
-
TicketExpr.empty.should.empty
|
6
|
-
end
|
7
|
-
|
8
4
|
it 'should equal between same name ticket expressions' do
|
9
|
-
TicketExpr.new(
|
5
|
+
TicketExpr.new("T").should == TicketExpr.new("T")
|
10
6
|
end
|
11
7
|
|
12
8
|
it 'should not equal' do
|
13
|
-
TicketExpr.new(
|
9
|
+
TicketExpr.new("T").should.not == TicketExpr.new("t")
|
14
10
|
end
|
15
11
|
|
16
12
|
it 'should get names' do
|
17
|
-
TicketExpr.new(
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'should make complex ticket' do
|
21
|
-
(TicketExpr.new(["T1"]) + TicketExpr.new(["T2"])).should == TicketExpr.new(["T1", "T2"])
|
22
|
-
end
|
23
|
-
|
24
|
-
describe 'pione method: ==' do
|
25
|
-
it 'should true' do
|
26
|
-
TicketExpr.new(["T"]).call_pione_method("==", TicketExpr.new(["T"])).should.true
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should false' do
|
30
|
-
TicketExpr.new(["T"]).call_pione_method("==", TicketExpr.new(["t"])).should.not.true
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'should raise type error' do
|
34
|
-
should.raise(PioneModelTypeError) do
|
35
|
-
TicketExpr.new(["T"]).call_pione_method("==", PioneString.new("T"))
|
36
|
-
end
|
37
|
-
end
|
13
|
+
TicketExpr.new("T").name.should == "T"
|
38
14
|
end
|
39
15
|
|
40
|
-
|
41
|
-
it 'should true' do
|
42
|
-
TicketExpr.new(["T"]).call_pione_method("!=", TicketExpr.new(["t"])).should.true
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'should false' do
|
46
|
-
TicketExpr.new(["T"]).call_pione_method("!=", TicketExpr.new(["T"])).should.false
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'should raise type error' do
|
50
|
-
should.raise(PioneModelTypeError) do
|
51
|
-
TicketExpr.new(["T"]).call_pione_method("==", PioneString.new("T"))
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe 'pione method: +' do
|
57
|
-
it 'should make complex ticket expression' do
|
58
|
-
TicketExpr.new(["T1"]).call_pione_method("+", TicketExpr.new(["T2"]))
|
59
|
-
.should == TicketExpr.new(["T1", "T2"])
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'should get itself' do
|
63
|
-
TicketExpr.new(["T"]).call_pione_method("+", TicketExpr.new(["T"]))
|
64
|
-
.should == TicketExpr.new(["T"])
|
65
|
-
end
|
66
|
-
end
|
16
|
+
test_pione_method("ticket-expr")
|
67
17
|
end
|
@@ -3,9 +3,9 @@ require_relative '../test-util'
|
|
3
3
|
describe 'Model::VariableTable' do
|
4
4
|
before do
|
5
5
|
@table = VariableTable.new
|
6
|
-
@table.set(Variable.new('A'), PioneInteger.new(1))
|
7
|
-
@table.set(Variable.new('B'), PioneInteger.new(2))
|
8
|
-
@table.set(Variable.new('C'), PioneInteger.new(3))
|
6
|
+
@table.set(Variable.new('A'), PioneInteger.new(1).to_seq)
|
7
|
+
@table.set(Variable.new('B'), PioneInteger.new(2).to_seq)
|
8
|
+
@table.set(Variable.new('C'), PioneInteger.new(3).to_seq)
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'should get an empty table' do
|
@@ -13,9 +13,9 @@ describe 'Model::VariableTable' do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'should get a variable value' do
|
16
|
-
@table.get(Variable.new('A')).should == PioneInteger.new(1)
|
17
|
-
@table.get(Variable.new('B')).should == PioneInteger.new(2)
|
18
|
-
@table.get(Variable.new('C')).should == PioneInteger.new(3)
|
16
|
+
@table.get(Variable.new('A')).should == PioneInteger.new(1).to_seq
|
17
|
+
@table.get(Variable.new('B')).should == PioneInteger.new(2).to_seq
|
18
|
+
@table.get(Variable.new('C')).should == PioneInteger.new(3).to_seq
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'should get nil if the variable is unknown in the table' do
|
@@ -29,9 +29,9 @@ describe 'Model::VariableTable' do
|
|
29
29
|
|
30
30
|
it 'should not raise errors by binding same value as same name variable' do
|
31
31
|
should.not.raise(VariableBindingError) do
|
32
|
-
@table.set(Variable.new('A'), PioneInteger.new(1))
|
33
|
-
@table.set(Variable.new('B'), PioneInteger.new(2))
|
34
|
-
@table.set(Variable.new('C'), PioneInteger.new(3))
|
32
|
+
@table.set(Variable.new('A'), PioneInteger.new(1).to_seq)
|
33
|
+
@table.set(Variable.new('B'), PioneInteger.new(2).to_seq)
|
34
|
+
@table.set(Variable.new('C'), PioneInteger.new(3).to_seq)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -69,49 +69,48 @@ describe 'Model::VariableTable' do
|
|
69
69
|
|
70
70
|
it 'should have input auto variables' do
|
71
71
|
input_exprs = [
|
72
|
-
DataExpr.new('*.a'),
|
73
|
-
DataExpr.new('*.b').
|
72
|
+
DataExpr.new('*.a').to_seq,
|
73
|
+
DataExpr.new('*.b').to_seq.set_all
|
74
74
|
]
|
75
75
|
input_tuples = [
|
76
|
-
Tuple[:data].new(name: '1.a',
|
77
|
-
[ Tuple[:data].new(name: '1.b',
|
78
|
-
Tuple[:data].new(name: '2.b',
|
79
|
-
Tuple[:data].new(name: '3.b',
|
76
|
+
Tuple[:data].new(name: '1.a', location: Location['test']),
|
77
|
+
[ Tuple[:data].new(name: '1.b', location: Location['test1']),
|
78
|
+
Tuple[:data].new(name: '2.b', location: Location['test2']),
|
79
|
+
Tuple[:data].new(name: '3.b', location: Location['test3'])]
|
80
80
|
]
|
81
81
|
|
82
82
|
@table.make_input_auto_variables(input_exprs, input_tuples)
|
83
83
|
|
84
84
|
input = @table.get(Variable.new('I'))
|
85
|
-
input.should.kind_of(
|
85
|
+
input.should.kind_of(KeyedSequence)
|
86
86
|
input.should == @table.get(Variable.new('INPUT'))
|
87
87
|
|
88
|
-
input1 = input
|
89
|
-
input1.should.kind_of(
|
90
|
-
input1.
|
91
|
-
input1.
|
92
|
-
input1.
|
93
|
-
input1.
|
94
|
-
input1.
|
88
|
+
input1 = input.get(PioneInteger.new(1)).first
|
89
|
+
input1.should.kind_of(DataExpr)
|
90
|
+
input1.should == DataExpr.new("1.a")
|
91
|
+
input1.matched_data.size.should == 2
|
92
|
+
input1.matched_data[0].should == "1.a"
|
93
|
+
input1.matched_data[1].should == "1"
|
94
|
+
input1.location.should == Location["test"]
|
95
95
|
|
96
|
-
input2 = input
|
97
|
-
input2.should.kind_of(RuleIOList)
|
96
|
+
input2 = input.get(PioneInteger.new(2))
|
98
97
|
input2.size.should == 3
|
99
|
-
input2[0].should.kind_of(
|
100
|
-
input2[0].name.should == "1.b"
|
101
|
-
input2[0].
|
102
|
-
input2[0].
|
103
|
-
input2[0].
|
104
|
-
input2[1].should.kind_of(
|
105
|
-
input2[1].name.should == "2.b"
|
106
|
-
input2[1].
|
107
|
-
input2[1].
|
108
|
-
input2[1].
|
109
|
-
input2[2].should.kind_of(
|
110
|
-
input2[2].name.should == "3.b"
|
111
|
-
input2[2].
|
112
|
-
input2[2].
|
113
|
-
input2[2].
|
114
|
-
|
115
|
-
@table.get(Variable.new('*')).should == PioneString.new('1')
|
98
|
+
input2[0].should.kind_of(DataExpr)
|
99
|
+
input2[0].name.should == "1.b"
|
100
|
+
input2[0].matched_data.size.should == 2
|
101
|
+
input2[0].matched_data[0].should == "1.b"
|
102
|
+
input2[0].matched_data[1].should == "1"
|
103
|
+
input2[1].should.kind_of(DataExpr)
|
104
|
+
input2[1].name.should == "2.b"
|
105
|
+
input2[1].matched_data.size.should == 2
|
106
|
+
input2[1].matched_data[0].should == "2.b"
|
107
|
+
input2[1].matched_data[1].should == "2"
|
108
|
+
input2[2].should.kind_of(DataExpr)
|
109
|
+
input2[2].name.should == "3.b"
|
110
|
+
input2[2].matched_data.size.should == 2
|
111
|
+
input2[2].matched_data[0].should == "3.b"
|
112
|
+
input2[2].matched_data[1].should == "3"
|
113
|
+
|
114
|
+
@table.get(Variable.new('*')).should == StringSequence.new([PioneString.new('1')], separator: ":")
|
116
115
|
end
|
117
116
|
end
|
data/test/model/spec_variable.rb
CHANGED
@@ -16,23 +16,22 @@ describe 'Model::Variable' do
|
|
16
16
|
|
17
17
|
describe 'pione method ==' do
|
18
18
|
it 'should true' do
|
19
|
-
@a.call_pione_method("==", @a).should.true
|
20
19
|
vtable = VariableTable.new
|
21
|
-
vtable.set(@a, PioneInteger.new(1))
|
22
|
-
vtable.set(@b, PioneInteger.new(1))
|
23
|
-
BinaryOperator.new("==", @a, @b).eval(vtable).should.true
|
20
|
+
vtable.set(@a, PioneInteger.new(1).to_seq)
|
21
|
+
vtable.set(@b, PioneInteger.new(1).to_seq)
|
22
|
+
BinaryOperator.new("==", @a, @b).eval(vtable).should == PioneBoolean.new(true).to_seq
|
24
23
|
end
|
25
24
|
|
26
25
|
it 'should false' do
|
27
26
|
vtable = VariableTable.new
|
28
|
-
vtable.set(@a, PioneInteger.new(1))
|
29
|
-
vtable.set(@b, PioneInteger.new(2))
|
30
|
-
BinaryOperator.new("==", @a, @b).eval(vtable).should.false
|
27
|
+
vtable.set(@a, PioneInteger.new(1).to_seq)
|
28
|
+
vtable.set(@b, PioneInteger.new(2).to_seq)
|
29
|
+
BinaryOperator.new("==", @a, @b).eval(vtable).should == PioneBoolean.new(false).to_seq
|
31
30
|
end
|
32
31
|
|
33
32
|
it 'should raise unbound variable error' do
|
34
33
|
vtable = VariableTable.new
|
35
|
-
vtable.set(@a, PioneInteger.new(1))
|
34
|
+
vtable.set(@a, PioneInteger.new(1).to_seq)
|
36
35
|
should.raise(UnboundVariableError) do
|
37
36
|
BinaryOperator.new("==", @a, @b).eval(vtable)
|
38
37
|
end
|
@@ -40,9 +39,9 @@ describe 'Model::Variable' do
|
|
40
39
|
|
41
40
|
it 'should raise type error' do
|
42
41
|
vtable = VariableTable.new
|
43
|
-
vtable.set(@a, PioneInteger.new(1))
|
44
|
-
vtable.set(@b, PioneFloat.new(1.0))
|
45
|
-
should.raise(
|
42
|
+
vtable.set(@a, PioneInteger.new(1).to_seq)
|
43
|
+
vtable.set(@b, PioneFloat.new(1.0).to_seq)
|
44
|
+
should.raise(MethodNotFound) do
|
46
45
|
BinaryOperator.new("==", @a, @b).eval(vtable)
|
47
46
|
end
|
48
47
|
end
|
@@ -51,22 +50,21 @@ describe 'Model::Variable' do
|
|
51
50
|
describe 'pione method !=' do
|
52
51
|
it 'should true' do
|
53
52
|
vtable = VariableTable.new
|
54
|
-
vtable.set(@a, PioneInteger.new(1))
|
55
|
-
vtable.set(@b, PioneInteger.new(2))
|
56
|
-
BinaryOperator.new("!=", @a, @b).eval(vtable).should.true
|
53
|
+
vtable.set(@a, PioneInteger.new(1).to_seq)
|
54
|
+
vtable.set(@b, PioneInteger.new(2).to_seq)
|
55
|
+
BinaryOperator.new("!=", @a, @b).eval(vtable).should == PioneBoolean.new(true).to_seq
|
57
56
|
end
|
58
57
|
|
59
58
|
it 'should false' do
|
60
|
-
@a.call_pione_method("!=", @a).should.false
|
61
59
|
vtable = VariableTable.new
|
62
|
-
vtable.set(@a, PioneInteger.new(1))
|
63
|
-
vtable.set(@b, PioneInteger.new(1))
|
64
|
-
BinaryOperator.new("!=", @a, @b).eval(vtable).should.false
|
60
|
+
vtable.set(@a, PioneInteger.new(1).to_seq)
|
61
|
+
vtable.set(@b, PioneInteger.new(1).to_seq)
|
62
|
+
BinaryOperator.new("!=", @a, @b).eval(vtable).should == PioneBoolean.new(false).to_seq
|
65
63
|
end
|
66
64
|
|
67
65
|
it 'should raise unbound variable error' do
|
68
66
|
vtable = VariableTable.new
|
69
|
-
vtable.set(@a, PioneInteger.new(1))
|
67
|
+
vtable.set(@a, PioneInteger.new(1).to_seq)
|
70
68
|
should.raise(UnboundVariableError) do
|
71
69
|
BinaryOperator.new("!=", @a, @b).eval(vtable)
|
72
70
|
end
|
@@ -74,9 +72,9 @@ describe 'Model::Variable' do
|
|
74
72
|
|
75
73
|
it 'should raise type error' do
|
76
74
|
vtable = VariableTable.new
|
77
|
-
vtable.set(@a, PioneInteger.new(1))
|
78
|
-
vtable.set(@b, PioneFloat.new(1.0))
|
79
|
-
should.raise(
|
75
|
+
vtable.set(@a, PioneInteger.new(1).to_seq)
|
76
|
+
vtable.set(@b, PioneFloat.new(1.0).to_seq)
|
77
|
+
should.raise(MethodNotFound) do
|
80
78
|
BinaryOperator.new("!=", @a, @b).eval(vtable)
|
81
79
|
end
|
82
80
|
end
|