1
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2
+ <metamorph-test version =" 1.0"
3
+ xmlns=" http://www.culturegraph.org/metamorph-test" xmlns : cgxml =" http://www.culturegraph.org/cgxml" >
4
+
5
+ <test-case name =" should only fire if condition is met" >
6
+ <input type =" text/x-cg+xml" >
7
+ <cgxml : cgxml version =" 1.0" >
8
+ <cgxml : records >
9
+ <cgxml : record id =" 1" >
10
+ <cgxml : literal name =" data1" value =" a" />
11
+ <cgxml : literal name =" data2" value =" b" />
12
+ <cgxml : literal name =" data3" value =" c" />
13
+ </cgxml : record >
14
+ <cgxml : record id =" 2" >
15
+ <cgxml : literal name =" data1" value =" a" />
16
+ <cgxml : literal name =" data2" value =" b" />
17
+ <cgxml : literal name =" data4" value =" c" />
18
+ </cgxml : record >
19
+ </cgxml : records >
20
+ </cgxml : cgxml >
21
+ </input >
22
+
23
+ <transformation type =" text/x-metamorph+xml" >
24
+ <metamorph version =" 1" xmlns =" http://www.culturegraph.org/metamorph" >
25
+ <rules >
26
+ <combine name =" combined" value =" ${data1}-${data2}" >
27
+ <if >
28
+ <data source =" data3" />
29
+ </if >
30
+ <data source =" data1" />
31
+ <data source =" data2" />
32
+ </combine >
33
+ </rules >
34
+ </metamorph >
35
+ </transformation >
36
+
37
+ <result type =" text/x-cg+xml" >
38
+ <cgxml : cgxml version =" 1.0" >
39
+ <cgxml : records >
40
+ <cgxml : record id =" 1" >
41
+ <cgxml : literal name =" combined" value =" a-b" />
42
+ </cgxml : record >
43
+ <cgxml : record id =" 2" >
44
+ </cgxml : record >
45
+ </cgxml : records >
46
+ </cgxml : cgxml >
47
+ </result >
48
+ </test-case >
49
+
50
+ <test-case name =" should allow to use same source in body and condition" >
51
+ <input type =" text/x-cg+xml" >
52
+ <cgxml : cgxml version =" 1.0" >
53
+ <cgxml : records >
54
+ <cgxml : record id =" 1" >
55
+ <cgxml : literal name =" data1" value =" a" />
56
+ <cgxml : literal name =" data2" value =" b" />
57
+ </cgxml : record >
58
+ <cgxml : record id =" 2" >
59
+ <cgxml : literal name =" data1" value =" a" />
60
+ <cgxml : literal name =" data2" value =" c" />
61
+ </cgxml : record >
62
+ </cgxml : records >
63
+ </cgxml : cgxml >
64
+ </input >
65
+
66
+ <transformation type =" text/x-metamorph+xml" >
67
+ <metamorph version =" 1" xmlns =" http://www.culturegraph.org/metamorph" >
68
+ <rules >
69
+ <combine name =" combined" value =" ${data1}-${data2}" >
70
+ <if >
71
+ <data source =" data2" >
72
+ <equals string =" b" />
73
+ </data >
74
+ </if >
75
+ <data source =" data1" />
76
+ <data source =" data2" />
77
+ </combine >
78
+ </rules >
79
+ </metamorph >
80
+ </transformation >
81
+
82
+ <result type =" text/x-cg+xml" >
83
+ <cgxml : cgxml version =" 1.0" >
84
+ <cgxml : records >
85
+ <cgxml : record id =" 1" >
86
+ <cgxml : literal name =" combined" value =" a-b" />
87
+ </cgxml : record >
88
+ <cgxml : record id =" 2" >
89
+ </cgxml : record >
90
+ </cgxml : records >
91
+ </cgxml : cgxml >
92
+ </result >
93
+ </test-case >
94
+
95
+ <test-case name =" should allow quantors in if statements" >
96
+ <input type =" text/x-cg+xml" >
97
+ <cgxml : cgxml version =" 1.0" >
98
+ <cgxml : records >
99
+ <cgxml : record id =" 1" >
100
+ <cgxml : literal name =" data1" value =" a" />
101
+ <cgxml : literal name =" data2" value =" b" />
102
+ <cgxml : literal name =" data3" value =" c" />
103
+ </cgxml : record >
104
+ <cgxml : record id =" 2" >
105
+ <cgxml : literal name =" data1" value =" a" />
106
+ <cgxml : literal name =" data2" value =" d" />
107
+ <cgxml : literal name =" data4" value =" c" />
108
+ </cgxml : record >
109
+ <cgxml : record id =" 3" >
110
+ <cgxml : literal name =" data1" value =" a" />
111
+ <cgxml : literal name =" data2" value =" b" />
112
+ <cgxml : literal name =" data5" value =" c" />
113
+ </cgxml : record >
114
+ </cgxml : records >
115
+ </cgxml : cgxml >
116
+ </input >
117
+
118
+ <transformation type =" text/x-metamorph+xml" >
119
+ <metamorph version =" 1" xmlns =" http://www.culturegraph.org/metamorph" >
120
+ <rules >
121
+ <combine name =" combined" value =" ${data1}-${data2}" >
122
+ <if >
123
+ <any >
124
+ <data source =" data3" />
125
+ <data source =" data4" />
126
+ </any >
127
+ </if >
128
+ <data source =" data1" />
129
+ <data source =" data2" />
130
+ </combine >
131
+ </rules >
132
+ </metamorph >
133
+ </transformation >
134
+
135
+ <result type =" text/x-cg+xml" >
136
+ <cgxml : cgxml version =" 1.0" >
137
+ <cgxml : records >
138
+ <cgxml : record id =" 1" >
139
+ <cgxml : literal name =" combined" value =" a-b" />
140
+ </cgxml : record >
141
+ <cgxml : record id =" 2" >
142
+ <cgxml : literal name =" combined" value =" a-d" />
143
+ </cgxml : record >
144
+ <cgxml : record id =" 3" >
145
+ </cgxml : record >
146
+ </cgxml : records >
147
+ </cgxml : cgxml >
148
+ </result >
149
+ </test-case >
150
+
151
+ <test-case name =" should reset condition with collector" >
152
+ <input type =" text/x-cg+xml" >
153
+ <cgxml : cgxml version =" 1.0" >
154
+ <cgxml : records >
155
+ <cgxml : record id =" 1" >
156
+ <cgxml : entity name =" entity" >
157
+ <cgxml : literal name =" data1" value =" output" />
158
+ <cgxml : literal name =" data2" value =" X" />
159
+ </cgxml : entity >
160
+ <cgxml : entity name =" entity" >
161
+ <cgxml : literal name =" data1" value =" no-output" />
162
+ <cgxml : literal name =" data3" value =" X" />
163
+ </cgxml : entity >
164
+ </cgxml : record >
165
+ </cgxml : records >
166
+ </cgxml : cgxml >
167
+ </input >
168
+
169
+ <transformation type =" text/x-metamorph+xml" >
170
+ <metamorph version =" 1" xmlns =" http://www.culturegraph.org/metamorph" >
171
+ <rules >
172
+ <combine name =" result" value =" ${VAL}" reset =" true" >
173
+ <if >
174
+ <data source =" entity.data2" />
175
+ </if >
176
+ <data source =" entity.data1" name =" VAL" />
177
+ </combine >
178
+ </rules >
179
+ </metamorph >
180
+ </transformation >
181
+
182
+ <result type =" text/x-cg+xml" >
183
+ <cgxml : cgxml version =" 1.0" >
184
+ <cgxml : records >
185
+ <cgxml : record id =" 1" >
186
+ <cgxml : literal name =" result" value =" output" />
187
+ </cgxml : record >
188
+ </cgxml : records >
189
+ </cgxml : cgxml >
190
+ </result >
191
+ </test-case >
192
+
193
+ <test-case name =" should reset condition with collector on flushWith" >
194
+ <input type =" text/x-cg+xml" >
195
+ <cgxml : cgxml version =" 1.0" >
196
+ <cgxml : records >
197
+ <cgxml : record id =" 1" >
198
+ <cgxml : entity name =" entity" >
199
+ <cgxml : literal name =" data1" value =" output" />
200
+ <cgxml : literal name =" data2" value =" X" />
201
+ </cgxml : entity >
202
+ <cgxml : entity name =" entity" >
203
+ <cgxml : literal name =" data1" value =" no-output" />
204
+ <cgxml : literal name =" data3" value =" X" />
205
+ </cgxml : entity >
206
+ </cgxml : record >
207
+ </cgxml : records >
208
+ </cgxml : cgxml >
209
+ </input >
210
+
211
+ <transformation type =" text/x-metamorph+xml" >
212
+ <metamorph version =" 1" xmlns =" http://www.culturegraph.org/metamorph" >
213
+ <rules >
214
+ <combine name =" result" value =" ${VAL1}${VAL2}" reset =" true" flushWith =" entity" >
215
+ <if >
216
+ <data source =" entity.data2" />
217
+ </if >
218
+ <data source =" entity.data1" name =" VAL1" />
219
+ <data source =" entity.data4" name =" VAL2" />
220
+ </combine >
221
+ </rules >
222
+ </metamorph >
223
+ </transformation >
224
+
225
+ <result type =" text/x-cg+xml" >
226
+ <cgxml : cgxml version =" 1.0" >
227
+ <cgxml : records >
228
+ <cgxml : record id =" 1" >
229
+ <cgxml : literal name =" result" value =" output" />
230
+ </cgxml : record >
231
+ </cgxml : records >
232
+ </cgxml : cgxml >
233
+ </result >
234
+ </test-case >
235
+
236
+ <test-case name =" should reset condition with collector on same entity" >
237
+ <input type =" text/x-cg+xml" >
238
+ <cgxml : cgxml version =" 1.0" >
239
+ <cgxml : records >
240
+ <cgxml : record id =" 1" >
241
+ <cgxml : entity name =" entity" >
242
+ <cgxml : literal name =" data1" value =" output" />
243
+ <cgxml : literal name =" data2" value =" X" />
244
+ </cgxml : entity >
245
+ <cgxml : entity name =" entity" >
246
+ <cgxml : literal name =" data1" value =" no-output" />
247
+ <cgxml : literal name =" data3" value =" X" />
248
+ <cgxml : literal name =" data4" value =" extra-output" />
249
+ </cgxml : entity >
250
+ </cgxml : record >
251
+ </cgxml : records >
252
+ </cgxml : cgxml >
253
+ </input >
254
+
255
+ <transformation type =" text/x-metamorph+xml" >
256
+ <metamorph version =" 1" xmlns =" http://www.culturegraph.org/metamorph" >
257
+ <rules >
258
+ <combine name =" result" value =" ${VAL1}+${VAL2}" sameEntity =" true" >
259
+ <if >
260
+ <data source =" entity.data2" />
261
+ </if >
262
+ <data source =" entity.data1" name =" VAL1" />
263
+ <data source =" entity.data4" name =" VAL2" />
264
+ </combine >
265
+ </rules >
266
+ </metamorph >
267
+ </transformation >
268
+
269
+ <result type =" text/x-cg+xml" >
270
+ <cgxml : cgxml version =" 1.0" >
271
+ <cgxml : records >
272
+ <cgxml : record id =" 1" >
273
+ </cgxml : record >
274
+ </cgxml : records >
275
+ </cgxml : cgxml >
276
+ </result >
277
+ </test-case >
278
+
279
+ </metamorph-test >
0 commit comments