expressir 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/demo.rb +16 -0
  4. data/expressir.gemspec +1 -0
  5. data/generate-parser.sh +29 -0
  6. data/lib/expressir/express_exp/generated/ExpressBaseVisitor.rb +779 -0
  7. data/lib/expressir/express_exp/generated/ExpressLexer.rb +841 -0
  8. data/lib/expressir/express_exp/generated/ExpressParser.rb +12136 -0
  9. data/lib/expressir/express_exp/generated/ExpressVisitor.rb +394 -0
  10. data/lib/expressir/express_exp/parser.rb +25 -0
  11. data/lib/expressir/express_exp/visitor.rb +2103 -0
  12. data/lib/expressir/model/constant.rb +15 -0
  13. data/lib/expressir/model/derived.rb +15 -0
  14. data/lib/expressir/model/entity.rb +29 -0
  15. data/lib/expressir/model/explicit.rb +15 -0
  16. data/lib/expressir/model/expressions/aggregate_element.rb +15 -0
  17. data/lib/expressir/model/expressions/attribute_qualifier.rb +13 -0
  18. data/lib/expressir/model/expressions/entity_constructor.rb +15 -0
  19. data/lib/expressir/model/expressions/expression.rb +15 -0
  20. data/lib/expressir/model/expressions/function_call.rb +15 -0
  21. data/lib/expressir/model/expressions/group_qualifier.rb +13 -0
  22. data/lib/expressir/model/expressions/index_qualifier.rb +15 -0
  23. data/lib/expressir/model/expressions/interval.rb +21 -0
  24. data/lib/expressir/model/expressions/qualified_ref.rb +15 -0
  25. data/lib/expressir/model/expressions/query.rb +17 -0
  26. data/lib/expressir/model/expressions/unknown.rb +8 -0
  27. data/lib/expressir/model/function.rb +23 -0
  28. data/lib/expressir/model/inverse.rb +15 -0
  29. data/lib/expressir/model/local.rb +15 -0
  30. data/lib/expressir/model/operators/addition.rb +8 -0
  31. data/lib/expressir/model/operators/and.rb +8 -0
  32. data/lib/expressir/model/operators/andor.rb +8 -0
  33. data/lib/expressir/model/operators/combine.rb +8 -0
  34. data/lib/expressir/model/operators/equal.rb +8 -0
  35. data/lib/expressir/model/operators/exponentiation.rb +8 -0
  36. data/lib/expressir/model/operators/greater_than.rb +8 -0
  37. data/lib/expressir/model/operators/greater_than_or_equal.rb +8 -0
  38. data/lib/expressir/model/operators/in.rb +8 -0
  39. data/lib/expressir/model/operators/instance_equal.rb +8 -0
  40. data/lib/expressir/model/operators/instance_not_equal.rb +8 -0
  41. data/lib/expressir/model/operators/integer_division.rb +8 -0
  42. data/lib/expressir/model/operators/less_than.rb +8 -0
  43. data/lib/expressir/model/operators/less_than_or_equal.rb +8 -0
  44. data/lib/expressir/model/operators/like.rb +8 -0
  45. data/lib/expressir/model/operators/modulo.rb +8 -0
  46. data/lib/expressir/model/operators/multiplication.rb +8 -0
  47. data/lib/expressir/model/operators/not.rb +8 -0
  48. data/lib/expressir/model/operators/not_equal.rb +8 -0
  49. data/lib/expressir/model/operators/oneof.rb +8 -0
  50. data/lib/expressir/model/operators/or.rb +8 -0
  51. data/lib/expressir/model/operators/real_division.rb +8 -0
  52. data/lib/expressir/model/operators/subtraction.rb +8 -0
  53. data/lib/expressir/model/operators/unary_minus.rb +8 -0
  54. data/lib/expressir/model/operators/unary_plus.rb +8 -0
  55. data/lib/expressir/model/operators/xor.rb +8 -0
  56. data/lib/expressir/model/parameter.rb +15 -0
  57. data/lib/expressir/model/procedure.rb +21 -0
  58. data/lib/expressir/model/ref.rb +11 -0
  59. data/lib/expressir/model/reference.rb +13 -0
  60. data/lib/expressir/model/renamed_ref.rb +13 -0
  61. data/lib/expressir/model/repository.rb +11 -0
  62. data/lib/expressir/model/rule.rb +23 -0
  63. data/lib/expressir/model/schema.rb +41 -0
  64. data/lib/expressir/model/statements/alias.rb +17 -0
  65. data/lib/expressir/model/statements/assignment.rb +15 -0
  66. data/lib/expressir/model/statements/case.rb +17 -0
  67. data/lib/expressir/model/statements/case_action.rb +15 -0
  68. data/lib/expressir/model/statements/compound.rb +13 -0
  69. data/lib/expressir/model/statements/escape.rb +8 -0
  70. data/lib/expressir/model/statements/if.rb +17 -0
  71. data/lib/expressir/model/statements/null.rb +8 -0
  72. data/lib/expressir/model/statements/procedure_call.rb +15 -0
  73. data/lib/expressir/model/statements/repeat.rb +25 -0
  74. data/lib/expressir/model/statements/return.rb +13 -0
  75. data/lib/expressir/model/statements/skip.rb +8 -0
  76. data/lib/expressir/model/subtype_constraint.rb +19 -0
  77. data/lib/expressir/model/type.rb +15 -0
  78. data/lib/expressir/model/types/aggregate.rb +15 -0
  79. data/lib/expressir/model/types/array.rb +21 -0
  80. data/lib/expressir/model/types/bag.rb +17 -0
  81. data/lib/expressir/model/types/binary.rb +15 -0
  82. data/lib/expressir/model/types/boolean.rb +8 -0
  83. data/lib/expressir/model/types/enumeration.rb +19 -0
  84. data/lib/expressir/model/types/generic.rb +13 -0
  85. data/lib/expressir/model/types/generic_entity.rb +13 -0
  86. data/lib/expressir/model/types/integer.rb +8 -0
  87. data/lib/expressir/model/types/list.rb +19 -0
  88. data/lib/expressir/model/types/logical.rb +8 -0
  89. data/lib/expressir/model/types/number.rb +8 -0
  90. data/lib/expressir/model/types/real.rb +13 -0
  91. data/lib/expressir/model/types/select.rb +21 -0
  92. data/lib/expressir/model/types/set.rb +17 -0
  93. data/lib/expressir/model/types/string.rb +15 -0
  94. data/lib/expressir/model/unique.rb +13 -0
  95. data/lib/expressir/model/use.rb +13 -0
  96. data/lib/expressir/model/where.rb +13 -0
  97. data/lib/expressir/version.rb +1 -1
  98. data/original/examples/syntax/syntax.exp +295 -0
  99. data/spec/expressir/express_exp/ap233_spec.rb +22 -0
  100. data/spec/expressir/express_exp/syntax_spec.rb +2640 -0
  101. metadata +115 -5
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+ require_relative "../../../lib/expressir/express_exp/parser"
3
+
4
+ RSpec.describe Expressir::ExpressExp::Parser do
5
+ describe ".from_file" do
6
+ it "build an instance from a file" do
7
+ repo = Expressir::ExpressExp::Parser.from_exp(sample_file)
8
+
9
+ schemas = repo.schemas
10
+ expect(schemas.count).to eq(1)
11
+
12
+ schema = schemas.first
13
+ expect(schema.id).to eq("Ap233_systems_engineering_arm_LF")
14
+ end
15
+ end
16
+
17
+ def sample_file
18
+ @sample_file ||= Expressir.root_path.join(
19
+ "original", "examples", "ap233", "ap233e1_arm_lf_stepmod-2010-11-12.exp"
20
+ )
21
+ end
22
+ end
@@ -0,0 +1,2640 @@
1
+ require "spec_helper"
2
+ require_relative "../../../lib/expressir/express_exp/parser"
3
+
4
+ RSpec.describe Expressir::ExpressExp::Parser do
5
+ describe ".from_file" do
6
+ it "build an instance from a file" do
7
+ repo = Expressir::ExpressExp::Parser.from_exp(sample_file)
8
+
9
+ schemas = repo.schemas
10
+
11
+ schema = schemas.find{|x| x.id == "syntaxSchema"}
12
+ expect(schema.version).to eq("version")
13
+
14
+ interfaces = schema.interfaces
15
+ constants = schema.constants
16
+ types = schema.types
17
+ entities = schema.entities
18
+ subtype_constraints = schema.subtype_constraints
19
+ functions = schema.functions
20
+ procedures = schema.procedures
21
+ rules = schema.rules
22
+
23
+ # intefaces
24
+ interfaces.find{|x| x.schema.id == "useInterface"}.tap do |x|
25
+ expect(x).to be_instance_of(Expressir::Model::Use)
26
+ end
27
+
28
+ interfaces.find{|x| x.schema.id == "useItemInterface"}.tap do |x|
29
+ expect(x).to be_instance_of(Expressir::Model::Use)
30
+ expect(x.items).to be_instance_of(Array)
31
+ expect(x.items.count).to eq(1)
32
+ expect(x.items[0]).to be_instance_of(Expressir::Model::Ref)
33
+ expect(x.items[0].id).to eq("test")
34
+ end
35
+
36
+ interfaces.find{|x| x.schema.id == "useItemRenameInterface"}.tap do |x|
37
+ expect(x).to be_instance_of(Expressir::Model::Use)
38
+ expect(x.items).to be_instance_of(Array)
39
+ expect(x.items.count).to eq(1)
40
+ expect(x.items[0]).to be_instance_of(Expressir::Model::RenamedRef)
41
+ expect(x.items[0].ref).to be_instance_of(Expressir::Model::Ref)
42
+ expect(x.items[0].ref.id).to eq("test")
43
+ expect(x.items[0].id).to eq("test2")
44
+ end
45
+
46
+ interfaces.find{|x| x.schema.id == "referenceInterface"}.tap do |x|
47
+ expect(x).to be_instance_of(Expressir::Model::Reference)
48
+ end
49
+
50
+ interfaces.find{|x| x.schema.id == "referenceItemInterface"}.tap do |x|
51
+ expect(x).to be_instance_of(Expressir::Model::Reference)
52
+ expect(x.items).to be_instance_of(Array)
53
+ expect(x.items.count).to eq(1)
54
+ expect(x.items[0]).to be_instance_of(Expressir::Model::Ref)
55
+ expect(x.items[0].id).to eq("test")
56
+ end
57
+
58
+ interfaces.find{|x| x.schema.id == "referenceItemRenameInterface"}.tap do |x|
59
+ expect(x).to be_instance_of(Expressir::Model::Reference)
60
+ expect(x.items).to be_instance_of(Array)
61
+ expect(x.items.count).to eq(1)
62
+ expect(x.items[0]).to be_instance_of(Expressir::Model::RenamedRef)
63
+ expect(x.items[0].ref).to be_instance_of(Expressir::Model::Ref)
64
+ expect(x.items[0].ref.id).to eq("test")
65
+ expect(x.items[0].id).to eq("test2")
66
+ end
67
+
68
+ # literals
69
+ constants.find{|x| x.id == "binaryExpression"}.expression.tap do |x|
70
+ expect(x).to eq("xxx")
71
+ end
72
+
73
+ constants.find{|x| x.id == "integerExpression"}.expression.tap do |x|
74
+ expect(x).to eq(999)
75
+ end
76
+
77
+ constants.find{|x| x.id == "logicalTrueExpression"}.expression.tap do |x|
78
+ expect(x).to eq(true)
79
+ end
80
+
81
+ constants.find{|x| x.id == "logicalFalseExpression"}.expression.tap do |x|
82
+ expect(x).to eq(false)
83
+ end
84
+
85
+ constants.find{|x| x.id == "logicalUnknownExpression"}.expression.tap do |x|
86
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Unknown)
87
+ end
88
+
89
+ constants.find{|x| x.id == "realExpression"}.expression.tap do |x|
90
+ expect(x).to eq(999.999)
91
+ end
92
+
93
+ constants.find{|x| x.id == "stringSimpleExpression"}.expression.tap do |x|
94
+ expect(x).to eq("xxx")
95
+ end
96
+
97
+ constants.find{|x| x.id == "stringEncodedExpression"}.expression.tap do |x|
98
+ expect(x).to eq("xxx")
99
+ end
100
+
101
+ # constants
102
+ constants.find{|x| x.id == "constEExpression"}.expression.tap do |x|
103
+ expect(x).to be_instance_of(Expressir::Model::Ref)
104
+ expect(x.id).to eq("CONST_E")
105
+ end
106
+
107
+ constants.find{|x| x.id == "indeterminateExpression"}.expression.tap do |x|
108
+ expect(x).to be_instance_of(Expressir::Model::Ref)
109
+ expect(x.id).to eq("?")
110
+ end
111
+
112
+ constants.find{|x| x.id == "piExpression"}.expression.tap do |x|
113
+ expect(x).to be_instance_of(Expressir::Model::Ref)
114
+ expect(x.id).to eq("PI")
115
+ end
116
+
117
+ constants.find{|x| x.id == "selfExpression"}.expression.tap do |x|
118
+ expect(x).to be_instance_of(Expressir::Model::Ref)
119
+ expect(x.id).to eq("SELF")
120
+ end
121
+
122
+ # functions
123
+ constants.find{|x| x.id == "absExpression"}.expression.tap do |x|
124
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
125
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
126
+ expect(x.function.id).to eq("ABS")
127
+ expect(x.parameters).to be_instance_of(Array)
128
+ expect(x.parameters.count).to eq(1)
129
+ expect(x.parameters[0]).to eq(true)
130
+ end
131
+
132
+ constants.find{|x| x.id == "acosExpression"}.expression.tap do |x|
133
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
134
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
135
+ expect(x.function.id).to eq("ACOS")
136
+ expect(x.parameters).to be_instance_of(Array)
137
+ expect(x.parameters.count).to eq(1)
138
+ expect(x.parameters[0]).to eq(true)
139
+ end
140
+
141
+ constants.find{|x| x.id == "asinExpression"}.expression.tap do |x|
142
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
143
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
144
+ expect(x.function.id).to eq("ASIN")
145
+ expect(x.parameters).to be_instance_of(Array)
146
+ expect(x.parameters.count).to eq(1)
147
+ expect(x.parameters[0]).to eq(true)
148
+ end
149
+
150
+ constants.find{|x| x.id == "atanExpression"}.expression.tap do |x|
151
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
152
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
153
+ expect(x.function.id).to eq("ATAN")
154
+ expect(x.parameters).to be_instance_of(Array)
155
+ expect(x.parameters.count).to eq(1)
156
+ expect(x.parameters[0]).to eq(true)
157
+ end
158
+
159
+ constants.find{|x| x.id == "blengthExpression"}.expression.tap do |x|
160
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
161
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
162
+ expect(x.function.id).to eq("BLENGTH")
163
+ expect(x.parameters).to be_instance_of(Array)
164
+ expect(x.parameters.count).to eq(1)
165
+ expect(x.parameters[0]).to eq(true)
166
+ end
167
+
168
+ constants.find{|x| x.id == "cosExpression"}.expression.tap do |x|
169
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
170
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
171
+ expect(x.function.id).to eq("COS")
172
+ expect(x.parameters).to be_instance_of(Array)
173
+ expect(x.parameters.count).to eq(1)
174
+ expect(x.parameters[0]).to eq(true)
175
+ end
176
+
177
+ constants.find{|x| x.id == "existsExpression"}.expression.tap do |x|
178
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
179
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
180
+ expect(x.function.id).to eq("EXISTS")
181
+ expect(x.parameters).to be_instance_of(Array)
182
+ expect(x.parameters.count).to eq(1)
183
+ expect(x.parameters[0]).to eq(true)
184
+ end
185
+
186
+ constants.find{|x| x.id == "expExpression"}.expression.tap do |x|
187
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
188
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
189
+ expect(x.function.id).to eq("EXP")
190
+ expect(x.parameters).to be_instance_of(Array)
191
+ expect(x.parameters.count).to eq(1)
192
+ expect(x.parameters[0]).to eq(true)
193
+ end
194
+
195
+ constants.find{|x| x.id == "formatExpression"}.expression.tap do |x|
196
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
197
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
198
+ expect(x.function.id).to eq("FORMAT")
199
+ expect(x.parameters).to be_instance_of(Array)
200
+ expect(x.parameters.count).to eq(1)
201
+ expect(x.parameters[0]).to eq(true)
202
+ end
203
+
204
+ constants.find{|x| x.id == "hiboundExpression"}.expression.tap do |x|
205
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
206
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
207
+ expect(x.function.id).to eq("HIBOUND")
208
+ expect(x.parameters).to be_instance_of(Array)
209
+ expect(x.parameters.count).to eq(1)
210
+ expect(x.parameters[0]).to eq(true)
211
+ end
212
+
213
+ constants.find{|x| x.id == "hiindexExpression"}.expression.tap do |x|
214
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
215
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
216
+ expect(x.function.id).to eq("HIINDEX")
217
+ expect(x.parameters).to be_instance_of(Array)
218
+ expect(x.parameters.count).to eq(1)
219
+ expect(x.parameters[0]).to eq(true)
220
+ end
221
+
222
+ constants.find{|x| x.id == "lengthExpression"}.expression.tap do |x|
223
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
224
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
225
+ expect(x.function.id).to eq("LENGTH")
226
+ expect(x.parameters).to be_instance_of(Array)
227
+ expect(x.parameters.count).to eq(1)
228
+ expect(x.parameters[0]).to eq(true)
229
+ end
230
+
231
+ constants.find{|x| x.id == "loboundExpression"}.expression.tap do |x|
232
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
233
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
234
+ expect(x.function.id).to eq("LOBOUND")
235
+ expect(x.parameters).to be_instance_of(Array)
236
+ expect(x.parameters.count).to eq(1)
237
+ expect(x.parameters[0]).to eq(true)
238
+ end
239
+
240
+ constants.find{|x| x.id == "loindexExpression"}.expression.tap do |x|
241
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
242
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
243
+ expect(x.function.id).to eq("LOINDEX")
244
+ expect(x.parameters).to be_instance_of(Array)
245
+ expect(x.parameters.count).to eq(1)
246
+ expect(x.parameters[0]).to eq(true)
247
+ end
248
+
249
+ constants.find{|x| x.id == "logExpression"}.expression.tap do |x|
250
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
251
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
252
+ expect(x.function.id).to eq("LOG")
253
+ expect(x.parameters).to be_instance_of(Array)
254
+ expect(x.parameters.count).to eq(1)
255
+ expect(x.parameters[0]).to eq(true)
256
+ end
257
+
258
+ constants.find{|x| x.id == "log2Expression"}.expression.tap do |x|
259
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
260
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
261
+ expect(x.function.id).to eq("LOG2")
262
+ expect(x.parameters).to be_instance_of(Array)
263
+ expect(x.parameters.count).to eq(1)
264
+ expect(x.parameters[0]).to eq(true)
265
+ end
266
+
267
+ constants.find{|x| x.id == "log10Expression"}.expression.tap do |x|
268
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
269
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
270
+ expect(x.function.id).to eq("LOG10")
271
+ expect(x.parameters).to be_instance_of(Array)
272
+ expect(x.parameters.count).to eq(1)
273
+ expect(x.parameters[0]).to eq(true)
274
+ end
275
+
276
+ constants.find{|x| x.id == "nvlExpression"}.expression.tap do |x|
277
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
278
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
279
+ expect(x.function.id).to eq("NVL")
280
+ expect(x.parameters).to be_instance_of(Array)
281
+ expect(x.parameters.count).to eq(1)
282
+ expect(x.parameters[0]).to eq(true)
283
+ end
284
+
285
+ constants.find{|x| x.id == "oddExpression"}.expression.tap do |x|
286
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
287
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
288
+ expect(x.function.id).to eq("ODD")
289
+ expect(x.parameters).to be_instance_of(Array)
290
+ expect(x.parameters.count).to eq(1)
291
+ expect(x.parameters[0]).to eq(true)
292
+ end
293
+
294
+ constants.find{|x| x.id == "rolesofExpression"}.expression.tap do |x|
295
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
296
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
297
+ expect(x.function.id).to eq("ROLESOF")
298
+ expect(x.parameters).to be_instance_of(Array)
299
+ expect(x.parameters.count).to eq(1)
300
+ expect(x.parameters[0]).to eq(true)
301
+ end
302
+
303
+ constants.find{|x| x.id == "sinExpression"}.expression.tap do |x|
304
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
305
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
306
+ expect(x.function.id).to eq("SIN")
307
+ expect(x.parameters).to be_instance_of(Array)
308
+ expect(x.parameters.count).to eq(1)
309
+ expect(x.parameters[0]).to eq(true)
310
+ end
311
+
312
+ constants.find{|x| x.id == "sizeofExpression"}.expression.tap do |x|
313
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
314
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
315
+ expect(x.function.id).to eq("SIZEOF")
316
+ expect(x.parameters).to be_instance_of(Array)
317
+ expect(x.parameters.count).to eq(1)
318
+ expect(x.parameters[0]).to eq(true)
319
+ end
320
+
321
+ constants.find{|x| x.id == "sqrtExpression"}.expression.tap do |x|
322
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
323
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
324
+ expect(x.function.id).to eq("SQRT")
325
+ expect(x.parameters).to be_instance_of(Array)
326
+ expect(x.parameters.count).to eq(1)
327
+ expect(x.parameters[0]).to eq(true)
328
+ end
329
+
330
+ constants.find{|x| x.id == "tanExpression"}.expression.tap do |x|
331
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
332
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
333
+ expect(x.function.id).to eq("TAN")
334
+ expect(x.parameters).to be_instance_of(Array)
335
+ expect(x.parameters.count).to eq(1)
336
+ expect(x.parameters[0]).to eq(true)
337
+ end
338
+
339
+ constants.find{|x| x.id == "typeofExpression"}.expression.tap do |x|
340
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
341
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
342
+ expect(x.function.id).to eq("TYPEOF")
343
+ expect(x.parameters).to be_instance_of(Array)
344
+ expect(x.parameters.count).to eq(1)
345
+ expect(x.parameters[0]).to eq(true)
346
+ end
347
+
348
+ constants.find{|x| x.id == "usedinExpression"}.expression.tap do |x|
349
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
350
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
351
+ expect(x.function.id).to eq("USEDIN")
352
+ expect(x.parameters).to be_instance_of(Array)
353
+ expect(x.parameters.count).to eq(1)
354
+ expect(x.parameters[0]).to eq(true)
355
+ end
356
+
357
+ constants.find{|x| x.id == "valueExpression"}.expression.tap do |x|
358
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
359
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
360
+ expect(x.function.id).to eq("VALUE")
361
+ expect(x.parameters).to be_instance_of(Array)
362
+ expect(x.parameters.count).to eq(1)
363
+ expect(x.parameters[0]).to eq(true)
364
+ end
365
+
366
+ constants.find{|x| x.id == "valueInExpression"}.expression.tap do |x|
367
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
368
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
369
+ expect(x.function.id).to eq("VALUE_IN")
370
+ expect(x.parameters).to be_instance_of(Array)
371
+ expect(x.parameters.count).to eq(1)
372
+ expect(x.parameters[0]).to eq(true)
373
+ end
374
+
375
+ constants.find{|x| x.id == "valueUniqueExpression"}.expression.tap do |x|
376
+ expect(x).to be_instance_of(Expressir::Model::Expressions::FunctionCall)
377
+ expect(x.function).to be_instance_of(Expressir::Model::Ref)
378
+ expect(x.function.id).to eq("VALUE_UNIQUE")
379
+ expect(x.parameters).to be_instance_of(Array)
380
+ expect(x.parameters.count).to eq(1)
381
+ expect(x.parameters[0]).to eq(true)
382
+ end
383
+
384
+ # operations
385
+ constants.find{|x| x.id == "unaryPlusExpression"}.expression.tap do |x|
386
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
387
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::UnaryPlus)
388
+ expect(x.operands).to be_instance_of(Array)
389
+ expect(x.operands.count).to eq(1)
390
+ expect(x.operands[0]).to eq(4)
391
+ end
392
+
393
+ constants.find{|x| x.id == "unaryMinusExpression"}.expression.tap do |x|
394
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
395
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::UnaryMinus)
396
+ expect(x.operands).to be_instance_of(Array)
397
+ expect(x.operands.count).to eq(1)
398
+ expect(x.operands[0]).to eq(4)
399
+ end
400
+
401
+ constants.find{|x| x.id == "additionExpression"}.expression.tap do |x|
402
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
403
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Addition)
404
+ expect(x.operands).to be_instance_of(Array)
405
+ expect(x.operands.count).to eq(2)
406
+ expect(x.operands[0]).to eq(4)
407
+ expect(x.operands[1]).to eq(2)
408
+ end
409
+
410
+ constants.find{|x| x.id == "subtractionExpression"}.expression.tap do |x|
411
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
412
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Subtraction)
413
+ expect(x.operands).to be_instance_of(Array)
414
+ expect(x.operands.count).to eq(2)
415
+ expect(x.operands[0]).to eq(4)
416
+ expect(x.operands[1]).to eq(2)
417
+ end
418
+
419
+ constants.find{|x| x.id == "multiplicationExpression"}.expression.tap do |x|
420
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
421
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Multiplication)
422
+ expect(x.operands).to be_instance_of(Array)
423
+ expect(x.operands.count).to eq(2)
424
+ expect(x.operands[0]).to eq(4)
425
+ expect(x.operands[1]).to eq(2)
426
+ end
427
+
428
+ constants.find{|x| x.id == "realDivisionExpression"}.expression.tap do |x|
429
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
430
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::RealDivision)
431
+ expect(x.operands).to be_instance_of(Array)
432
+ expect(x.operands.count).to eq(2)
433
+ expect(x.operands[0]).to eq(4)
434
+ expect(x.operands[1]).to eq(2)
435
+ end
436
+
437
+ constants.find{|x| x.id == "integerDivisionExpression"}.expression.tap do |x|
438
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
439
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::IntegerDivision)
440
+ expect(x.operands).to be_instance_of(Array)
441
+ expect(x.operands.count).to eq(2)
442
+ expect(x.operands[0]).to eq(4)
443
+ expect(x.operands[1]).to eq(2)
444
+ end
445
+
446
+ constants.find{|x| x.id == "moduloExpression"}.expression.tap do |x|
447
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
448
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Modulo)
449
+ expect(x.operands).to be_instance_of(Array)
450
+ expect(x.operands.count).to eq(2)
451
+ expect(x.operands[0]).to eq(4)
452
+ expect(x.operands[1]).to eq(2)
453
+ end
454
+
455
+ constants.find{|x| x.id == "exponentiationExpression"}.expression.tap do |x|
456
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
457
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Exponentiation)
458
+ expect(x.operands).to be_instance_of(Array)
459
+ expect(x.operands.count).to eq(2)
460
+ expect(x.operands[0]).to eq(4)
461
+ expect(x.operands[1]).to eq(2)
462
+ end
463
+
464
+ constants.find{|x| x.id == "additionAdditionExpression"}.expression.tap do |x|
465
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
466
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Addition)
467
+ expect(x.operands).to be_instance_of(Array)
468
+ expect(x.operands.count).to eq(2)
469
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
470
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Addition)
471
+ expect(x.operands[0].operands).to be_instance_of(Array)
472
+ expect(x.operands[0].operands.count).to eq(2)
473
+ expect(x.operands[0].operands[0]).to eq(4)
474
+ expect(x.operands[0].operands[1]).to eq(2)
475
+ expect(x.operands[1]).to eq(1)
476
+ end
477
+
478
+ constants.find{|x| x.id == "subtractionSubtractionExpression"}.expression.tap do |x|
479
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
480
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Subtraction)
481
+ expect(x.operands).to be_instance_of(Array)
482
+ expect(x.operands.count).to eq(2)
483
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
484
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Subtraction)
485
+ expect(x.operands[0].operands).to be_instance_of(Array)
486
+ expect(x.operands[0].operands.count).to eq(2)
487
+ expect(x.operands[0].operands[0]).to eq(4)
488
+ expect(x.operands[0].operands[1]).to eq(2)
489
+ expect(x.operands[1]).to eq(1)
490
+ end
491
+
492
+ constants.find{|x| x.id == "additionSubtractionExpression"}.expression.tap do |x|
493
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
494
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Subtraction)
495
+ expect(x.operands).to be_instance_of(Array)
496
+ expect(x.operands.count).to eq(2)
497
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
498
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Addition)
499
+ expect(x.operands[0].operands).to be_instance_of(Array)
500
+ expect(x.operands[0].operands.count).to eq(2)
501
+ expect(x.operands[0].operands[0]).to eq(4)
502
+ expect(x.operands[0].operands[1]).to eq(2)
503
+ expect(x.operands[1]).to eq(1)
504
+ end
505
+
506
+ constants.find{|x| x.id == "subtractionAdditionExpression"}.expression.tap do |x|
507
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
508
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Addition)
509
+ expect(x.operands).to be_instance_of(Array)
510
+ expect(x.operands.count).to eq(2)
511
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
512
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Subtraction)
513
+ expect(x.operands[0].operands).to be_instance_of(Array)
514
+ expect(x.operands[0].operands.count).to eq(2)
515
+ expect(x.operands[0].operands[0]).to eq(4)
516
+ expect(x.operands[0].operands[1]).to eq(2)
517
+ expect(x.operands[1]).to eq(1)
518
+ end
519
+
520
+ constants.find{|x| x.id == "additionMultiplicationExpression"}.expression.tap do |x|
521
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
522
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Addition)
523
+ expect(x.operands).to be_instance_of(Array)
524
+ expect(x.operands.count).to eq(2)
525
+ expect(x.operands[0]).to eq(8)
526
+ expect(x.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
527
+ expect(x.operands[1].operator).to be_instance_of(Expressir::Model::Operators::Multiplication)
528
+ expect(x.operands[1].operands).to be_instance_of(Array)
529
+ expect(x.operands[1].operands.count).to eq(2)
530
+ expect(x.operands[1].operands[0]).to eq(4)
531
+ expect(x.operands[1].operands[1]).to eq(2)
532
+ end
533
+
534
+ constants.find{|x| x.id == "multiplicationAdditionExpression"}.expression.tap do |x|
535
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
536
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Addition)
537
+ expect(x.operands).to be_instance_of(Array)
538
+ expect(x.operands.count).to eq(2)
539
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
540
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Multiplication)
541
+ expect(x.operands[0].operands).to be_instance_of(Array)
542
+ expect(x.operands[0].operands.count).to eq(2)
543
+ expect(x.operands[0].operands[0]).to eq(8)
544
+ expect(x.operands[0].operands[1]).to eq(4)
545
+ expect(x.operands[1]).to eq(2)
546
+ end
547
+
548
+ constants.find{|x| x.id == "parenthesisAdditionMultiplicationExpression"}.expression.tap do |x|
549
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
550
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Multiplication)
551
+ expect(x.operands).to be_instance_of(Array)
552
+ expect(x.operands.count).to eq(2)
553
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
554
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Addition)
555
+ expect(x.operands[0].operands).to be_instance_of(Array)
556
+ expect(x.operands[0].operands.count).to eq(2)
557
+ expect(x.operands[0].operands[0]).to eq(8)
558
+ expect(x.operands[0].operands[1]).to eq(4)
559
+ expect(x.operands[1]).to eq(2)
560
+ end
561
+
562
+ constants.find{|x| x.id == "multiplicationParenthesisAdditionExpression"}.expression.tap do |x|
563
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
564
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Multiplication)
565
+ expect(x.operands).to be_instance_of(Array)
566
+ expect(x.operands.count).to eq(2)
567
+ expect(x.operands[0]).to eq(8)
568
+ expect(x.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
569
+ expect(x.operands[1].operator).to be_instance_of(Expressir::Model::Operators::Addition)
570
+ expect(x.operands[1].operands).to be_instance_of(Array)
571
+ expect(x.operands[1].operands.count).to eq(2)
572
+ expect(x.operands[1].operands[0]).to eq(4)
573
+ expect(x.operands[1].operands[1]).to eq(2)
574
+ end
575
+
576
+ constants.find{|x| x.id == "equalExpression"}.expression.tap do |x|
577
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
578
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Equal)
579
+ expect(x.operands).to be_instance_of(Array)
580
+ expect(x.operands.count).to eq(2)
581
+ expect(x.operands[0]).to eq(4)
582
+ expect(x.operands[1]).to eq(2)
583
+ end
584
+
585
+ constants.find{|x| x.id == "notEqualExpression"}.expression.tap do |x|
586
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
587
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::NotEqual)
588
+ expect(x.operands).to be_instance_of(Array)
589
+ expect(x.operands.count).to eq(2)
590
+ expect(x.operands[0]).to eq(4)
591
+ expect(x.operands[1]).to eq(2)
592
+ end
593
+
594
+ constants.find{|x| x.id == "ltExpression"}.expression.tap do |x|
595
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
596
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::LessThan)
597
+ expect(x.operands).to be_instance_of(Array)
598
+ expect(x.operands.count).to eq(2)
599
+ expect(x.operands[0]).to eq(4)
600
+ expect(x.operands[1]).to eq(2)
601
+ end
602
+
603
+ constants.find{|x| x.id == "gtExpression"}.expression.tap do |x|
604
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
605
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::GreaterThan)
606
+ expect(x.operands).to be_instance_of(Array)
607
+ expect(x.operands.count).to eq(2)
608
+ expect(x.operands[0]).to eq(4)
609
+ expect(x.operands[1]).to eq(2)
610
+ end
611
+
612
+ constants.find{|x| x.id == "lteExpression"}.expression.tap do |x|
613
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
614
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::LessThanOrEqual)
615
+ expect(x.operands).to be_instance_of(Array)
616
+ expect(x.operands.count).to eq(2)
617
+ expect(x.operands[0]).to eq(4)
618
+ expect(x.operands[1]).to eq(2)
619
+ end
620
+
621
+ constants.find{|x| x.id == "gteExpression"}.expression.tap do |x|
622
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
623
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::GreaterThanOrEqual)
624
+ expect(x.operands).to be_instance_of(Array)
625
+ expect(x.operands.count).to eq(2)
626
+ expect(x.operands[0]).to eq(4)
627
+ expect(x.operands[1]).to eq(2)
628
+ end
629
+
630
+ constants.find{|x| x.id == "orExpression"}.expression.tap do |x|
631
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
632
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Or)
633
+ expect(x.operands).to be_instance_of(Array)
634
+ expect(x.operands.count).to eq(2)
635
+ expect(x.operands[0]).to eq(true)
636
+ expect(x.operands[1]).to eq(false)
637
+ end
638
+
639
+ constants.find{|x| x.id == "andExpression"}.expression.tap do |x|
640
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
641
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::And)
642
+ expect(x.operands).to be_instance_of(Array)
643
+ expect(x.operands.count).to eq(2)
644
+ expect(x.operands[0]).to eq(true)
645
+ expect(x.operands[1]).to eq(false)
646
+ end
647
+
648
+ constants.find{|x| x.id == "orOrExpression"}.expression.tap do |x|
649
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
650
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Or)
651
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
652
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Or)
653
+ expect(x.operands[0].operands).to be_instance_of(Array)
654
+ expect(x.operands[0].operands.count).to eq(2)
655
+ expect(x.operands[0].operands[0]).to eq(true)
656
+ expect(x.operands[0].operands[1]).to eq(false)
657
+ expect(x.operands[1]).to eq(true)
658
+ end
659
+
660
+ constants.find{|x| x.id == "andAndExpression"}.expression.tap do |x|
661
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
662
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::And)
663
+ expect(x.operands).to be_instance_of(Array)
664
+ expect(x.operands.count).to eq(2)
665
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
666
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::And)
667
+ expect(x.operands[0].operands).to be_instance_of(Array)
668
+ expect(x.operands[0].operands.count).to eq(2)
669
+ expect(x.operands[0].operands[0]).to eq(true)
670
+ expect(x.operands[0].operands[1]).to eq(false)
671
+ expect(x.operands[1]).to eq(true)
672
+ end
673
+
674
+ constants.find{|x| x.id == "orAndExpression"}.expression.tap do |x|
675
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
676
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Or)
677
+ expect(x.operands).to be_instance_of(Array)
678
+ expect(x.operands.count).to eq(2)
679
+ expect(x.operands[0]).to eq(true)
680
+ expect(x.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
681
+ expect(x.operands[1].operator).to be_instance_of(Expressir::Model::Operators::And)
682
+ expect(x.operands[1].operands).to be_instance_of(Array)
683
+ expect(x.operands[1].operands.count).to eq(2)
684
+ expect(x.operands[1].operands[0]).to eq(false)
685
+ expect(x.operands[1].operands[1]).to eq(true)
686
+ end
687
+
688
+ constants.find{|x| x.id == "andOrExpression"}.expression.tap do |x|
689
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
690
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Or)
691
+ expect(x.operands).to be_instance_of(Array)
692
+ expect(x.operands.count).to eq(2)
693
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
694
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::And)
695
+ expect(x.operands[0].operands).to be_instance_of(Array)
696
+ expect(x.operands[0].operands.count).to eq(2)
697
+ expect(x.operands[0].operands[0]).to eq(true)
698
+ expect(x.operands[0].operands[1]).to eq(false)
699
+ expect(x.operands[1]).to eq(true)
700
+ end
701
+
702
+ constants.find{|x| x.id == "parenthesisOrAndExpression"}.expression.tap do |x|
703
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
704
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::And)
705
+ expect(x.operands).to be_instance_of(Array)
706
+ expect(x.operands.count).to eq(2)
707
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
708
+ expect(x.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Or)
709
+ expect(x.operands[0].operands).to be_instance_of(Array)
710
+ expect(x.operands[0].operands.count).to eq(2)
711
+ expect(x.operands[0].operands[0]).to eq(true)
712
+ expect(x.operands[0].operands[1]).to eq(false)
713
+ expect(x.operands[1]).to eq(true)
714
+ end
715
+
716
+ constants.find{|x| x.id == "andParenthesisOrExpression"}.expression.tap do |x|
717
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
718
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::And)
719
+ expect(x.operands).to be_instance_of(Array)
720
+ expect(x.operands.count).to eq(2)
721
+ expect(x.operands[0]).to eq(true)
722
+ expect(x.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
723
+ expect(x.operands[1].operator).to be_instance_of(Expressir::Model::Operators::Or)
724
+ expect(x.operands[1].operands).to be_instance_of(Array)
725
+ expect(x.operands[1].operands.count).to eq(2)
726
+ expect(x.operands[1].operands[0]).to eq(false)
727
+ expect(x.operands[1].operands[1]).to eq(true)
728
+ end
729
+
730
+ # aggregate initializers
731
+ constants.find{|x| x.id == "aggregateExpression"}.expression.tap do |x|
732
+ expect(x).to be_instance_of(Array)
733
+ expect(x.count).to eq(1)
734
+ expect(x[0]).to eq("xxx")
735
+ end
736
+
737
+ constants.find{|x| x.id == "aggregateRepeatedExpression"}.expression.tap do |x|
738
+ expect(x).to be_instance_of(Array)
739
+ expect(x.count).to eq(1)
740
+ expect(x[0]).to be_instance_of(Expressir::Model::Expressions::AggregateElement)
741
+ expect(x[0].expression).to eq("xxx")
742
+ expect(x[0].repetition).to eq(2)
743
+ end
744
+
745
+ constants.find{|x| x.id == "aggregateComplexExpression"}.expression.tap do |x|
746
+ expect(x).to be_instance_of(Array)
747
+ expect(x.count).to eq(1)
748
+ expect(x[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
749
+ expect(x[0].operator).to be_instance_of(Expressir::Model::Operators::Addition)
750
+ expect(x[0].operands).to be_instance_of(Array)
751
+ expect(x[0].operands.count).to eq(2)
752
+ expect(x[0].operands[0]).to eq(4)
753
+ expect(x[0].operands[1]).to eq(2)
754
+ end
755
+
756
+ constants.find{|x| x.id == "aggregateComplexRepeatedExpression"}.expression.tap do |x|
757
+ expect(x).to be_instance_of(Array)
758
+ expect(x.count).to eq(1)
759
+ expect(x[0]).to be_instance_of(Expressir::Model::Expressions::AggregateElement)
760
+ expect(x[0].expression).to be_instance_of(Expressir::Model::Expressions::Expression)
761
+ expect(x[0].expression.operator).to be_instance_of(Expressir::Model::Operators::Addition)
762
+ expect(x[0].expression.operands).to be_instance_of(Array)
763
+ expect(x[0].expression.operands.count).to eq(2)
764
+ expect(x[0].expression.operands[0]).to eq(4)
765
+ expect(x[0].expression.operands[1]).to eq(2)
766
+ expect(x[0].repetition).to be_instance_of(Expressir::Model::Expressions::Expression)
767
+ expect(x[0].repetition.operator).to be_instance_of(Expressir::Model::Operators::Addition)
768
+ expect(x[0].repetition.operands).to be_instance_of(Array)
769
+ expect(x[0].repetition.operands.count).to eq(2)
770
+ expect(x[0].repetition.operands[0]).to eq(4)
771
+ expect(x[0].repetition.operands[1]).to eq(2)
772
+ end
773
+
774
+ # entity constructors
775
+ constants.find{|x| x.id == "entityConstructorExpression"}.expression.tap do |x|
776
+ expect(x).to be_instance_of(Expressir::Model::Expressions::EntityConstructor)
777
+ expect(x.entity).to be_instance_of(Expressir::Model::Ref)
778
+ expect(x.entity.id).to eq("explicitAttributeEntity")
779
+ expect(x.parameters).to be_instance_of(Array)
780
+ expect(x.parameters.count).to eq(1)
781
+ expect(x.parameters[0]).to eq(true)
782
+ end
783
+
784
+ # enumeration references
785
+ constants.find{|x| x.id == "enumerationReferenceExpression"}.expression.tap do |x|
786
+ expect(x).to be_instance_of(Expressir::Model::Ref)
787
+ expect(x.id).to eq("test")
788
+ end
789
+
790
+ constants.find{|x| x.id == "attributeEnumerationReferenceExpression"}.expression.tap do |x|
791
+ expect(x).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
792
+ expect(x.ref).to be_instance_of(Expressir::Model::Ref)
793
+ expect(x.ref.id).to eq("test")
794
+ expect(x.qualifiers).to be_instance_of(Array)
795
+ expect(x.qualifiers.count).to eq(1)
796
+ expect(x.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::AttributeQualifier)
797
+ expect(x.qualifiers[0].attribute).to be_instance_of(Expressir::Model::Ref)
798
+ expect(x.qualifiers[0].attribute.id).to eq("test")
799
+ end
800
+
801
+ # intervals
802
+ constants.find{|x| x.id == "ltLtIntervalExpression"}.expression.tap do |x|
803
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Interval)
804
+ expect(x.low).to eq(1)
805
+ expect(x.operator1).to be_instance_of(Expressir::Model::Operators::LessThan)
806
+ expect(x.item).to eq(5)
807
+ expect(x.operator2).to be_instance_of(Expressir::Model::Operators::LessThan)
808
+ expect(x.high).to eq(9)
809
+ end
810
+
811
+ constants.find{|x| x.id == "lteLtIntervalExpression"}.expression.tap do |x|
812
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Interval)
813
+ expect(x.low).to eq(1)
814
+ expect(x.operator1).to be_instance_of(Expressir::Model::Operators::LessThanOrEqual)
815
+ expect(x.item).to eq(5)
816
+ expect(x.operator2).to be_instance_of(Expressir::Model::Operators::LessThan)
817
+ expect(x.high).to eq(9)
818
+ end
819
+
820
+ constants.find{|x| x.id == "ltLteIntervalExpression"}.expression.tap do |x|
821
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Interval)
822
+ expect(x.low).to eq(1)
823
+ expect(x.operator1).to be_instance_of(Expressir::Model::Operators::LessThan)
824
+ expect(x.item).to eq(5)
825
+ expect(x.operator2).to be_instance_of(Expressir::Model::Operators::LessThanOrEqual)
826
+ expect(x.high).to eq(9)
827
+ end
828
+
829
+ constants.find{|x| x.id == "lteLteIntervalExpression"}.expression.tap do |x|
830
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Interval)
831
+ expect(x.low).to eq(1)
832
+ expect(x.operator1).to be_instance_of(Expressir::Model::Operators::LessThanOrEqual)
833
+ expect(x.item).to eq(5)
834
+ expect(x.operator2).to be_instance_of(Expressir::Model::Operators::LessThanOrEqual)
835
+ expect(x.high).to eq(9)
836
+ end
837
+
838
+ constants.find{|x| x.id == "combineExpression"}.expression.tap do |x|
839
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
840
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Combine)
841
+ expect(x.operands).to be_instance_of(Array)
842
+ expect(x.operands.count).to eq(2)
843
+ expect(x.operands[0]).to be_instance_of(Expressir::Model::Ref)
844
+ expect(x.operands[0].id).to eq("test")
845
+ expect(x.operands[1]).to be_instance_of(Expressir::Model::Ref)
846
+ expect(x.operands[1].id).to eq("test")
847
+ end
848
+
849
+ constants.find{|x| x.id == "inExpression"}.expression.tap do |x|
850
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
851
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::In)
852
+ expect(x.operands).to be_instance_of(Array)
853
+ expect(x.operands.count).to eq(2)
854
+ expect(x.operands[0]).to eq(true)
855
+ expect(x.operands[1]).to be_instance_of(Array)
856
+ expect(x.operands[1].count).to eq(1)
857
+ expect(x.operands[1][0]).to eq(true)
858
+ end
859
+
860
+ constants.find{|x| x.id == "likeExpression"}.expression.tap do |x|
861
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Expression)
862
+ expect(x.operator).to be_instance_of(Expressir::Model::Operators::Like)
863
+ expect(x.operands).to be_instance_of(Array)
864
+ expect(x.operands.count).to eq(2)
865
+ expect(x.operands[0]).to eq("xxx")
866
+ expect(x.operands[1]).to eq("xxx")
867
+ end
868
+
869
+ # queries
870
+ constants.find{|x| x.id == "queryExpression"}.expression.tap do |x|
871
+ expect(x).to be_instance_of(Expressir::Model::Expressions::Query)
872
+ expect(x.id).to eq("test")
873
+ expect(x.source).to be_instance_of(Expressir::Model::Ref)
874
+ expect(x.source.id).to eq("test2")
875
+ expect(x.expression).to eq(true)
876
+ end
877
+
878
+ # types
879
+ types.find{|x| x.id == "integerType"}.tap do |x|
880
+ expect(x).to be_instance_of(Expressir::Model::Type)
881
+ expect(x.type).to be_instance_of(Expressir::Model::Types::Integer)
882
+ end
883
+
884
+ types.find{|x| x.id == "integerWhereType"}.tap do |x|
885
+ expect(x).to be_instance_of(Expressir::Model::Type)
886
+ expect(x.type).to be_instance_of(Expressir::Model::Types::Integer)
887
+ expect(x.where).to be_instance_of(Array)
888
+ expect(x.where.count).to eq(1)
889
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
890
+ expect(x.where[0].expression).to eq(true)
891
+ end
892
+
893
+ types.find{|x| x.id == "integerWhereLabelType"}.tap do |x|
894
+ expect(x).to be_instance_of(Expressir::Model::Type)
895
+ expect(x.type).to be_instance_of(Expressir::Model::Types::Integer)
896
+ expect(x.where).to be_instance_of(Array)
897
+ expect(x.where.count).to eq(1)
898
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
899
+ expect(x.where[0].id).to eq("WR1")
900
+ expect(x.where[0].expression).to eq(true)
901
+ end
902
+
903
+ # simple types
904
+ types.find{|x| x.id == "binaryType"}.type.tap do |x|
905
+ expect(x).to be_instance_of(Expressir::Model::Types::Binary)
906
+ end
907
+
908
+ types.find{|x| x.id == "binaryWidthType"}.type.tap do |x|
909
+ expect(x).to be_instance_of(Expressir::Model::Types::Binary)
910
+ expect(x.width).to eq(3)
911
+ end
912
+
913
+ types.find{|x| x.id == "binaryWidthFixedType"}.type.tap do |x|
914
+ expect(x).to be_instance_of(Expressir::Model::Types::Binary)
915
+ expect(x.width).to eq(3)
916
+ expect(x.fixed).to eq(true)
917
+ end
918
+
919
+ types.find{|x| x.id == "booleanType"}.type.tap do |x|
920
+ expect(x).to be_instance_of(Expressir::Model::Types::Boolean)
921
+ end
922
+
923
+ types.find{|x| x.id == "integerType"}.type.tap do |x|
924
+ expect(x).to be_instance_of(Expressir::Model::Types::Integer)
925
+ end
926
+
927
+ types.find{|x| x.id == "logicalType"}.type.tap do |x|
928
+ expect(x).to be_instance_of(Expressir::Model::Types::Logical)
929
+ end
930
+
931
+ types.find{|x| x.id == "numberType"}.type.tap do |x|
932
+ expect(x).to be_instance_of(Expressir::Model::Types::Number)
933
+ end
934
+
935
+ types.find{|x| x.id == "realType"}.type.tap do |x|
936
+ expect(x).to be_instance_of(Expressir::Model::Types::Real)
937
+ end
938
+
939
+ types.find{|x| x.id == "realPrecisionType"}.type.tap do |x|
940
+ expect(x).to be_instance_of(Expressir::Model::Types::Real)
941
+ expect(x.precision).to eq(3)
942
+ end
943
+
944
+ types.find{|x| x.id == "stringType"}.type.tap do |x|
945
+ expect(x).to be_instance_of(Expressir::Model::Types::String)
946
+ end
947
+
948
+ types.find{|x| x.id == "stringWidthType"}.type.tap do |x|
949
+ expect(x).to be_instance_of(Expressir::Model::Types::String)
950
+ expect(x.width).to eq(3)
951
+ end
952
+
953
+ types.find{|x| x.id == "stringWidthFixedType"}.type.tap do |x|
954
+ expect(x).to be_instance_of(Expressir::Model::Types::String)
955
+ expect(x.width).to eq(3)
956
+ expect(x.fixed).to eq(true)
957
+ end
958
+
959
+ # aggregation types
960
+ types.find{|x| x.id == "arrayType"}.type.tap do |x|
961
+ expect(x).to be_instance_of(Expressir::Model::Types::Array)
962
+ expect(x.bound1).to eq(1)
963
+ expect(x.bound2).to eq(9)
964
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
965
+ end
966
+
967
+ types.find{|x| x.id == "arrayOptionalType"}.type.tap do |x|
968
+ expect(x).to be_instance_of(Expressir::Model::Types::Array)
969
+ expect(x.bound1).to eq(1)
970
+ expect(x.bound2).to eq(9)
971
+ expect(x.optional).to eq(true)
972
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
973
+ end
974
+
975
+ types.find{|x| x.id == "arrayUniqueType"}.type.tap do |x|
976
+ expect(x).to be_instance_of(Expressir::Model::Types::Array)
977
+ expect(x.bound1).to eq(1)
978
+ expect(x.bound2).to eq(9)
979
+ expect(x.unique).to eq(true)
980
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
981
+ end
982
+
983
+ types.find{|x| x.id == "arrayOptionalUniqueType"}.type.tap do |x|
984
+ expect(x).to be_instance_of(Expressir::Model::Types::Array)
985
+ expect(x.bound1).to eq(1)
986
+ expect(x.bound2).to eq(9)
987
+ expect(x.optional).to eq(true)
988
+ expect(x.unique).to eq(true)
989
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
990
+ end
991
+
992
+ types.find{|x| x.id == "bagType"}.type.tap do |x|
993
+ expect(x).to be_instance_of(Expressir::Model::Types::Bag)
994
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
995
+ end
996
+
997
+ types.find{|x| x.id == "bagBoundType"}.type.tap do |x|
998
+ expect(x).to be_instance_of(Expressir::Model::Types::Bag)
999
+ expect(x.bound1).to eq(1)
1000
+ expect(x.bound2).to eq(9)
1001
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
1002
+ end
1003
+
1004
+ types.find{|x| x.id == "listType"}.type.tap do |x|
1005
+ expect(x).to be_instance_of(Expressir::Model::Types::List)
1006
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
1007
+ end
1008
+
1009
+ types.find{|x| x.id == "listBoundType"}.type.tap do |x|
1010
+ expect(x).to be_instance_of(Expressir::Model::Types::List)
1011
+ expect(x.bound1).to eq(1)
1012
+ expect(x.bound2).to eq(9)
1013
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
1014
+ end
1015
+
1016
+ types.find{|x| x.id == "listUniqueType"}.type.tap do |x|
1017
+ expect(x).to be_instance_of(Expressir::Model::Types::List)
1018
+ expect(x.unique).to eq(true)
1019
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
1020
+ end
1021
+
1022
+ types.find{|x| x.id == "listBoundUniqueType"}.type.tap do |x|
1023
+ expect(x).to be_instance_of(Expressir::Model::Types::List)
1024
+ expect(x.bound1).to eq(1)
1025
+ expect(x.bound2).to eq(9)
1026
+ expect(x.unique).to eq(true)
1027
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
1028
+ end
1029
+
1030
+ types.find{|x| x.id == "setType"}.type.tap do |x|
1031
+ expect(x).to be_instance_of(Expressir::Model::Types::Set)
1032
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
1033
+ end
1034
+
1035
+ types.find{|x| x.id == "setBoundType"}.type.tap do |x|
1036
+ expect(x).to be_instance_of(Expressir::Model::Types::Set)
1037
+ expect(x.bound1).to eq(1)
1038
+ expect(x.bound2).to eq(9)
1039
+ expect(x.base_type).to be_instance_of(Expressir::Model::Types::String)
1040
+ end
1041
+
1042
+ # constructed types
1043
+ types.find{|x| x.id == "selectType"}.type.tap do |x|
1044
+ expect(x).to be_instance_of(Expressir::Model::Types::Select)
1045
+ end
1046
+
1047
+ types.find{|x| x.id == "selectExtensibleType"}.type.tap do |x|
1048
+ expect(x).to be_instance_of(Expressir::Model::Types::Select)
1049
+ expect(x.extensible).to eq(true)
1050
+ end
1051
+
1052
+ types.find{|x| x.id == "selectExtensibleGenericEntityType"}.type.tap do |x|
1053
+ expect(x).to be_instance_of(Expressir::Model::Types::Select)
1054
+ expect(x.extensible).to eq(true)
1055
+ expect(x.generic_entity).to eq(true)
1056
+ end
1057
+
1058
+ types.find{|x| x.id == "selectListType"}.type.tap do |x|
1059
+ expect(x).to be_instance_of(Expressir::Model::Types::Select)
1060
+ expect(x.list).to be_instance_of(Array)
1061
+ expect(x.list.count).to eq(1)
1062
+ expect(x.list[0]).to be_instance_of(Expressir::Model::Ref)
1063
+ expect(x.list[0].id).to eq("test")
1064
+ end
1065
+
1066
+ types.find{|x| x.id == "selectExtensionTypeRefType"}.type.tap do |x|
1067
+ expect(x).to be_instance_of(Expressir::Model::Types::Select)
1068
+ expect(x.extension_type).to be_instance_of(Expressir::Model::Ref)
1069
+ expect(x.extension_type.id).to eq("selectType")
1070
+ end
1071
+
1072
+ types.find{|x| x.id == "selectExtensionTypeRefListType"}.type.tap do |x|
1073
+ expect(x).to be_instance_of(Expressir::Model::Types::Select)
1074
+ expect(x.extension_type).to be_instance_of(Expressir::Model::Ref)
1075
+ expect(x.extension_type.id).to eq("selectType")
1076
+ expect(x.extension_list).to be_instance_of(Array)
1077
+ expect(x.extension_list.count).to eq(1)
1078
+ expect(x.extension_list[0]).to be_instance_of(Expressir::Model::Ref)
1079
+ expect(x.extension_list[0].id).to eq("test")
1080
+ end
1081
+
1082
+ types.find{|x| x.id == "enumerationType"}.type.tap do |x|
1083
+ expect(x).to be_instance_of(Expressir::Model::Types::Enumeration)
1084
+ end
1085
+
1086
+ types.find{|x| x.id == "enumerationExtensibleType"}.type.tap do |x|
1087
+ expect(x).to be_instance_of(Expressir::Model::Types::Enumeration)
1088
+ expect(x.extensible).to eq(true)
1089
+ end
1090
+
1091
+ types.find{|x| x.id == "enumerationListType"}.type.tap do |x|
1092
+ expect(x).to be_instance_of(Expressir::Model::Types::Enumeration)
1093
+ expect(x.list).to be_instance_of(Array)
1094
+ expect(x.list.count).to eq(1)
1095
+ expect(x.list[0]).to eq("test")
1096
+ end
1097
+
1098
+ types.find{|x| x.id == "enumerationExtensionTypeRefType"}.type.tap do |x|
1099
+ expect(x).to be_instance_of(Expressir::Model::Types::Enumeration)
1100
+ expect(x.extension_type).to be_instance_of(Expressir::Model::Ref)
1101
+ expect(x.extension_type.id).to eq("enumerationType")
1102
+ end
1103
+
1104
+ types.find{|x| x.id == "enumerationExtensionTypeRefListType"}.type.tap do |x|
1105
+ expect(x).to be_instance_of(Expressir::Model::Types::Enumeration)
1106
+ expect(x.extension_type).to be_instance_of(Expressir::Model::Ref)
1107
+ expect(x.extension_type.id).to eq("enumerationType")
1108
+ expect(x.extension_list).to be_instance_of(Array)
1109
+ expect(x.extension_list.count).to eq(1)
1110
+ expect(x.extension_list[0]).to eq("test")
1111
+ end
1112
+
1113
+ # entities
1114
+ entities.find{|x| x.id == "emptyEntity"}.tap do |x|
1115
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1116
+ end
1117
+
1118
+ entities.find{|x| x.id == "abstractEntity"}.tap do |x|
1119
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1120
+ expect(x.abstract).to eq(true)
1121
+ end
1122
+
1123
+ entities.find{|x| x.id == "abstractSupertypeEntity"}.tap do |x|
1124
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1125
+ expect(x.abstract_supertype).to eq(true)
1126
+ end
1127
+
1128
+ entities.find{|x| x.id == "abstractSupertypeConstraintEntity"}.tap do |x|
1129
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1130
+ expect(x.abstract_supertype).to eq(true)
1131
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Ref)
1132
+ expect(x.subtype_expression.id).to eq("emptyEntity")
1133
+ end
1134
+
1135
+ entities.find{|x| x.id == "supertypeConstraintEntity"}.tap do |x|
1136
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1137
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Ref)
1138
+ expect(x.subtype_expression.id).to eq("emptyEntity")
1139
+ end
1140
+
1141
+ entities.find{|x| x.id == "subtypeEntity"}.tap do |x|
1142
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1143
+ expect(x.supertypes).to be_instance_of(Array)
1144
+ expect(x.supertypes.count).to eq(1)
1145
+ expect(x.supertypes[0]).to be_instance_of(Expressir::Model::Ref)
1146
+ expect(x.supertypes[0].id).to eq("emptyEntity")
1147
+ end
1148
+
1149
+ entities.find{|x| x.id == "supertypeConstraintSubtypeEntity"}.tap do |x|
1150
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1151
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Ref)
1152
+ expect(x.subtype_expression.id).to eq("emptyEntity")
1153
+ expect(x.supertypes).to be_instance_of(Array)
1154
+ expect(x.supertypes.count).to eq(1)
1155
+ expect(x.supertypes[0]).to be_instance_of(Expressir::Model::Ref)
1156
+ expect(x.supertypes[0].id).to eq("emptyEntity")
1157
+ end
1158
+
1159
+ entities.find{|x| x.id == "explicitAttributeEntity"}.tap do |x|
1160
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1161
+ expect(x.explicit).to be_instance_of(Array)
1162
+ expect(x.explicit.count).to eq(1)
1163
+ expect(x.explicit[0]).to be_instance_of(Expressir::Model::Explicit)
1164
+ expect(x.explicit[0].id).to eq("test")
1165
+ expect(x.explicit[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1166
+ end
1167
+
1168
+ entities.find{|x| x.id == "explicitAttributeOptionalEntity"}.tap do |x|
1169
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1170
+ expect(x.explicit).to be_instance_of(Array)
1171
+ expect(x.explicit.count).to eq(1)
1172
+ expect(x.explicit[0]).to be_instance_of(Expressir::Model::Explicit)
1173
+ expect(x.explicit[0].id).to eq("test")
1174
+ expect(x.explicit[0].optional).to eq(true)
1175
+ expect(x.explicit[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1176
+ end
1177
+
1178
+ entities.find{|x| x.id == "explicitAttributeMultipleEntity"}.tap do |x|
1179
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1180
+ expect(x.explicit).to be_instance_of(Array)
1181
+ expect(x.explicit.count).to eq(2)
1182
+ expect(x.explicit[0]).to be_instance_of(Expressir::Model::Explicit)
1183
+ expect(x.explicit[0].id).to eq("test")
1184
+ expect(x.explicit[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1185
+ expect(x.explicit[1]).to be_instance_of(Expressir::Model::Explicit)
1186
+ expect(x.explicit[1].id).to eq("test2")
1187
+ expect(x.explicit[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1188
+ end
1189
+
1190
+ entities.find{|x| x.id == "explicitAttributeMultipleShorthandEntity"}.tap do |x|
1191
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1192
+ expect(x.explicit).to be_instance_of(Array)
1193
+ expect(x.explicit.count).to eq(2)
1194
+ expect(x.explicit[0]).to be_instance_of(Expressir::Model::Explicit)
1195
+ expect(x.explicit[0].id).to eq("test")
1196
+ expect(x.explicit[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1197
+ expect(x.explicit[1]).to be_instance_of(Expressir::Model::Explicit)
1198
+ expect(x.explicit[1].id).to eq("test2")
1199
+ expect(x.explicit[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1200
+ end
1201
+
1202
+ entities.find{|x| x.id == "explicitAttributeRenamedEntity"}.tap do |x|
1203
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1204
+ expect(x.explicit).to be_instance_of(Array)
1205
+ expect(x.explicit.count).to eq(1)
1206
+ expect(x.explicit[0]).to be_instance_of(Expressir::Model::Explicit)
1207
+ expect(x.explicit[0].id).to be_instance_of(Expressir::Model::RenamedRef)
1208
+ expect(x.explicit[0].id.ref).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
1209
+ expect(x.explicit[0].id.ref.ref).to be_instance_of(Expressir::Model::Ref)
1210
+ expect(x.explicit[0].id.ref.ref.id).to eq("SELF")
1211
+ expect(x.explicit[0].id.ref.qualifiers).to be_instance_of(Array)
1212
+ expect(x.explicit[0].id.ref.qualifiers.count).to eq(2)
1213
+ expect(x.explicit[0].id.ref.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::GroupQualifier)
1214
+ expect(x.explicit[0].id.ref.qualifiers[0].entity).to be_instance_of(Expressir::Model::Ref)
1215
+ expect(x.explicit[0].id.ref.qualifiers[0].entity.id).to eq("explicitAttributeEntity")
1216
+ expect(x.explicit[0].id.ref.qualifiers[1]).to be_instance_of(Expressir::Model::Expressions::AttributeQualifier)
1217
+ expect(x.explicit[0].id.ref.qualifiers[1].attribute).to be_instance_of(Expressir::Model::Ref)
1218
+ expect(x.explicit[0].id.ref.qualifiers[1].attribute.id).to eq("test")
1219
+ expect(x.explicit[0].id.id).to eq("test2")
1220
+ expect(x.explicit[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1221
+ end
1222
+
1223
+ entities.find{|x| x.id == "derivedAttributeEntity"}.tap do |x|
1224
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1225
+ expect(x.derived).to be_instance_of(Array)
1226
+ expect(x.derived.count).to eq(1)
1227
+ expect(x.derived[0]).to be_instance_of(Expressir::Model::Derived)
1228
+ expect(x.derived[0].id).to eq("test")
1229
+ expect(x.derived[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1230
+ expect(x.derived[0].expression).to eq(true)
1231
+ end
1232
+
1233
+ entities.find{|x| x.id == "inverseAttributeEntity"}.tap do |x|
1234
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1235
+ expect(x.inverse).to be_instance_of(Array)
1236
+ expect(x.inverse.count).to eq(1)
1237
+ expect(x.inverse[0]).to be_instance_of(Expressir::Model::Inverse)
1238
+ expect(x.inverse[0].id).to eq("test")
1239
+ expect(x.inverse[0].type).to be_instance_of(Expressir::Model::Ref)
1240
+ expect(x.inverse[0].type.id).to eq("explicitAttributeEntity")
1241
+ expect(x.inverse[0].attribute).to be_instance_of(Expressir::Model::Ref)
1242
+ expect(x.inverse[0].attribute.id).to eq("test")
1243
+ end
1244
+
1245
+ entities.find{|x| x.id == "inverseAttributeEntityEntity"}.tap do |x|
1246
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1247
+ expect(x.inverse).to be_instance_of(Array)
1248
+ expect(x.inverse.count).to eq(1)
1249
+ expect(x.inverse[0]).to be_instance_of(Expressir::Model::Inverse)
1250
+ expect(x.inverse[0].id).to eq("test")
1251
+ expect(x.inverse[0].type).to be_instance_of(Expressir::Model::Ref)
1252
+ expect(x.inverse[0].type.id).to eq("explicitAttributeEntity")
1253
+ expect(x.inverse[0].attribute).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
1254
+ expect(x.inverse[0].attribute.ref).to be_instance_of(Expressir::Model::Ref)
1255
+ expect(x.inverse[0].attribute.ref.id).to eq("explicitAttributeEntity")
1256
+ expect(x.inverse[0].attribute.qualifiers).to be_instance_of(Array)
1257
+ expect(x.inverse[0].attribute.qualifiers.count).to eq(1)
1258
+ expect(x.inverse[0].attribute.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::AttributeQualifier)
1259
+ expect(x.inverse[0].attribute.qualifiers[0].attribute).to be_instance_of(Expressir::Model::Ref)
1260
+ expect(x.inverse[0].attribute.qualifiers[0].attribute.id).to eq("test")
1261
+ end
1262
+
1263
+ entities.find{|x| x.id == "inverseAttributeSetEntity"}.tap do |x|
1264
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1265
+ expect(x.inverse).to be_instance_of(Array)
1266
+ expect(x.inverse.count).to eq(1)
1267
+ expect(x.inverse[0]).to be_instance_of(Expressir::Model::Inverse)
1268
+ expect(x.inverse[0].id).to eq("test")
1269
+ expect(x.inverse[0].type).to be_instance_of(Expressir::Model::Types::Set)
1270
+ expect(x.inverse[0].type.base_type).to be_instance_of(Expressir::Model::Ref)
1271
+ expect(x.inverse[0].type.base_type.id).to eq("explicitAttributeEntity")
1272
+ expect(x.inverse[0].attribute).to be_instance_of(Expressir::Model::Ref)
1273
+ expect(x.inverse[0].attribute.id).to eq("test")
1274
+ end
1275
+
1276
+ entities.find{|x| x.id == "inverseAttributeSetBoundEntity"}.tap do |x|
1277
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1278
+ expect(x.inverse).to be_instance_of(Array)
1279
+ expect(x.inverse.count).to eq(1)
1280
+ expect(x.inverse[0]).to be_instance_of(Expressir::Model::Inverse)
1281
+ expect(x.inverse[0].id).to eq("test")
1282
+ expect(x.inverse[0].type).to be_instance_of(Expressir::Model::Types::Set)
1283
+ expect(x.inverse[0].type.bound1).to eq(1)
1284
+ expect(x.inverse[0].type.bound2).to eq(9)
1285
+ expect(x.inverse[0].type.base_type).to be_instance_of(Expressir::Model::Ref)
1286
+ expect(x.inverse[0].type.base_type.id).to eq("explicitAttributeEntity")
1287
+ expect(x.inverse[0].attribute).to be_instance_of(Expressir::Model::Ref)
1288
+ expect(x.inverse[0].attribute.id).to eq("test")
1289
+ end
1290
+
1291
+ entities.find{|x| x.id == "inverseAttributeBagEntity"}.tap do |x|
1292
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1293
+ expect(x.inverse).to be_instance_of(Array)
1294
+ expect(x.inverse.count).to eq(1)
1295
+ expect(x.inverse[0]).to be_instance_of(Expressir::Model::Inverse)
1296
+ expect(x.inverse[0].id).to eq("test")
1297
+ expect(x.inverse[0].type).to be_instance_of(Expressir::Model::Types::Bag)
1298
+ expect(x.inverse[0].type.base_type).to be_instance_of(Expressir::Model::Ref)
1299
+ expect(x.inverse[0].type.base_type.id).to eq("explicitAttributeEntity")
1300
+ expect(x.inverse[0].attribute).to be_instance_of(Expressir::Model::Ref)
1301
+ expect(x.inverse[0].attribute.id).to eq("test")
1302
+ end
1303
+
1304
+ entities.find{|x| x.id == "inverseAttributeBagBoundEntity"}.tap do |x|
1305
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1306
+ expect(x.inverse).to be_instance_of(Array)
1307
+ expect(x.inverse.count).to eq(1)
1308
+ expect(x.inverse[0]).to be_instance_of(Expressir::Model::Inverse)
1309
+ expect(x.inverse[0].id).to eq("test")
1310
+ expect(x.inverse[0].type).to be_instance_of(Expressir::Model::Types::Bag)
1311
+ expect(x.inverse[0].type.bound1).to eq(1)
1312
+ expect(x.inverse[0].type.bound2).to eq(9)
1313
+ expect(x.inverse[0].type.base_type).to be_instance_of(Expressir::Model::Ref)
1314
+ expect(x.inverse[0].type.base_type.id).to eq("explicitAttributeEntity")
1315
+ expect(x.inverse[0].attribute).to be_instance_of(Expressir::Model::Ref)
1316
+ expect(x.inverse[0].attribute.id).to eq("test")
1317
+ end
1318
+
1319
+ entities.find{|x| x.id == "uniqueEntity"}.tap do |x|
1320
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1321
+ expect(x.unique).to be_instance_of(Array)
1322
+ expect(x.unique.count).to eq(1)
1323
+ expect(x.unique[0]).to be_instance_of(Expressir::Model::Unique)
1324
+ expect(x.unique[0].attributes).to be_instance_of(Array)
1325
+ expect(x.unique[0].attributes.count).to eq(1)
1326
+ expect(x.unique[0].attributes[0]).to be_instance_of(Expressir::Model::Ref)
1327
+ expect(x.unique[0].attributes[0].id).to eq("test")
1328
+ end
1329
+
1330
+ entities.find{|x| x.id == "uniqueLabelEntity"}.tap do |x|
1331
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1332
+ expect(x.unique).to be_instance_of(Array)
1333
+ expect(x.unique.count).to eq(1)
1334
+ expect(x.unique[0]).to be_instance_of(Expressir::Model::Unique)
1335
+ expect(x.unique[0].id).to eq("UR1")
1336
+ expect(x.unique[0].attributes).to be_instance_of(Array)
1337
+ expect(x.unique[0].attributes.count).to eq(1)
1338
+ expect(x.unique[0].attributes[0]).to be_instance_of(Expressir::Model::Ref)
1339
+ expect(x.unique[0].attributes[0].id).to eq("test")
1340
+ end
1341
+
1342
+ entities.find{|x| x.id == "uniqueQualifiedEntity"}.tap do |x|
1343
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1344
+ expect(x.unique).to be_instance_of(Array)
1345
+ expect(x.unique.count).to eq(1)
1346
+ expect(x.unique[0]).to be_instance_of(Expressir::Model::Unique)
1347
+ expect(x.unique[0].attributes).to be_instance_of(Array)
1348
+ expect(x.unique[0].attributes.count).to eq(1)
1349
+ expect(x.unique[0].attributes[0]).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
1350
+ expect(x.unique[0].attributes[0].ref).to be_instance_of(Expressir::Model::Ref)
1351
+ expect(x.unique[0].attributes[0].ref.id).to eq("SELF")
1352
+ expect(x.unique[0].attributes[0].qualifiers).to be_instance_of(Array)
1353
+ expect(x.unique[0].attributes[0].qualifiers.count).to eq(2)
1354
+ expect(x.unique[0].attributes[0].qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::GroupQualifier)
1355
+ expect(x.unique[0].attributes[0].qualifiers[0].entity).to be_instance_of(Expressir::Model::Ref)
1356
+ expect(x.unique[0].attributes[0].qualifiers[0].entity.id).to eq("explicitAttributeEntity")
1357
+ expect(x.unique[0].attributes[0].qualifiers[1]).to be_instance_of(Expressir::Model::Expressions::AttributeQualifier)
1358
+ expect(x.unique[0].attributes[0].qualifiers[1].attribute).to be_instance_of(Expressir::Model::Ref)
1359
+ expect(x.unique[0].attributes[0].qualifiers[1].attribute.id).to eq("test")
1360
+ end
1361
+
1362
+ entities.find{|x| x.id == "uniqueLabelEntity"}.tap do |x|
1363
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1364
+ expect(x.unique).to be_instance_of(Array)
1365
+ expect(x.unique.count).to eq(1)
1366
+ expect(x.unique[0]).to be_instance_of(Expressir::Model::Unique)
1367
+ expect(x.unique[0].id).to eq("UR1")
1368
+ expect(x.unique[0].attributes).to be_instance_of(Array)
1369
+ expect(x.unique[0].attributes.count).to eq(1)
1370
+ expect(x.unique[0].attributes[0]).to be_instance_of(Expressir::Model::Ref)
1371
+ expect(x.unique[0].attributes[0].id).to eq("test")
1372
+ end
1373
+
1374
+ entities.find{|x| x.id == "uniqueLabelQualifiedEntity"}.tap do |x|
1375
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1376
+ expect(x.unique).to be_instance_of(Array)
1377
+ expect(x.unique.count).to eq(1)
1378
+ expect(x.unique[0]).to be_instance_of(Expressir::Model::Unique)
1379
+ expect(x.unique[0].id).to eq("UR1")
1380
+ expect(x.unique[0].attributes).to be_instance_of(Array)
1381
+ expect(x.unique[0].attributes.count).to eq(1)
1382
+ expect(x.unique[0].attributes[0]).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
1383
+ expect(x.unique[0].attributes[0].ref).to be_instance_of(Expressir::Model::Ref)
1384
+ expect(x.unique[0].attributes[0].ref.id).to eq("SELF")
1385
+ expect(x.unique[0].attributes[0].qualifiers).to be_instance_of(Array)
1386
+ expect(x.unique[0].attributes[0].qualifiers.count).to eq(2)
1387
+ expect(x.unique[0].attributes[0].qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::GroupQualifier)
1388
+ expect(x.unique[0].attributes[0].qualifiers[0].entity).to be_instance_of(Expressir::Model::Ref)
1389
+ expect(x.unique[0].attributes[0].qualifiers[0].entity.id).to eq("explicitAttributeEntity")
1390
+ expect(x.unique[0].attributes[0].qualifiers[1]).to be_instance_of(Expressir::Model::Expressions::AttributeQualifier)
1391
+ expect(x.unique[0].attributes[0].qualifiers[1].attribute).to be_instance_of(Expressir::Model::Ref)
1392
+ expect(x.unique[0].attributes[0].qualifiers[1].attribute.id).to eq("test")
1393
+ end
1394
+
1395
+ entities.find{|x| x.id == "whereEntity"}.tap do |x|
1396
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1397
+ expect(x.where).to be_instance_of(Array)
1398
+ expect(x.where.count).to eq(1)
1399
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
1400
+ expect(x.where[0].expression).to eq(true)
1401
+ end
1402
+
1403
+ entities.find{|x| x.id == "whereLabelEntity"}.tap do |x|
1404
+ expect(x).to be_instance_of(Expressir::Model::Entity)
1405
+ expect(x.where).to be_instance_of(Array)
1406
+ expect(x.where.count).to eq(1)
1407
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
1408
+ expect(x.where[0].id).to eq("WR1")
1409
+ expect(x.where[0].expression).to eq(true)
1410
+ end
1411
+
1412
+ # subtype constraints
1413
+ subtype_constraints.find{|x| x.id == "emptySubtypeConstraint"}.tap do |x|
1414
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1415
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1416
+ expect(x.applies_to.id).to eq("emptyEntity")
1417
+ end
1418
+
1419
+ subtype_constraints.find{|x| x.id == "abstractSupertypeSubtypeConstraint"}.tap do |x|
1420
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1421
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1422
+ expect(x.applies_to.id).to eq("emptyEntity")
1423
+ expect(x.abstract_supertype).to eq(true)
1424
+ end
1425
+
1426
+ subtype_constraints.find{|x| x.id == "totalOverSubtypeConstraint"}.tap do |x|
1427
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1428
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1429
+ expect(x.applies_to.id).to eq("emptyEntity")
1430
+ expect(x.total_over).to be_instance_of(Array)
1431
+ expect(x.total_over.count).to eq(1)
1432
+ expect(x.total_over[0]).to be_instance_of(Expressir::Model::Ref)
1433
+ expect(x.total_over[0].id).to eq("a")
1434
+ end
1435
+
1436
+ subtype_constraints.find{|x| x.id == "supertypeExpressionSubtypeConstraint"}.tap do |x|
1437
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1438
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1439
+ expect(x.applies_to.id).to eq("emptyEntity")
1440
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Ref)
1441
+ expect(x.subtype_expression.id).to eq("a")
1442
+ end
1443
+
1444
+ subtype_constraints.find{|x| x.id == "supertypeExpressionAndorSubtypeConstraint"}.tap do |x|
1445
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1446
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1447
+ expect(x.applies_to.id).to eq("emptyEntity")
1448
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1449
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::Andor)
1450
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1451
+ expect(x.subtype_expression.operands.count).to eq(2)
1452
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Ref)
1453
+ expect(x.subtype_expression.operands[0].id).to eq("a")
1454
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Ref)
1455
+ expect(x.subtype_expression.operands[1].id).to eq("b")
1456
+ end
1457
+
1458
+ subtype_constraints.find{|x| x.id == "supertypeExpressionAndSubtypeConstraint"}.tap do |x|
1459
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1460
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1461
+ expect(x.applies_to.id).to eq("emptyEntity")
1462
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1463
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::And)
1464
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1465
+ expect(x.subtype_expression.operands.count).to eq(2)
1466
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Ref)
1467
+ expect(x.subtype_expression.operands[0].id).to eq("a")
1468
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Ref)
1469
+ expect(x.subtype_expression.operands[1].id).to eq("b")
1470
+ end
1471
+
1472
+ subtype_constraints.find{|x| x.id == "supertypeExpressionAndorAndSubtypeConstraint"}.tap do |x|
1473
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1474
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1475
+ expect(x.applies_to.id).to eq("emptyEntity")
1476
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1477
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::Andor)
1478
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1479
+ expect(x.subtype_expression.operands.count).to eq(2)
1480
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Ref)
1481
+ expect(x.subtype_expression.operands[0].id).to eq("a")
1482
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
1483
+ expect(x.subtype_expression.operands[1].operator).to be_instance_of(Expressir::Model::Operators::And)
1484
+ expect(x.subtype_expression.operands[1].operands).to be_instance_of(Array)
1485
+ expect(x.subtype_expression.operands[1].operands.count).to eq(2)
1486
+ expect(x.subtype_expression.operands[1].operands[0]).to be_instance_of(Expressir::Model::Ref)
1487
+ expect(x.subtype_expression.operands[1].operands[0].id).to eq("b")
1488
+ expect(x.subtype_expression.operands[1].operands[1]).to be_instance_of(Expressir::Model::Ref)
1489
+ expect(x.subtype_expression.operands[1].operands[1].id).to eq("c")
1490
+ end
1491
+
1492
+ subtype_constraints.find{|x| x.id == "supertypeExpressionAndAndorSubtypeConstraint"}.tap do |x|
1493
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1494
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1495
+ expect(x.applies_to.id).to eq("emptyEntity")
1496
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1497
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::Andor)
1498
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1499
+ expect(x.subtype_expression.operands.count).to eq(2)
1500
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
1501
+ expect(x.subtype_expression.operands[0].operator).to be_instance_of(Expressir::Model::Operators::And)
1502
+ expect(x.subtype_expression.operands[0].operands).to be_instance_of(Array)
1503
+ expect(x.subtype_expression.operands[0].operands.count).to eq(2)
1504
+ expect(x.subtype_expression.operands[0].operands[0]).to be_instance_of(Expressir::Model::Ref)
1505
+ expect(x.subtype_expression.operands[0].operands[0].id).to eq("a")
1506
+ expect(x.subtype_expression.operands[0].operands[1]).to be_instance_of(Expressir::Model::Ref)
1507
+ expect(x.subtype_expression.operands[0].operands[1].id).to eq("b")
1508
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Ref)
1509
+ expect(x.subtype_expression.operands[1].id).to eq("c")
1510
+ end
1511
+
1512
+ subtype_constraints.find{|x| x.id == "supertypeExpressionParenthesisAndorAndSubtypeConstraint"}.tap do |x|
1513
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1514
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1515
+ expect(x.applies_to.id).to eq("emptyEntity")
1516
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1517
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::And)
1518
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1519
+ expect(x.subtype_expression.operands.count).to eq(2)
1520
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
1521
+ expect(x.subtype_expression.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Andor)
1522
+ expect(x.subtype_expression.operands[0].operands).to be_instance_of(Array)
1523
+ expect(x.subtype_expression.operands[0].operands.count).to eq(2)
1524
+ expect(x.subtype_expression.operands[0].operands[0]).to be_instance_of(Expressir::Model::Ref)
1525
+ expect(x.subtype_expression.operands[0].operands[0].id).to eq("a")
1526
+ expect(x.subtype_expression.operands[0].operands[1]).to be_instance_of(Expressir::Model::Ref)
1527
+ expect(x.subtype_expression.operands[0].operands[1].id).to eq("b")
1528
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Ref)
1529
+ expect(x.subtype_expression.operands[1].id).to eq("c")
1530
+ end
1531
+
1532
+ subtype_constraints.find{|x| x.id == "supertypeExpressionAndParenthesisAndorSubtypeConstraint"}.tap do |x|
1533
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1534
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1535
+ expect(x.applies_to.id).to eq("emptyEntity")
1536
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1537
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::And)
1538
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1539
+ expect(x.subtype_expression.operands.count).to eq(2)
1540
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Ref)
1541
+ expect(x.subtype_expression.operands[0].id).to eq("a")
1542
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
1543
+ expect(x.subtype_expression.operands[1].operator).to be_instance_of(Expressir::Model::Operators::Andor)
1544
+ expect(x.subtype_expression.operands[1].operands).to be_instance_of(Array)
1545
+ expect(x.subtype_expression.operands[1].operands.count).to eq(2)
1546
+ expect(x.subtype_expression.operands[1].operands[0]).to be_instance_of(Expressir::Model::Ref)
1547
+ expect(x.subtype_expression.operands[1].operands[0].id).to eq("b")
1548
+ expect(x.subtype_expression.operands[1].operands[1]).to be_instance_of(Expressir::Model::Ref)
1549
+ expect(x.subtype_expression.operands[1].operands[1].id).to eq("c")
1550
+ end
1551
+
1552
+ subtype_constraints.find{|x| x.id == "supertypeExpressionOneofSubtypeConstraint"}.tap do |x|
1553
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1554
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1555
+ expect(x.applies_to.id).to eq("emptyEntity")
1556
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1557
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::Oneof)
1558
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1559
+ expect(x.subtype_expression.operands.count).to eq(2)
1560
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Ref)
1561
+ expect(x.subtype_expression.operands[0].id).to eq("a")
1562
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Ref)
1563
+ expect(x.subtype_expression.operands[1].id).to eq("b")
1564
+ end
1565
+
1566
+ subtype_constraints.find{|x| x.id == "supertypeExpressionAndOneofSubtypeConstraint"}.tap do |x|
1567
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1568
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1569
+ expect(x.applies_to.id).to eq("emptyEntity")
1570
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1571
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::And)
1572
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1573
+ expect(x.subtype_expression.operands.count).to eq(2)
1574
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Ref)
1575
+ expect(x.subtype_expression.operands[0].id).to eq("a")
1576
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
1577
+ expect(x.subtype_expression.operands[1].operator).to be_instance_of(Expressir::Model::Operators::Oneof)
1578
+ expect(x.subtype_expression.operands[1].operands).to be_instance_of(Array)
1579
+ expect(x.subtype_expression.operands[1].operands.count).to eq(2)
1580
+ expect(x.subtype_expression.operands[1].operands[0]).to be_instance_of(Expressir::Model::Ref)
1581
+ expect(x.subtype_expression.operands[1].operands[0].id).to eq("b")
1582
+ expect(x.subtype_expression.operands[1].operands[1]).to be_instance_of(Expressir::Model::Ref)
1583
+ expect(x.subtype_expression.operands[1].operands[1].id).to eq("c")
1584
+ end
1585
+
1586
+ subtype_constraints.find{|x| x.id == "supertypeExpressionAndorOneofSubtypeConstraint"}.tap do |x|
1587
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1588
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1589
+ expect(x.applies_to.id).to eq("emptyEntity")
1590
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1591
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::Andor)
1592
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1593
+ expect(x.subtype_expression.operands.count).to eq(2)
1594
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Ref)
1595
+ expect(x.subtype_expression.operands[0].id).to eq("a")
1596
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
1597
+ expect(x.subtype_expression.operands[1].operator).to be_instance_of(Expressir::Model::Operators::Oneof)
1598
+ expect(x.subtype_expression.operands[1].operands).to be_instance_of(Array)
1599
+ expect(x.subtype_expression.operands[1].operands.count).to eq(2)
1600
+ expect(x.subtype_expression.operands[1].operands[0]).to be_instance_of(Expressir::Model::Ref)
1601
+ expect(x.subtype_expression.operands[1].operands[0].id).to eq("b")
1602
+ expect(x.subtype_expression.operands[1].operands[1]).to be_instance_of(Expressir::Model::Ref)
1603
+ expect(x.subtype_expression.operands[1].operands[1].id).to eq("c")
1604
+ end
1605
+
1606
+ subtype_constraints.find{|x| x.id == "supertypeExpressionOneofAndSubtypeConstraint"}.tap do |x|
1607
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1608
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1609
+ expect(x.applies_to.id).to eq("emptyEntity")
1610
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1611
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::And)
1612
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1613
+ expect(x.subtype_expression.operands.count).to eq(2)
1614
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
1615
+ expect(x.subtype_expression.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Oneof)
1616
+ expect(x.subtype_expression.operands[0].operands).to be_instance_of(Array)
1617
+ expect(x.subtype_expression.operands[0].operands.count).to eq(2)
1618
+ expect(x.subtype_expression.operands[0].operands[0]).to be_instance_of(Expressir::Model::Ref)
1619
+ expect(x.subtype_expression.operands[0].operands[0].id).to eq("a")
1620
+ expect(x.subtype_expression.operands[0].operands[1]).to be_instance_of(Expressir::Model::Ref)
1621
+ expect(x.subtype_expression.operands[0].operands[1].id).to eq("b")
1622
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Ref)
1623
+ expect(x.subtype_expression.operands[1].id).to eq("c")
1624
+ end
1625
+
1626
+ subtype_constraints.find{|x| x.id == "supertypeExpressionOneofAndorSubtypeConstraint"}.tap do |x|
1627
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1628
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1629
+ expect(x.applies_to.id).to eq("emptyEntity")
1630
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1631
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::Andor)
1632
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1633
+ expect(x.subtype_expression.operands.count).to eq(2)
1634
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
1635
+ expect(x.subtype_expression.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Oneof)
1636
+ expect(x.subtype_expression.operands[0].operands).to be_instance_of(Array)
1637
+ expect(x.subtype_expression.operands[0].operands.count).to eq(2)
1638
+ expect(x.subtype_expression.operands[0].operands[0]).to be_instance_of(Expressir::Model::Ref)
1639
+ expect(x.subtype_expression.operands[0].operands[0].id).to eq("a")
1640
+ expect(x.subtype_expression.operands[0].operands[1]).to be_instance_of(Expressir::Model::Ref)
1641
+ expect(x.subtype_expression.operands[0].operands[1].id).to eq("b")
1642
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Ref)
1643
+ expect(x.subtype_expression.operands[1].id).to eq("c")
1644
+ end
1645
+
1646
+ subtype_constraints.find{|x| x.id == "supertypeExpressionOneofAndOneofSubtypeConstraint"}.tap do |x|
1647
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1648
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1649
+ expect(x.applies_to.id).to eq("emptyEntity")
1650
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1651
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::And)
1652
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1653
+ expect(x.subtype_expression.operands.count).to eq(2)
1654
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
1655
+ expect(x.subtype_expression.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Oneof)
1656
+ expect(x.subtype_expression.operands[0].operands).to be_instance_of(Array)
1657
+ expect(x.subtype_expression.operands[0].operands.count).to eq(2)
1658
+ expect(x.subtype_expression.operands[0].operands[0]).to be_instance_of(Expressir::Model::Ref)
1659
+ expect(x.subtype_expression.operands[0].operands[0].id).to eq("a")
1660
+ expect(x.subtype_expression.operands[0].operands[1]).to be_instance_of(Expressir::Model::Ref)
1661
+ expect(x.subtype_expression.operands[0].operands[1].id).to eq("b")
1662
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
1663
+ expect(x.subtype_expression.operands[1].operator).to be_instance_of(Expressir::Model::Operators::Oneof)
1664
+ expect(x.subtype_expression.operands[1].operands).to be_instance_of(Array)
1665
+ expect(x.subtype_expression.operands[1].operands.count).to eq(2)
1666
+ expect(x.subtype_expression.operands[1].operands[0]).to be_instance_of(Expressir::Model::Ref)
1667
+ expect(x.subtype_expression.operands[1].operands[0].id).to eq("c")
1668
+ expect(x.subtype_expression.operands[1].operands[1]).to be_instance_of(Expressir::Model::Ref)
1669
+ expect(x.subtype_expression.operands[1].operands[1].id).to eq("d")
1670
+ end
1671
+
1672
+ subtype_constraints.find{|x| x.id == "supertypeExpressionOneofAndorOneofSubtypeConstraint"}.tap do |x|
1673
+ expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
1674
+ expect(x.applies_to).to be_instance_of(Expressir::Model::Ref)
1675
+ expect(x.applies_to.id).to eq("emptyEntity")
1676
+ expect(x.subtype_expression).to be_instance_of(Expressir::Model::Expressions::Expression)
1677
+ expect(x.subtype_expression.operator).to be_instance_of(Expressir::Model::Operators::Andor)
1678
+ expect(x.subtype_expression.operands).to be_instance_of(Array)
1679
+ expect(x.subtype_expression.operands.count).to eq(2)
1680
+ expect(x.subtype_expression.operands[0]).to be_instance_of(Expressir::Model::Expressions::Expression)
1681
+ expect(x.subtype_expression.operands[0].operator).to be_instance_of(Expressir::Model::Operators::Oneof)
1682
+ expect(x.subtype_expression.operands[0].operands).to be_instance_of(Array)
1683
+ expect(x.subtype_expression.operands[0].operands.count).to eq(2)
1684
+ expect(x.subtype_expression.operands[0].operands[0]).to be_instance_of(Expressir::Model::Ref)
1685
+ expect(x.subtype_expression.operands[0].operands[0].id).to eq("a")
1686
+ expect(x.subtype_expression.operands[0].operands[1]).to be_instance_of(Expressir::Model::Ref)
1687
+ expect(x.subtype_expression.operands[0].operands[1].id).to eq("b")
1688
+ expect(x.subtype_expression.operands[1]).to be_instance_of(Expressir::Model::Expressions::Expression)
1689
+ expect(x.subtype_expression.operands[1].operator).to be_instance_of(Expressir::Model::Operators::Oneof)
1690
+ expect(x.subtype_expression.operands[1].operands).to be_instance_of(Array)
1691
+ expect(x.subtype_expression.operands[1].operands.count).to eq(2)
1692
+ expect(x.subtype_expression.operands[1].operands[0]).to be_instance_of(Expressir::Model::Ref)
1693
+ expect(x.subtype_expression.operands[1].operands[0].id).to eq("c")
1694
+ expect(x.subtype_expression.operands[1].operands[1]).to be_instance_of(Expressir::Model::Ref)
1695
+ expect(x.subtype_expression.operands[1].operands[1].id).to eq("d")
1696
+ end
1697
+
1698
+ # functions
1699
+ functions.find{|x| x.id == "emptyFunction"}.tap do |x|
1700
+ expect(x).to be_instance_of(Expressir::Model::Function)
1701
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1702
+ expect(x.statements).to be_instance_of(Array)
1703
+ expect(x.statements.count).to eq(1)
1704
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1705
+ end
1706
+
1707
+ functions.find{|x| x.id == "parameterFunction"}.tap do |x|
1708
+ expect(x).to be_instance_of(Expressir::Model::Function)
1709
+ expect(x.parameters).to be_instance_of(Array)
1710
+ expect(x.parameters.count).to eq(1)
1711
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1712
+ expect(x.parameters[0].id).to eq("test")
1713
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1714
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1715
+ expect(x.statements).to be_instance_of(Array)
1716
+ expect(x.statements.count).to eq(1)
1717
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1718
+ end
1719
+
1720
+ functions.find{|x| x.id == "multipleParameterFunction"}.tap do |x|
1721
+ expect(x).to be_instance_of(Expressir::Model::Function)
1722
+ expect(x.parameters).to be_instance_of(Array)
1723
+ expect(x.parameters.count).to eq(2)
1724
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1725
+ expect(x.parameters[0].id).to eq("test")
1726
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1727
+ expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1728
+ expect(x.parameters[1].id).to eq("test2")
1729
+ expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1730
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1731
+ expect(x.statements).to be_instance_of(Array)
1732
+ expect(x.statements.count).to eq(1)
1733
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1734
+ end
1735
+
1736
+ functions.find{|x| x.id == "multipleShorthandParameterFunction"}.tap do |x|
1737
+ expect(x).to be_instance_of(Expressir::Model::Function)
1738
+ expect(x.parameters).to be_instance_of(Array)
1739
+ expect(x.parameters.count).to eq(2)
1740
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1741
+ expect(x.parameters[0].id).to eq("test")
1742
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1743
+ expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1744
+ expect(x.parameters[1].id).to eq("test2")
1745
+ expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1746
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1747
+ expect(x.statements).to be_instance_of(Array)
1748
+ expect(x.statements.count).to eq(1)
1749
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1750
+ end
1751
+
1752
+ functions.find{|x| x.id == "typeFunction"}.tap do |x|
1753
+ expect(x).to be_instance_of(Expressir::Model::Function)
1754
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1755
+ expect(x.declarations).to be_instance_of(Array)
1756
+ expect(x.declarations.count).to eq(1)
1757
+ expect(x.declarations[0]).to be_instance_of(Expressir::Model::Type)
1758
+ expect(x.declarations[0].id).to eq("integerType")
1759
+ expect(x.declarations[0].type).to be_instance_of(Expressir::Model::Types::Integer)
1760
+ expect(x.statements).to be_instance_of(Array)
1761
+ expect(x.statements.count).to eq(1)
1762
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1763
+ end
1764
+
1765
+ functions.find{|x| x.id == "constantFunction"}.tap do |x|
1766
+ expect(x).to be_instance_of(Expressir::Model::Function)
1767
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1768
+ expect(x.constants).to be_instance_of(Array)
1769
+ expect(x.constants.count).to eq(1)
1770
+ expect(x.constants[0]).to be_instance_of(Expressir::Model::Constant)
1771
+ expect(x.constants[0].id).to eq("test")
1772
+ expect(x.constants[0].type).to be_instance_of(Expressir::Model::Types::String)
1773
+ expect(x.constants[0].expression).to eq("xxx")
1774
+ expect(x.statements).to be_instance_of(Array)
1775
+ expect(x.statements.count).to eq(1)
1776
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1777
+ end
1778
+
1779
+ functions.find{|x| x.id == "multipleConstantFunction"}.tap do |x|
1780
+ expect(x).to be_instance_of(Expressir::Model::Function)
1781
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1782
+ expect(x.constants).to be_instance_of(Array)
1783
+ expect(x.constants.count).to eq(2)
1784
+ expect(x.constants[0]).to be_instance_of(Expressir::Model::Constant)
1785
+ expect(x.constants[0].id).to eq("test")
1786
+ expect(x.constants[0].type).to be_instance_of(Expressir::Model::Types::String)
1787
+ expect(x.constants[0].expression).to eq("xxx")
1788
+ expect(x.constants[1]).to be_instance_of(Expressir::Model::Constant)
1789
+ expect(x.constants[1].id).to eq("test2")
1790
+ expect(x.constants[1].type).to be_instance_of(Expressir::Model::Types::String)
1791
+ expect(x.constants[1].expression).to eq("xxx")
1792
+ expect(x.statements).to be_instance_of(Array)
1793
+ expect(x.statements.count).to eq(1)
1794
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1795
+ end
1796
+
1797
+ functions.find{|x| x.id == "localFunction"}.tap do |x|
1798
+ expect(x).to be_instance_of(Expressir::Model::Function)
1799
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1800
+ expect(x.locals).to be_instance_of(Array)
1801
+ expect(x.locals.count).to eq(1)
1802
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
1803
+ expect(x.locals[0].id).to eq("test")
1804
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
1805
+ expect(x.statements).to be_instance_of(Array)
1806
+ expect(x.statements.count).to eq(1)
1807
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1808
+ end
1809
+
1810
+ functions.find{|x| x.id == "multipleLocalFunction"}.tap do |x|
1811
+ expect(x).to be_instance_of(Expressir::Model::Function)
1812
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1813
+ expect(x.locals).to be_instance_of(Array)
1814
+ expect(x.locals.count).to eq(2)
1815
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
1816
+ expect(x.locals[0].id).to eq("test")
1817
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
1818
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
1819
+ expect(x.locals[1].id).to eq("test2")
1820
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
1821
+ expect(x.statements).to be_instance_of(Array)
1822
+ expect(x.statements.count).to eq(1)
1823
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1824
+ end
1825
+
1826
+ functions.find{|x| x.id == "multipleShorthandLocalFunction"}.tap do |x|
1827
+ expect(x).to be_instance_of(Expressir::Model::Function)
1828
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1829
+ expect(x.locals).to be_instance_of(Array)
1830
+ expect(x.locals.count).to eq(2)
1831
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
1832
+ expect(x.locals[0].id).to eq("test")
1833
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
1834
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
1835
+ expect(x.locals[1].id).to eq("test2")
1836
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
1837
+ expect(x.statements).to be_instance_of(Array)
1838
+ expect(x.statements.count).to eq(1)
1839
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1840
+ end
1841
+
1842
+ functions.find{|x| x.id == "localExpressionFunction"}.tap do |x|
1843
+ expect(x).to be_instance_of(Expressir::Model::Function)
1844
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1845
+ expect(x.locals).to be_instance_of(Array)
1846
+ expect(x.locals.count).to eq(1)
1847
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
1848
+ expect(x.locals[0].id).to eq("test")
1849
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
1850
+ expect(x.locals[0].expression).to eq("xxx")
1851
+ expect(x.statements).to be_instance_of(Array)
1852
+ expect(x.statements.count).to eq(1)
1853
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1854
+ end
1855
+
1856
+ functions.find{|x| x.id == "multipleLocalExpressionFunction"}.tap do |x|
1857
+ expect(x).to be_instance_of(Expressir::Model::Function)
1858
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1859
+ expect(x.locals).to be_instance_of(Array)
1860
+ expect(x.locals.count).to eq(2)
1861
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
1862
+ expect(x.locals[0].id).to eq("test")
1863
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
1864
+ expect(x.locals[0].expression).to eq("xxx")
1865
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
1866
+ expect(x.locals[1].id).to eq("test2")
1867
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
1868
+ expect(x.locals[1].expression).to eq("xxx")
1869
+ expect(x.statements).to be_instance_of(Array)
1870
+ expect(x.statements.count).to eq(1)
1871
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1872
+ end
1873
+
1874
+ functions.find{|x| x.id == "multipleShorthandLocalExpressionFunction"}.tap do |x|
1875
+ expect(x).to be_instance_of(Expressir::Model::Function)
1876
+ expect(x.return_type).to be_instance_of(Expressir::Model::Types::Boolean)
1877
+ expect(x.locals).to be_instance_of(Array)
1878
+ expect(x.locals.count).to eq(2)
1879
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
1880
+ expect(x.locals[0].id).to eq("test")
1881
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
1882
+ expect(x.locals[0].expression).to eq("xxx")
1883
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
1884
+ expect(x.locals[1].id).to eq("test2")
1885
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
1886
+ expect(x.locals[1].expression).to eq("xxx")
1887
+ expect(x.statements).to be_instance_of(Array)
1888
+ expect(x.statements.count).to eq(1)
1889
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
1890
+ end
1891
+
1892
+ # procedures
1893
+ procedures.find{|x| x.id == "emptyProcedure"}.tap do |x|
1894
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1895
+ end
1896
+
1897
+ procedures.find{|x| x.id == "parameterProcedure"}.tap do |x|
1898
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1899
+ expect(x.parameters).to be_instance_of(Array)
1900
+ expect(x.parameters.count).to eq(1)
1901
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1902
+ expect(x.parameters[0].id).to eq("test")
1903
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1904
+ expect(x.parameters[0].var).not_to eq(true)
1905
+ end
1906
+
1907
+ procedures.find{|x| x.id == "multipleParameterProcedure"}.tap do |x|
1908
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1909
+ expect(x.parameters).to be_instance_of(Array)
1910
+ expect(x.parameters.count).to eq(2)
1911
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1912
+ expect(x.parameters[0].id).to eq("test")
1913
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1914
+ expect(x.parameters[0].var).not_to eq(true)
1915
+ expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1916
+ expect(x.parameters[1].id).to eq("test2")
1917
+ expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1918
+ expect(x.parameters[1].var).not_to eq(true)
1919
+ end
1920
+
1921
+ procedures.find{|x| x.id == "multipleShorthandParameterProcedure"}.tap do |x|
1922
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1923
+ expect(x.parameters).to be_instance_of(Array)
1924
+ expect(x.parameters.count).to eq(2)
1925
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1926
+ expect(x.parameters[0].id).to eq("test")
1927
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1928
+ expect(x.parameters[0].var).not_to eq(true)
1929
+ expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1930
+ expect(x.parameters[1].id).to eq("test2")
1931
+ expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1932
+ expect(x.parameters[1].var).not_to eq(true)
1933
+ end
1934
+
1935
+ procedures.find{|x| x.id == "variableParameterProcedure"}.tap do |x|
1936
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1937
+ expect(x.parameters).to be_instance_of(Array)
1938
+ expect(x.parameters.count).to eq(1)
1939
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1940
+ expect(x.parameters[0].id).to eq("test")
1941
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1942
+ expect(x.parameters[0].var).to eq(true)
1943
+ end
1944
+
1945
+ procedures.find{|x| x.id == "multipleVariableParameterProcedure"}.tap do |x|
1946
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1947
+ expect(x.parameters).to be_instance_of(Array)
1948
+ expect(x.parameters.count).to eq(2)
1949
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1950
+ expect(x.parameters[0].id).to eq("test")
1951
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1952
+ expect(x.parameters[0].var).to eq(true)
1953
+ expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1954
+ expect(x.parameters[1].id).to eq("test2")
1955
+ expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1956
+ expect(x.parameters[1].var).not_to eq(true)
1957
+ end
1958
+
1959
+ procedures.find{|x| x.id == "multipleVariableParameter2Procedure"}.tap do |x|
1960
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1961
+ expect(x.parameters).to be_instance_of(Array)
1962
+ expect(x.parameters.count).to eq(2)
1963
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1964
+ expect(x.parameters[0].id).to eq("test")
1965
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1966
+ expect(x.parameters[0].var).not_to eq(true)
1967
+ expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1968
+ expect(x.parameters[1].id).to eq("test2")
1969
+ expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1970
+ expect(x.parameters[1].var).to eq(true)
1971
+ end
1972
+
1973
+ procedures.find{|x| x.id == "multipleShorthandVariableParameterProcedure"}.tap do |x|
1974
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1975
+ expect(x.parameters).to be_instance_of(Array)
1976
+ expect(x.parameters.count).to eq(2)
1977
+ expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1978
+ expect(x.parameters[0].id).to eq("test")
1979
+ expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1980
+ expect(x.parameters[0].var).to eq(true)
1981
+ expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1982
+ expect(x.parameters[1].id).to eq("test2")
1983
+ expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1984
+ expect(x.parameters[1].var).to eq(true)
1985
+ end
1986
+
1987
+ procedures.find{|x| x.id == "typeProcedure"}.tap do |x|
1988
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1989
+ expect(x.declarations).to be_instance_of(Array)
1990
+ expect(x.declarations.count).to eq(1)
1991
+ expect(x.declarations[0]).to be_instance_of(Expressir::Model::Type)
1992
+ expect(x.declarations[0].id).to eq("integerType")
1993
+ expect(x.declarations[0].type).to be_instance_of(Expressir::Model::Types::Integer)
1994
+ end
1995
+
1996
+ procedures.find{|x| x.id == "constantProcedure"}.tap do |x|
1997
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
1998
+ expect(x.constants).to be_instance_of(Array)
1999
+ expect(x.constants.count).to eq(1)
2000
+ expect(x.constants[0]).to be_instance_of(Expressir::Model::Constant)
2001
+ expect(x.constants[0].id).to eq("test")
2002
+ expect(x.constants[0].type).to be_instance_of(Expressir::Model::Types::String)
2003
+ expect(x.constants[0].expression).to eq("xxx")
2004
+ end
2005
+
2006
+ procedures.find{|x| x.id == "multipleConstantProcedure"}.tap do |x|
2007
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
2008
+ expect(x.constants).to be_instance_of(Array)
2009
+ expect(x.constants.count).to eq(2)
2010
+ expect(x.constants[0]).to be_instance_of(Expressir::Model::Constant)
2011
+ expect(x.constants[0].id).to eq("test")
2012
+ expect(x.constants[0].type).to be_instance_of(Expressir::Model::Types::String)
2013
+ expect(x.constants[0].expression).to eq("xxx")
2014
+ expect(x.constants[1]).to be_instance_of(Expressir::Model::Constant)
2015
+ expect(x.constants[1].id).to eq("test2")
2016
+ expect(x.constants[1].type).to be_instance_of(Expressir::Model::Types::String)
2017
+ expect(x.constants[1].expression).to eq("xxx")
2018
+ end
2019
+
2020
+ procedures.find{|x| x.id == "localProcedure"}.tap do |x|
2021
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
2022
+ expect(x.locals).to be_instance_of(Array)
2023
+ expect(x.locals.count).to eq(1)
2024
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2025
+ expect(x.locals[0].id).to eq("test")
2026
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2027
+ end
2028
+
2029
+ procedures.find{|x| x.id == "multipleLocalProcedure"}.tap do |x|
2030
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
2031
+ expect(x.locals).to be_instance_of(Array)
2032
+ expect(x.locals.count).to eq(2)
2033
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2034
+ expect(x.locals[0].id).to eq("test")
2035
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2036
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
2037
+ expect(x.locals[1].id).to eq("test2")
2038
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
2039
+ end
2040
+
2041
+ procedures.find{|x| x.id == "multipleShorthandLocalProcedure"}.tap do |x|
2042
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
2043
+ expect(x.locals).to be_instance_of(Array)
2044
+ expect(x.locals.count).to eq(2)
2045
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2046
+ expect(x.locals[0].id).to eq("test")
2047
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2048
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
2049
+ expect(x.locals[1].id).to eq("test2")
2050
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
2051
+ end
2052
+
2053
+ procedures.find{|x| x.id == "localExpressionProcedure"}.tap do |x|
2054
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
2055
+ expect(x.locals).to be_instance_of(Array)
2056
+ expect(x.locals.count).to eq(1)
2057
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2058
+ expect(x.locals[0].id).to eq("test")
2059
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2060
+ expect(x.locals[0].expression).to eq("xxx")
2061
+ end
2062
+
2063
+ procedures.find{|x| x.id == "multipleLocalExpressionProcedure"}.tap do |x|
2064
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
2065
+ expect(x.locals).to be_instance_of(Array)
2066
+ expect(x.locals.count).to eq(2)
2067
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2068
+ expect(x.locals[0].id).to eq("test")
2069
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2070
+ expect(x.locals[0].expression).to eq("xxx")
2071
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
2072
+ expect(x.locals[1].id).to eq("test2")
2073
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
2074
+ expect(x.locals[1].expression).to eq("xxx")
2075
+ end
2076
+
2077
+ procedures.find{|x| x.id == "multipleShorthandLocalExpressionProcedure"}.tap do |x|
2078
+ expect(x).to be_instance_of(Expressir::Model::Procedure)
2079
+ expect(x.locals).to be_instance_of(Array)
2080
+ expect(x.locals.count).to eq(2)
2081
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2082
+ expect(x.locals[0].id).to eq("test")
2083
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2084
+ expect(x.locals[0].expression).to eq("xxx")
2085
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
2086
+ expect(x.locals[1].id).to eq("test2")
2087
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
2088
+ expect(x.locals[1].expression).to eq("xxx")
2089
+ end
2090
+
2091
+ # rules
2092
+ rules.find{|x| x.id == "emptyRule"}.tap do |x|
2093
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2094
+ expect(x.applies_to).to be_instance_of(Array)
2095
+ expect(x.applies_to.count).to eq(1)
2096
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2097
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2098
+ expect(x.where).to be_instance_of(Array)
2099
+ expect(x.where.count).to eq(1)
2100
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2101
+ expect(x.where[0].expression).to eq(true)
2102
+ end
2103
+
2104
+ rules.find{|x| x.id == "typeRule"}.tap do |x|
2105
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2106
+ expect(x.applies_to).to be_instance_of(Array)
2107
+ expect(x.applies_to.count).to eq(1)
2108
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2109
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2110
+ expect(x.declarations).to be_instance_of(Array)
2111
+ expect(x.declarations.count).to eq(1)
2112
+ expect(x.declarations[0]).to be_instance_of(Expressir::Model::Type)
2113
+ expect(x.declarations[0].id).to eq("integerType")
2114
+ expect(x.declarations[0].type).to be_instance_of(Expressir::Model::Types::Integer)
2115
+ expect(x.where).to be_instance_of(Array)
2116
+ expect(x.where.count).to eq(1)
2117
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2118
+ expect(x.where[0].expression).to eq(true)
2119
+ end
2120
+
2121
+ rules.find{|x| x.id == "constantRule"}.tap do |x|
2122
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2123
+ expect(x.applies_to).to be_instance_of(Array)
2124
+ expect(x.applies_to.count).to eq(1)
2125
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2126
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2127
+ expect(x.constants).to be_instance_of(Array)
2128
+ expect(x.constants.count).to eq(1)
2129
+ expect(x.constants[0]).to be_instance_of(Expressir::Model::Constant)
2130
+ expect(x.constants[0].id).to eq("test")
2131
+ expect(x.constants[0].type).to be_instance_of(Expressir::Model::Types::String)
2132
+ expect(x.constants[0].expression).to eq("xxx")
2133
+ expect(x.where).to be_instance_of(Array)
2134
+ expect(x.where.count).to eq(1)
2135
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2136
+ expect(x.where[0].expression).to eq(true)
2137
+ end
2138
+
2139
+ rules.find{|x| x.id == "multipleConstantRule"}.tap do |x|
2140
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2141
+ expect(x.applies_to).to be_instance_of(Array)
2142
+ expect(x.applies_to.count).to eq(1)
2143
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2144
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2145
+ expect(x.constants).to be_instance_of(Array)
2146
+ expect(x.constants.count).to eq(2)
2147
+ expect(x.constants[0]).to be_instance_of(Expressir::Model::Constant)
2148
+ expect(x.constants[0].id).to eq("test")
2149
+ expect(x.constants[0].type).to be_instance_of(Expressir::Model::Types::String)
2150
+ expect(x.constants[0].expression).to eq("xxx")
2151
+ expect(x.constants[1]).to be_instance_of(Expressir::Model::Constant)
2152
+ expect(x.constants[1].id).to eq("test2")
2153
+ expect(x.constants[1].type).to be_instance_of(Expressir::Model::Types::String)
2154
+ expect(x.constants[1].expression).to eq("xxx")
2155
+ expect(x.where).to be_instance_of(Array)
2156
+ expect(x.where.count).to eq(1)
2157
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2158
+ expect(x.where[0].expression).to eq(true)
2159
+ end
2160
+
2161
+ rules.find{|x| x.id == "localRule"}.tap do |x|
2162
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2163
+ expect(x.applies_to).to be_instance_of(Array)
2164
+ expect(x.applies_to.count).to eq(1)
2165
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2166
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2167
+ expect(x.locals).to be_instance_of(Array)
2168
+ expect(x.locals.count).to eq(1)
2169
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2170
+ expect(x.locals[0].id).to eq("test")
2171
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2172
+ expect(x.where).to be_instance_of(Array)
2173
+ expect(x.where.count).to eq(1)
2174
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2175
+ expect(x.where[0].expression).to eq(true)
2176
+ end
2177
+
2178
+ rules.find{|x| x.id == "multipleLocalRule"}.tap do |x|
2179
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2180
+ expect(x.applies_to).to be_instance_of(Array)
2181
+ expect(x.applies_to.count).to eq(1)
2182
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2183
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2184
+ expect(x.locals).to be_instance_of(Array)
2185
+ expect(x.locals.count).to eq(2)
2186
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2187
+ expect(x.locals[0].id).to eq("test")
2188
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2189
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
2190
+ expect(x.locals[1].id).to eq("test2")
2191
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
2192
+ expect(x.where).to be_instance_of(Array)
2193
+ expect(x.where.count).to eq(1)
2194
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2195
+ expect(x.where[0].expression).to eq(true)
2196
+ end
2197
+
2198
+ rules.find{|x| x.id == "multipleShorthandLocalRule"}.tap do |x|
2199
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2200
+ expect(x.applies_to).to be_instance_of(Array)
2201
+ expect(x.applies_to.count).to eq(1)
2202
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2203
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2204
+ expect(x.locals).to be_instance_of(Array)
2205
+ expect(x.locals.count).to eq(2)
2206
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2207
+ expect(x.locals[0].id).to eq("test")
2208
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2209
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
2210
+ expect(x.locals[1].id).to eq("test2")
2211
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
2212
+ expect(x.where).to be_instance_of(Array)
2213
+ expect(x.where.count).to eq(1)
2214
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2215
+ expect(x.where[0].expression).to eq(true)
2216
+ end
2217
+
2218
+ rules.find{|x| x.id == "localExpressionRule"}.tap do |x|
2219
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2220
+ expect(x.applies_to).to be_instance_of(Array)
2221
+ expect(x.applies_to.count).to eq(1)
2222
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2223
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2224
+ expect(x.locals).to be_instance_of(Array)
2225
+ expect(x.locals.count).to eq(1)
2226
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2227
+ expect(x.locals[0].id).to eq("test")
2228
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2229
+ expect(x.locals[0].expression).to eq("xxx")
2230
+ expect(x.where).to be_instance_of(Array)
2231
+ expect(x.where.count).to eq(1)
2232
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2233
+ expect(x.where[0].expression).to eq(true)
2234
+ end
2235
+
2236
+ rules.find{|x| x.id == "multipleLocalExpressionRule"}.tap do |x|
2237
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2238
+ expect(x.applies_to).to be_instance_of(Array)
2239
+ expect(x.applies_to.count).to eq(1)
2240
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2241
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2242
+ expect(x.locals).to be_instance_of(Array)
2243
+ expect(x.locals.count).to eq(2)
2244
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2245
+ expect(x.locals[0].id).to eq("test")
2246
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2247
+ expect(x.locals[0].expression).to eq("xxx")
2248
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
2249
+ expect(x.locals[1].id).to eq("test2")
2250
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
2251
+ expect(x.locals[1].expression).to eq("xxx")
2252
+ expect(x.where).to be_instance_of(Array)
2253
+ expect(x.where.count).to eq(1)
2254
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2255
+ expect(x.where[0].expression).to eq(true)
2256
+ end
2257
+
2258
+ rules.find{|x| x.id == "multipleShorthandLocalExpressionRule"}.tap do |x|
2259
+ expect(x).to be_instance_of(Expressir::Model::Rule)
2260
+ expect(x.applies_to).to be_instance_of(Array)
2261
+ expect(x.applies_to.count).to eq(1)
2262
+ expect(x.applies_to[0]).to be_instance_of(Expressir::Model::Ref)
2263
+ expect(x.applies_to[0].id).to eq("emptyEntity")
2264
+ expect(x.locals).to be_instance_of(Array)
2265
+ expect(x.locals.count).to eq(2)
2266
+ expect(x.locals[0]).to be_instance_of(Expressir::Model::Local)
2267
+ expect(x.locals[0].id).to eq("test")
2268
+ expect(x.locals[0].type).to be_instance_of(Expressir::Model::Types::String)
2269
+ expect(x.locals[0].expression).to eq("xxx")
2270
+ expect(x.locals[1]).to be_instance_of(Expressir::Model::Local)
2271
+ expect(x.locals[1].id).to eq("test2")
2272
+ expect(x.locals[1].type).to be_instance_of(Expressir::Model::Types::String)
2273
+ expect(x.locals[1].expression).to eq("xxx")
2274
+ expect(x.where).to be_instance_of(Array)
2275
+ expect(x.where.count).to eq(1)
2276
+ expect(x.where[0]).to be_instance_of(Expressir::Model::Where)
2277
+ expect(x.where[0].expression).to eq(true)
2278
+ end
2279
+
2280
+ # statements
2281
+ functions.find{|x| x.id == "aliasStatement"}.statements[0].tap do |x|
2282
+ expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
2283
+ expect(x.id).to eq("test")
2284
+ expect(x.expression).to be_instance_of(Expressir::Model::Ref)
2285
+ expect(x.expression.id).to eq("test")
2286
+ expect(x.statements).to be_instance_of(Array)
2287
+ expect(x.statements.count).to eq(1)
2288
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2289
+ end
2290
+
2291
+ functions.find{|x| x.id == "aliasAttributeStatement"}.statements[0].tap do |x|
2292
+ expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
2293
+ expect(x.id).to eq("test")
2294
+ expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
2295
+ expect(x.expression.ref).to be_instance_of(Expressir::Model::Ref)
2296
+ expect(x.expression.ref.id).to eq("test")
2297
+ expect(x.expression.qualifiers).to be_instance_of(Array)
2298
+ expect(x.expression.qualifiers.count).to eq(1)
2299
+ expect(x.expression.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::AttributeQualifier)
2300
+ expect(x.expression.qualifiers[0].attribute).to be_instance_of(Expressir::Model::Ref)
2301
+ expect(x.expression.qualifiers[0].attribute.id).to eq("test")
2302
+ expect(x.statements).to be_instance_of(Array)
2303
+ expect(x.statements.count).to eq(1)
2304
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2305
+ end
2306
+
2307
+ functions.find{|x| x.id == "aliasGroupStatement"}.statements[0].tap do |x|
2308
+ expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
2309
+ expect(x.id).to eq("test")
2310
+ expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
2311
+ expect(x.expression.ref).to be_instance_of(Expressir::Model::Ref)
2312
+ expect(x.expression.ref.id).to eq("test")
2313
+ expect(x.expression.qualifiers).to be_instance_of(Array)
2314
+ expect(x.expression.qualifiers.count).to eq(1)
2315
+ expect(x.expression.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::GroupQualifier)
2316
+ expect(x.expression.qualifiers[0].entity).to be_instance_of(Expressir::Model::Ref)
2317
+ expect(x.expression.qualifiers[0].entity.id).to eq("test")
2318
+ expect(x.statements).to be_instance_of(Array)
2319
+ expect(x.statements.count).to eq(1)
2320
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2321
+ end
2322
+
2323
+ functions.find{|x| x.id == "aliasIndexStatement"}.statements[0].tap do |x|
2324
+ expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
2325
+ expect(x.id).to eq("test")
2326
+ expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
2327
+ expect(x.expression.ref).to be_instance_of(Expressir::Model::Ref)
2328
+ expect(x.expression.ref.id).to eq("test")
2329
+ expect(x.expression.qualifiers).to be_instance_of(Array)
2330
+ expect(x.expression.qualifiers.count).to eq(1)
2331
+ expect(x.expression.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::IndexQualifier)
2332
+ expect(x.expression.qualifiers[0].index1).to eq(1)
2333
+ expect(x.statements).to be_instance_of(Array)
2334
+ expect(x.statements.count).to eq(1)
2335
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2336
+ end
2337
+
2338
+ functions.find{|x| x.id == "aliasIndex2Statement"}.statements[0].tap do |x|
2339
+ expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
2340
+ expect(x.id).to eq("test")
2341
+ expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
2342
+ expect(x.expression.ref).to be_instance_of(Expressir::Model::Ref)
2343
+ expect(x.expression.ref.id).to eq("test")
2344
+ expect(x.expression.qualifiers).to be_instance_of(Array)
2345
+ expect(x.expression.qualifiers.count).to eq(1)
2346
+ expect(x.expression.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::IndexQualifier)
2347
+ expect(x.expression.qualifiers[0].index1).to eq(1)
2348
+ expect(x.expression.qualifiers[0].index2).to eq(9)
2349
+ expect(x.statements).to be_instance_of(Array)
2350
+ expect(x.statements.count).to eq(1)
2351
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2352
+ end
2353
+
2354
+ functions.find{|x| x.id == "assignmentStatement"}.statements[0].tap do |x|
2355
+ expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
2356
+ expect(x.ref).to be_instance_of(Expressir::Model::Ref)
2357
+ expect(x.ref.id).to eq("test")
2358
+ expect(x.expression).to eq(true)
2359
+ end
2360
+
2361
+ functions.find{|x| x.id == "assignmentAttributeStatement"}.statements[0].tap do |x|
2362
+ expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
2363
+ expect(x.ref).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
2364
+ expect(x.ref.ref).to be_instance_of(Expressir::Model::Ref)
2365
+ expect(x.ref.ref.id).to eq("test")
2366
+ expect(x.ref.qualifiers).to be_instance_of(Array)
2367
+ expect(x.ref.qualifiers.count).to eq(1)
2368
+ expect(x.ref.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::AttributeQualifier)
2369
+ expect(x.ref.qualifiers[0].attribute).to be_instance_of(Expressir::Model::Ref)
2370
+ expect(x.ref.qualifiers[0].attribute.id).to eq("test")
2371
+ expect(x.expression).to eq(true)
2372
+ end
2373
+
2374
+ functions.find{|x| x.id == "assignmentGroupStatement"}.statements[0].tap do |x|
2375
+ expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
2376
+ expect(x.ref).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
2377
+ expect(x.ref.ref).to be_instance_of(Expressir::Model::Ref)
2378
+ expect(x.ref.ref.id).to eq("test")
2379
+ expect(x.ref.qualifiers).to be_instance_of(Array)
2380
+ expect(x.ref.qualifiers.count).to eq(1)
2381
+ expect(x.ref.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::GroupQualifier)
2382
+ expect(x.ref.qualifiers[0].entity).to be_instance_of(Expressir::Model::Ref)
2383
+ expect(x.ref.qualifiers[0].entity.id).to eq("test")
2384
+ expect(x.expression).to eq(true)
2385
+ end
2386
+
2387
+ functions.find{|x| x.id == "assignmentIndexStatement"}.statements[0].tap do |x|
2388
+ expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
2389
+ expect(x.ref).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
2390
+ expect(x.ref.ref).to be_instance_of(Expressir::Model::Ref)
2391
+ expect(x.ref.ref.id).to eq("test")
2392
+ expect(x.ref.qualifiers).to be_instance_of(Array)
2393
+ expect(x.ref.qualifiers.count).to eq(1)
2394
+ expect(x.ref.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::IndexQualifier)
2395
+ expect(x.ref.qualifiers[0].index1).to eq(1)
2396
+ expect(x.expression).to eq(true)
2397
+ end
2398
+
2399
+ functions.find{|x| x.id == "assignmentIndex2Statement"}.statements[0].tap do |x|
2400
+ expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
2401
+ expect(x.ref).to be_instance_of(Expressir::Model::Expressions::QualifiedRef)
2402
+ expect(x.ref.ref).to be_instance_of(Expressir::Model::Ref)
2403
+ expect(x.ref.ref.id).to eq("test")
2404
+ expect(x.ref.qualifiers).to be_instance_of(Array)
2405
+ expect(x.ref.qualifiers.count).to eq(1)
2406
+ expect(x.ref.qualifiers[0]).to be_instance_of(Expressir::Model::Expressions::IndexQualifier)
2407
+ expect(x.ref.qualifiers[0].index1).to eq(1)
2408
+ expect(x.ref.qualifiers[0].index2).to eq(9)
2409
+ expect(x.expression).to eq(true)
2410
+ end
2411
+
2412
+ functions.find{|x| x.id == "caseStatement"}.statements[0].tap do |x|
2413
+ expect(x).to be_instance_of(Expressir::Model::Statements::Case)
2414
+ expect(x.selector).to be_instance_of(Expressir::Model::Ref)
2415
+ expect(x.selector.id).to eq("test")
2416
+ expect(x.actions).to be_instance_of(Array)
2417
+ expect(x.actions.count).to eq(1)
2418
+ expect(x.actions[0]).to be_instance_of(Expressir::Model::Statements::CaseAction)
2419
+ expect(x.actions[0].label).to eq(true)
2420
+ expect(x.actions[0].statement).to be_instance_of(Expressir::Model::Statements::Null)
2421
+ end
2422
+
2423
+ functions.find{|x| x.id == "caseMultipleStatement"}.statements[0].tap do |x|
2424
+ expect(x).to be_instance_of(Expressir::Model::Statements::Case)
2425
+ expect(x.selector).to be_instance_of(Expressir::Model::Ref)
2426
+ expect(x.selector.id).to eq("test")
2427
+ expect(x.actions).to be_instance_of(Array)
2428
+ expect(x.actions.count).to eq(2)
2429
+ expect(x.actions[0]).to be_instance_of(Expressir::Model::Statements::CaseAction)
2430
+ expect(x.actions[0].label).to eq(true)
2431
+ expect(x.actions[0].statement).to be_instance_of(Expressir::Model::Statements::Null)
2432
+ expect(x.actions[1]).to be_instance_of(Expressir::Model::Statements::CaseAction)
2433
+ expect(x.actions[1].label).to eq(true)
2434
+ expect(x.actions[1].statement).to be_instance_of(Expressir::Model::Statements::Null)
2435
+ end
2436
+
2437
+ functions.find{|x| x.id == "caseMultipleShorthandStatement"}.statements[0].tap do |x|
2438
+ expect(x).to be_instance_of(Expressir::Model::Statements::Case)
2439
+ expect(x.selector).to be_instance_of(Expressir::Model::Ref)
2440
+ expect(x.selector.id).to eq("test")
2441
+ expect(x.actions).to be_instance_of(Array)
2442
+ expect(x.actions.count).to eq(2)
2443
+ expect(x.actions[0]).to be_instance_of(Expressir::Model::Statements::CaseAction)
2444
+ expect(x.actions[0].label).to eq(true)
2445
+ expect(x.actions[0].statement).to be_instance_of(Expressir::Model::Statements::Null)
2446
+ expect(x.actions[1]).to be_instance_of(Expressir::Model::Statements::CaseAction)
2447
+ expect(x.actions[1].label).to eq(true)
2448
+ expect(x.actions[1].statement).to be_instance_of(Expressir::Model::Statements::Null)
2449
+ end
2450
+
2451
+ functions.find{|x| x.id == "caseOtherwiseStatement"}.statements[0].tap do |x|
2452
+ expect(x).to be_instance_of(Expressir::Model::Statements::Case)
2453
+ expect(x.selector).to be_instance_of(Expressir::Model::Ref)
2454
+ expect(x.selector.id).to eq("test")
2455
+ expect(x.actions).to be_instance_of(Array)
2456
+ expect(x.actions.count).to eq(1)
2457
+ expect(x.actions[0]).to be_instance_of(Expressir::Model::Statements::CaseAction)
2458
+ expect(x.actions[0].label).to eq(true)
2459
+ expect(x.actions[0].statement).to be_instance_of(Expressir::Model::Statements::Null)
2460
+ expect(x.otherwise_statement).to be_instance_of(Expressir::Model::Statements::Null)
2461
+ end
2462
+
2463
+ functions.find{|x| x.id == "compoundStatement"}.statements[0].tap do |x|
2464
+ expect(x).to be_instance_of(Expressir::Model::Statements::Compound)
2465
+ expect(x.statements).to be_instance_of(Array)
2466
+ expect(x.statements.count).to eq(1)
2467
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2468
+ end
2469
+
2470
+ functions.find{|x| x.id == "escapeStatement"}.statements[0].tap do |x|
2471
+ expect(x).to be_instance_of(Expressir::Model::Statements::Escape)
2472
+ end
2473
+
2474
+ functions.find{|x| x.id == "ifStatement"}.statements[0].tap do |x|
2475
+ expect(x).to be_instance_of(Expressir::Model::Statements::If)
2476
+ expect(x.condition).to eq(true)
2477
+ expect(x.statements).to be_instance_of(Array)
2478
+ expect(x.statements.count).to eq(1)
2479
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2480
+ end
2481
+
2482
+ functions.find{|x| x.id == "if2Statement"}.statements[0].tap do |x|
2483
+ expect(x).to be_instance_of(Expressir::Model::Statements::If)
2484
+ expect(x.condition).to eq(true)
2485
+ expect(x.statements).to be_instance_of(Array)
2486
+ expect(x.statements.count).to eq(2)
2487
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2488
+ expect(x.statements[1]).to be_instance_of(Expressir::Model::Statements::Null)
2489
+ end
2490
+
2491
+ functions.find{|x| x.id == "ifElseStatement"}.statements[0].tap do |x|
2492
+ expect(x).to be_instance_of(Expressir::Model::Statements::If)
2493
+ expect(x.condition).to eq(true)
2494
+ expect(x.statements).to be_instance_of(Array)
2495
+ expect(x.statements.count).to eq(1)
2496
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2497
+ expect(x.else_statements).to be_instance_of(Array)
2498
+ expect(x.else_statements.count).to eq(1)
2499
+ expect(x.else_statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2500
+ end
2501
+
2502
+ functions.find{|x| x.id == "if2ElseStatement"}.statements[0].tap do |x|
2503
+ expect(x).to be_instance_of(Expressir::Model::Statements::If)
2504
+ expect(x.condition).to eq(true)
2505
+ expect(x.statements).to be_instance_of(Array)
2506
+ expect(x.statements.count).to eq(2)
2507
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2508
+ expect(x.statements[1]).to be_instance_of(Expressir::Model::Statements::Null)
2509
+ expect(x.else_statements).to be_instance_of(Array)
2510
+ expect(x.else_statements.count).to eq(1)
2511
+ expect(x.else_statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2512
+ end
2513
+
2514
+ functions.find{|x| x.id == "ifElse2Statement"}.statements[0].tap do |x|
2515
+ expect(x).to be_instance_of(Expressir::Model::Statements::If)
2516
+ expect(x.condition).to eq(true)
2517
+ expect(x.statements).to be_instance_of(Array)
2518
+ expect(x.statements.count).to eq(1)
2519
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2520
+ expect(x.else_statements).to be_instance_of(Array)
2521
+ expect(x.else_statements.count).to eq(2)
2522
+ expect(x.else_statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2523
+ expect(x.else_statements[1]).to be_instance_of(Expressir::Model::Statements::Null)
2524
+ end
2525
+
2526
+ functions.find{|x| x.id == "if2Else2Statement"}.statements[0].tap do |x|
2527
+ expect(x).to be_instance_of(Expressir::Model::Statements::If)
2528
+ expect(x.condition).to eq(true)
2529
+ expect(x.statements).to be_instance_of(Array)
2530
+ expect(x.statements.count).to eq(2)
2531
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2532
+ expect(x.statements[1]).to be_instance_of(Expressir::Model::Statements::Null)
2533
+ expect(x.else_statements).to be_instance_of(Array)
2534
+ expect(x.else_statements.count).to eq(2)
2535
+ expect(x.else_statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2536
+ expect(x.else_statements[1]).to be_instance_of(Expressir::Model::Statements::Null)
2537
+ end
2538
+
2539
+ functions.find{|x| x.id == "nullStatement"}.statements[0].tap do |x|
2540
+ expect(x).to be_instance_of(Expressir::Model::Statements::Null)
2541
+ end
2542
+
2543
+ functions.find{|x| x.id == "procedureCallStatement"}.statements[0].tap do |x|
2544
+ expect(x).to be_instance_of(Expressir::Model::Statements::ProcedureCall)
2545
+ expect(x.procedure).to be_instance_of(Expressir::Model::Ref)
2546
+ expect(x.procedure.id).to eq("emptyProcedure")
2547
+ end
2548
+
2549
+ functions.find{|x| x.id == "procedureCallParameterStatement"}.statements[0].tap do |x|
2550
+ expect(x).to be_instance_of(Expressir::Model::Statements::ProcedureCall)
2551
+ expect(x.procedure).to be_instance_of(Expressir::Model::Ref)
2552
+ expect(x.procedure.id).to eq("emptyProcedure")
2553
+ expect(x.parameters).to be_instance_of(Array)
2554
+ expect(x.parameters.count).to eq(1)
2555
+ expect(x.parameters[0]).to eq(true)
2556
+ end
2557
+
2558
+ functions.find{|x| x.id == "procedureCallParameter2Statement"}.statements[0].tap do |x|
2559
+ expect(x).to be_instance_of(Expressir::Model::Statements::ProcedureCall)
2560
+ expect(x.procedure).to be_instance_of(Expressir::Model::Ref)
2561
+ expect(x.procedure.id).to eq("emptyProcedure")
2562
+ expect(x.parameters).to be_instance_of(Array)
2563
+ expect(x.parameters.count).to eq(2)
2564
+ expect(x.parameters[0]).to eq(true)
2565
+ expect(x.parameters[1]).to eq(true)
2566
+ end
2567
+
2568
+ functions.find{|x| x.id == "procedureCallInsertStatement"}.statements[0].tap do |x|
2569
+ expect(x).to be_instance_of(Expressir::Model::Statements::ProcedureCall)
2570
+ expect(x.procedure).to be_instance_of(Expressir::Model::Ref)
2571
+ expect(x.procedure.id).to eq("INSERT")
2572
+ end
2573
+
2574
+ functions.find{|x| x.id == "procedureCallRemoveStatement"}.statements[0].tap do |x|
2575
+ expect(x).to be_instance_of(Expressir::Model::Statements::ProcedureCall)
2576
+ expect(x.procedure).to be_instance_of(Expressir::Model::Ref)
2577
+ expect(x.procedure.id).to eq("REMOVE")
2578
+ end
2579
+
2580
+ functions.find{|x| x.id == "repeatStatement"}.statements[0].tap do |x|
2581
+ expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
2582
+ expect(x.statements).to be_instance_of(Array)
2583
+ expect(x.statements.count).to eq(1)
2584
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2585
+ end
2586
+
2587
+ functions.find{|x| x.id == "repeatVariableStatement"}.statements[0].tap do |x|
2588
+ expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
2589
+ expect(x.variable).to eq("test")
2590
+ expect(x.bound1).to eq(1)
2591
+ expect(x.bound2).to eq(9)
2592
+ expect(x.statements).to be_instance_of(Array)
2593
+ expect(x.statements.count).to eq(1)
2594
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2595
+ end
2596
+
2597
+ functions.find{|x| x.id == "repeatVariableIncrementStatement"}.statements[0].tap do |x|
2598
+ expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
2599
+ expect(x.variable).to eq("test")
2600
+ expect(x.bound1).to eq(1)
2601
+ expect(x.bound2).to eq(9)
2602
+ expect(x.increment).to eq(2)
2603
+ expect(x.statements).to be_instance_of(Array)
2604
+ expect(x.statements.count).to eq(1)
2605
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2606
+ end
2607
+
2608
+ functions.find{|x| x.id == "repeatWhileStatement"}.statements[0].tap do |x|
2609
+ expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
2610
+ expect(x.while_expression).to eq(true)
2611
+ expect(x.statements).to be_instance_of(Array)
2612
+ expect(x.statements.count).to eq(1)
2613
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2614
+ end
2615
+
2616
+ functions.find{|x| x.id == "repeatUntilStatement"}.statements[0].tap do |x|
2617
+ expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
2618
+ expect(x.until_expression).to eq(true)
2619
+ expect(x.statements).to be_instance_of(Array)
2620
+ expect(x.statements.count).to eq(1)
2621
+ expect(x.statements[0]).to be_instance_of(Expressir::Model::Statements::Null)
2622
+ end
2623
+
2624
+ functions.find{|x| x.id == "returnStatement"}.statements[0].tap do |x|
2625
+ expect(x).to be_instance_of(Expressir::Model::Statements::Return)
2626
+ expect(x.expression).to eq(true)
2627
+ end
2628
+
2629
+ functions.find{|x| x.id == "skipStatement"}.statements[0].tap do |x|
2630
+ expect(x).to be_instance_of(Expressir::Model::Statements::Skip)
2631
+ end
2632
+ end
2633
+ end
2634
+
2635
+ def sample_file
2636
+ @sample_file ||= Expressir.root_path.join(
2637
+ "original", "examples", "syntax", "syntax.exp"
2638
+ )
2639
+ end
2640
+ end