]> git.proxmox.com Git - mirror_ovs.git/blame - tests/ovsdb-condition.at
dpif_packet: Rename to dp_packet
[mirror_ovs.git] / tests / ovsdb-condition.at
CommitLineData
f85f8ebb
BP
1AT_BANNER([OVSDB -- conditions])
2
3OVSDB_CHECK_POSITIVE([null condition],
4 [[parse-conditions \
5 '{"columns": {"name": {"type": "string"}}}' \
6 '[]']],
7 [[[]]])
8
9OVSDB_CHECK_POSITIVE([conditions on scalars],
10 [[parse-conditions \
11 '{"columns":
12 {"i": {"type": "integer"},
13 "r": {"type": "real"},
14 "b": {"type": "boolean"},
15 "s": {"type": "string"},
16 "u": {"type": "uuid"}}}' \
17 '[["i", "==", 0]]' \
18 '[["i", "!=", 1]]' \
19 '[["i", "<", 2]]' \
20 '[["i", "<=", 3]]' \
21 '[["i", ">", 4]]' \
22 '[["i", ">=", 5]]' \
23 '[["i", "includes", 6]]' \
24 '[["i", "excludes", 7]]' \
25 '[["r", "==", 0.5]]' \
26 '[["r", "!=", 1.5]]' \
27 '[["r", "<", 2.5]]' \
28 '[["r", "<=", 3.5]]' \
29 '[["r", ">", 4.5]]' \
30 '[["r", ">=", 5.5]]' \
31 '[["r", "includes", 6.5]]' \
32 '[["r", "excludes", 7.5]]' \
33 '[["b", "==", true]]' \
34 '[["b", "!=", false]]' \
35 '[["b", "includes", false]]' \
36 '[["b", "excludes", true]]' \
37 '[["s", "==", "a"]]' \
38 '[["s", "!=", "b"]]' \
39 '[["s", "includes", "c"]]' \
40 '[["s", "excludes", "d"]]' \
41 '[["u", "==", ["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"]]]' \
42 '[["u", "!=", ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"]]]' \
43 '[["u", "includes", ["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]]]' \
44 '[["u", "excludes", ["uuid", "62315898-64e0-40b9-b26f-ff74225303e6"]]]']],
45 [[[["i","==",0]]
46[["i","!=",1]]
47[["i","<",2]]
48[["i","<=",3]]
49[["i",">",4]]
50[["i",">=",5]]
51[["i","includes",6]]
52[["i","excludes",7]]
53[["r","==",0.5]]
54[["r","!=",1.5]]
55[["r","<",2.5]]
56[["r","<=",3.5]]
57[["r",">",4.5]]
58[["r",">=",5.5]]
59[["r","includes",6.5]]
60[["r","excludes",7.5]]
61[["b","==",true]]
62[["b","!=",false]]
63[["b","includes",false]]
64[["b","excludes",true]]
65[["s","==","a"]]
66[["s","!=","b"]]
67[["s","includes","c"]]
68[["s","excludes","d"]]
69[["u","==",["uuid","b10d28f7-af18-4a67-9e78-2a6394516c59"]]]
70[["u","!=",["uuid","9179ca6d-6d65-400a-b455-3ad92783a099"]]]
71[["u","includes",["uuid","ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]]]
72[["u","excludes",["uuid","62315898-64e0-40b9-b26f-ff74225303e6"]]]]],
73 [condition])
74
75AT_SETUP([disallowed conditions on scalars])
76AT_KEYWORDS([ovsdb negative condition])
7c126fbb 77AT_CHECK([[test-ovsdb parse-conditions \
f85f8ebb
BP
78 '{"columns":
79 {"i": {"type": "integer"},
80 "r": {"type": "real"},
81 "b": {"type": "boolean"},
82 "s": {"type": "string"},
83 "u": {"type": "uuid"}}}' \
84 '[["b", ">", true]]' \
85 '[["b", ">=", false]]' \
86 '[["b", "<", false]]' \
87 '[["b", "<=", false]]' \
88 '[["s", ">", "a"]]' \
89 '[["s", ">=", "b"]]' \
90 '[["s", "<", "c"]]' \
91 '[["s", "<=", "d"]]' \
92 '[["u", ">", ["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"]]]' \
93 '[["u", ">=", ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"]]]' \
94 '[["u", "<", ["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]]]' \
95 '[["u", "<=", ["uuid", "62315898-64e0-40b9-b26f-ff74225303e6"]]]']],
96 [1], [],
97 [[test-ovsdb: syntax "["b",">",true]": syntax error: Type mismatch: ">" operator may not be applied to column b of type boolean.
98test-ovsdb: syntax "["b",">=",false]": syntax error: Type mismatch: ">=" operator may not be applied to column b of type boolean.
99test-ovsdb: syntax "["b","<",false]": syntax error: Type mismatch: "<" operator may not be applied to column b of type boolean.
100test-ovsdb: syntax "["b","<=",false]": syntax error: Type mismatch: "<=" operator may not be applied to column b of type boolean.
101test-ovsdb: syntax "["s",">","a"]": syntax error: Type mismatch: ">" operator may not be applied to column s of type string.
102test-ovsdb: syntax "["s",">=","b"]": syntax error: Type mismatch: ">=" operator may not be applied to column s of type string.
103test-ovsdb: syntax "["s","<","c"]": syntax error: Type mismatch: "<" operator may not be applied to column s of type string.
104test-ovsdb: syntax "["s","<=","d"]": syntax error: Type mismatch: "<=" operator may not be applied to column s of type string.
105test-ovsdb: syntax "["u",">",["uuid","b10d28f7-af18-4a67-9e78-2a6394516c59"]]": syntax error: Type mismatch: ">" operator may not be applied to column u of type uuid.
106test-ovsdb: syntax "["u",">=",["uuid","9179ca6d-6d65-400a-b455-3ad92783a099"]]": syntax error: Type mismatch: ">=" operator may not be applied to column u of type uuid.
107test-ovsdb: syntax "["u","<",["uuid","ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]]": syntax error: Type mismatch: "<" operator may not be applied to column u of type uuid.
108test-ovsdb: syntax "["u","<=",["uuid","62315898-64e0-40b9-b26f-ff74225303e6"]]": syntax error: Type mismatch: "<=" operator may not be applied to column u of type uuid.
109]])
110AT_CLEANUP
111
112OVSDB_CHECK_POSITIVE([conditions on sets],
113 [[parse-conditions \
114 '{"columns":
115 {"i": {"type": {"key": "integer", "min": 0, "max": "unlimited"}},
116 "r": {"type": {"key": "real", "min": 0, "max": "unlimited"}},
117 "b": {"type": {"key": "boolean", "min": 0, "max": "unlimited"}},
118 "s": {"type": {"key": "string", "min": 0, "max": "unlimited"}},
119 "u": {"type": {"key": "uuid", "min": 0, "max": "unlimited"}}}}' \
120 '[["i", "==", ["set", []]]]' \
121 '[["i", "!=", ["set", [1]]]]' \
122 '[["i", "includes", ["set", [1, 2]]]]' \
123 '[["i", "excludes", ["set", [1, 2, 3]]]]' \
124 '[["r", "==", ["set", []]]]' \
125 '[["r", "!=", ["set", [1.5]]]]' \
126 '[["r", "includes", ["set", [1.5, 2.5]]]]' \
127 '[["r", "excludes", ["set", [1.5, 2.5, 3.5]]]]' \
128 '[["b", "==", ["set", [true]]]]' \
129 '[["b", "!=", ["set", [false]]]]' \
130 '[["b", "includes", ["set", [false]]]]' \
131 '[["b", "excludes", ["set", [true, false]]]]' \
132 '[["s", "==", ["set", ["a"]]]]' \
133 '[["s", "!=", ["set", ["a", "b"]]]]' \
134 '[["s", "includes", ["set", ["c"]]]]' \
135 '[["s", "excludes", ["set", ["c", "d"]]]]' \
136 '[["u", "==",
137 ["set", [["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"]]]]]' \
138 '[["u", "==",
139 ["set", [["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"],
140 ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"]]]]]' \
141 '[["u", "includes",
142 ["set", [["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"],
143 ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"],
144 ["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]]]]]' \
145 '[["u", "excludes",
146 ["set", [["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"],
147 ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"],
148 ["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"],
149 ["uuid", "62315898-64e0-40b9-b26f-ff74225303e6"]]]]]' \
150]],
151 [[[["i","==",["set",[]]]]
ae8f13e2 152[["i","!=",1]]
f85f8ebb
BP
153[["i","includes",["set",[1,2]]]]
154[["i","excludes",["set",[1,2,3]]]]
155[["r","==",["set",[]]]]
ae8f13e2 156[["r","!=",1.5]]
f85f8ebb
BP
157[["r","includes",["set",[1.5,2.5]]]]
158[["r","excludes",["set",[1.5,2.5,3.5]]]]
ae8f13e2
BP
159[["b","==",true]]
160[["b","!=",false]]
161[["b","includes",false]]
f85f8ebb 162[["b","excludes",["set",[false,true]]]]
ae8f13e2 163[["s","==","a"]]
f85f8ebb 164[["s","!=",["set",["a","b"]]]]
ae8f13e2 165[["s","includes","c"]]
f85f8ebb 166[["s","excludes",["set",["c","d"]]]]
ae8f13e2 167[["u","==",["uuid","b10d28f7-af18-4a67-9e78-2a6394516c59"]]]
f85f8ebb
BP
168[["u","==",["set",[["uuid","9179ca6d-6d65-400a-b455-3ad92783a099"],["uuid","b10d28f7-af18-4a67-9e78-2a6394516c59"]]]]]
169[["u","includes",["set",[["uuid","9179ca6d-6d65-400a-b455-3ad92783a099"],["uuid","ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"],["uuid","b10d28f7-af18-4a67-9e78-2a6394516c59"]]]]]
170[["u","excludes",["set",[["uuid","62315898-64e0-40b9-b26f-ff74225303e6"],["uuid","9179ca6d-6d65-400a-b455-3ad92783a099"],["uuid","ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"],["uuid","b10d28f7-af18-4a67-9e78-2a6394516c59"]]]]]]],
171 [condition])
172
173OVSDB_CHECK_POSITIVE([condition sorting],
174 [[parse-conditions \
175 '{"columns": {"i": {"type": "integer"}}}' \
176 '[["i", "excludes", 7],
177 ["i", "!=", 8],
178 ["i", "==", 1],
179 ["i", "includes", 2],
180 ["i", "<=", 3],
181 ["i", "<", 4],
182 ["i", ">", 6],
183 ["i", ">=", 5],
184 ["_uuid", "==", ["uuid", "d50e85c6-8ae7-4b16-b69e-4395928bd9be"]]]']],
185 [[[["_uuid","==",["uuid","d50e85c6-8ae7-4b16-b69e-4395928bd9be"]],["i","==",1],["i","includes",2],["i","<=",3],["i","<",4],["i",">=",5],["i",">",6],["i","excludes",7],["i","!=",8]]]])
186
187OVSDB_CHECK_POSITIVE([evaluating null condition],
188 [[evaluate-conditions \
189 '{"columns": {"i": {"type": "integer"}}}' \
190 '[[]]' \
191 '[{"i": 0},
192 {"i": 1},
193 {"i": 2}']]],
194 [condition 0: TTT])
195
196OVSDB_CHECK_POSITIVE([evaluating conditions on integers],
197 [[evaluate-conditions \
198 '{"columns": {"i": {"type": "integer"}}}' \
199 '[[["i", "<", 1]],
200 [["i", "<=", 1]],
201 [["i", "==", 1]],
202 [["i", "!=", 1]],
203 [["i", ">=", 1]],
204 [["i", ">", 1]],
205 [["i", "includes", 1]],
40f280c7
BP
206 [["i", "excludes", 1]],
207 [["i", ">", 0], ["i", "<", 2]]]' \
f85f8ebb
BP
208 '[{"i": 0},
209 {"i": 1},
210 {"i": 2}']]],
211 [condition 0: T--
212condition 1: TT-
213condition 2: -T-
214condition 3: T-T
215condition 4: -TT
216condition 5: --T
217condition 6: -T-
40f280c7
BP
218condition 7: T-T
219condition 8: -T-], [condition])
f85f8ebb
BP
220
221OVSDB_CHECK_POSITIVE([evaluating conditions on reals],
222 [[evaluate-conditions \
223 '{"columns": {"r": {"type": "real"}}}' \
224 '[[["r", "<", 5.0]],
225 [["r", "<=", 5.0]],
226 [["r", "==", 5.0]],
227 [["r", "!=", 5.0]],
228 [["r", ">=", 5.0]],
229 [["r", ">", 5.0]],
230 [["r", "includes", 5.0]],
40f280c7
BP
231 [["r", "excludes", 5.0]],
232 [["r", "!=", 0], ["r", "!=", 5.1]]]' \
f85f8ebb
BP
233 '[{"r": 0},
234 {"r": 5.0},
235 {"r": 5.1}']]],
236 [condition 0: T--
237condition 1: TT-
238condition 2: -T-
239condition 3: T-T
240condition 4: -TT
241condition 5: --T
242condition 6: -T-
40f280c7
BP
243condition 7: T-T
244condition 8: -T-], [condition])
f85f8ebb
BP
245
246OVSDB_CHECK_POSITIVE([evaluating conditions on booleans],
247 [[evaluate-conditions \
248 '{"columns": {"b": {"type": "boolean"}}}' \
249 '[[["b", "==", true]],
250 [["b", "!=", true]],
251 [["b", "includes", true]],
252 [["b", "excludes", true]],
253 [["b", "==", false]],
254 [["b", "!=", false]],
255 [["b", "includes", false]],
40f280c7
BP
256 [["b", "excludes", false]],
257 [["b", "==", true], ["b", "==", false]]]' \
f85f8ebb
BP
258 '[{"b": true},
259 {"b": false}']]],
260 [condition 0: T-
261condition 1: -T
262condition 2: T-
263condition 3: -T
264condition 4: -T
265condition 5: T-
266condition 6: -T
40f280c7
BP
267condition 7: T-
268condition 8: --], [condition])
f85f8ebb
BP
269
270OVSDB_CHECK_POSITIVE([evaluating conditions on strings],
271 [[evaluate-conditions \
272 '{"columns": {"s": {"type": "string"}}}' \
273 '[[["s", "==", ""]],
274 [["s", "!=", ""]],
275 [["s", "includes", ""]],
276 [["s", "excludes", ""]],
277 [["s", "==", "foo"]],
278 [["s", "!=", "foo"]],
279 [["s", "includes", "foo"]],
40f280c7
BP
280 [["s", "excludes", "foo"]],
281 [["s", "!=", "foo"], ["s", "!=", ""]]]' \
f85f8ebb
BP
282 '[{"s": ""},
283 {"s": "foo"},
284 {"s": "xxx"}']]],
285 [condition 0: T--
286condition 1: -TT
287condition 2: T--
288condition 3: -TT
289condition 4: -T-
290condition 5: T-T
291condition 6: -T-
40f280c7
BP
292condition 7: T-T
293condition 8: --T], [condition])
f85f8ebb
BP
294
295OVSDB_CHECK_POSITIVE([evaluating conditions on UUIDs],
296 [[evaluate-conditions \
297 '{"columns": {"u": {"type": "uuid"}}}' \
298 '[[["u", "==", ["uuid", "8a1dbdb8-416f-4ce9-affa-3332691714b6"]]],
299 [["u", "!=", ["uuid", "8a1dbdb8-416f-4ce9-affa-3332691714b6"]]],
300 [["u", "includes", ["uuid", "8a1dbdb8-416f-4ce9-affa-3332691714b6"]]],
301 [["u", "excludes", ["uuid", "8a1dbdb8-416f-4ce9-affa-3332691714b6"]]],
302 [["u", "==", ["uuid", "06151f9d-62d6-4f59-8504-e9765107faa9"]]],
303 [["u", "!=", ["uuid", "06151f9d-62d6-4f59-8504-e9765107faa9"]]],
304 [["u", "includes", ["uuid", "06151f9d-62d6-4f59-8504-e9765107faa9"]]],
40f280c7
BP
305 [["u", "excludes", ["uuid", "06151f9d-62d6-4f59-8504-e9765107faa9"]]],
306 [["u", "!=", ["uuid", "06151f9d-62d6-4f59-8504-e9765107faa9"]],
307 ["u", "!=", ["uuid", "cb160ed6-92a6-4503-a6aa-a09a09e01f0d"]]]]' \
f85f8ebb
BP
308 '[{"u": ["uuid", "8a1dbdb8-416f-4ce9-affa-3332691714b6"]},
309 {"u": ["uuid", "06151f9d-62d6-4f59-8504-e9765107faa9"]},
310 {"u": ["uuid", "00000000-0000-0000-0000-000000000000"]}']]],
311 [condition 0: T--
312condition 1: -TT
313condition 2: T--
314condition 3: -TT
315condition 4: -T-
316condition 5: T-T
317condition 6: -T-
40f280c7
BP
318condition 7: T-T
319condition 8: T-T], [condition])
f85f8ebb
BP
320
321OVSDB_CHECK_POSITIVE([evaluating conditions on sets],
322 [[evaluate-conditions \
323 '{"columns": {"i": {"type": {"key": "integer", "min": 0, "max": "unlimited"}}}}' \
324 '[[["i", "==", ["set", []]]],
325 [["i", "==", ["set", [0]]]],
326 [["i", "==", ["set", [1]]]],
327 [["i", "==", ["set", [0, 1]]]],
328 [["i", "==", ["set", [2]]]],
329 [["i", "==", ["set", [2, 0]]]],
330 [["i", "==", ["set", [2, 1]]]],
331 [["i", "==", ["set", [2, 1, 0]]]],
332 [["i", "!=", ["set", []]]],
333 [["i", "!=", ["set", [0]]]],
334 [["i", "!=", ["set", [1]]]],
335 [["i", "!=", ["set", [0, 1]]]],
336 [["i", "!=", ["set", [2]]]],
337 [["i", "!=", ["set", [2, 0]]]],
338 [["i", "!=", ["set", [2, 1]]]],
339 [["i", "!=", ["set", [2, 1, 0]]]],
340 [["i", "includes", ["set", []]]],
341 [["i", "includes", ["set", [0]]]],
342 [["i", "includes", ["set", [1]]]],
343 [["i", "includes", ["set", [0, 1]]]],
344 [["i", "includes", ["set", [2]]]],
345 [["i", "includes", ["set", [2, 0]]]],
346 [["i", "includes", ["set", [2, 1]]]],
347 [["i", "includes", ["set", [2, 1, 0]]]],
348 [["i", "excludes", ["set", []]]],
349 [["i", "excludes", ["set", [0]]]],
350 [["i", "excludes", ["set", [1]]]],
351 [["i", "excludes", ["set", [0, 1]]]],
352 [["i", "excludes", ["set", [2]]]],
353 [["i", "excludes", ["set", [2, 0]]]],
354 [["i", "excludes", ["set", [2, 1]]]],
40f280c7
BP
355 [["i", "excludes", ["set", [2, 1, 0]]]],
356 [["i", "includes", ["set", [0]]],
357 ["i", "includes", ["set", [1]]]]]' \
f85f8ebb
BP
358 '[{"i": ["set", []]},
359 {"i": ["set", [0]]},
360 {"i": ["set", [1]]},
361 {"i": ["set", [0, 1]]},
362 {"i": ["set", [2]]},
363 {"i": ["set", [2, 0]]},
364 {"i": ["set", [2, 1]]},
365 {"i": ["set", [2, 1, 0]]}]']],
366 [dnl
367condition 0: T---- ---
368condition 1: -T--- ---
369condition 2: --T-- ---
370condition 3: ---T- ---
371condition 4: ----T ---
372condition 5: ----- T--
373condition 6: ----- -T-
374condition 7: ----- --T
375condition 8: -TTTT TTT
376condition 9: T-TTT TTT
377condition 10: TT-TT TTT
378condition 11: TTT-T TTT
379condition 12: TTTT- TTT
380condition 13: TTTTT -TT
381condition 14: TTTTT T-T
382condition 15: TTTTT TT-
383condition 16: TTTTT TTT
384condition 17: -T-T- T-T
385condition 18: --TT- -TT
386condition 19: ---T- --T
387condition 20: ----T TTT
388condition 21: ----- T-T
389condition 22: ----- -TT
390condition 23: ----- --T
391condition 24: TTTTT TTT
392condition 25: T-T-T -T-
393condition 26: TT--T T--
394condition 27: T---T ---
395condition 28: TTTT- ---
396condition 29: T-T-- ---
397condition 30: TT--- ---
40f280c7
BP
398condition 31: T---- ---
399condition 32: ---T- --T], [condition])
f85f8ebb
BP
400
401# This is the same as the "set" test except that it adds values,
402# all of which always match.
403OVSDB_CHECK_POSITIVE([evaluating conditions on maps (1)],
404 [[evaluate-conditions \
405 '{"columns": {"i": {"type": {"key": "integer",
406 "value": "boolean",
407 "min": 0,
408 "max": "unlimited"}}}}' \
409 '[[["i", "==", ["map", []]]],
410 [["i", "==", ["map", [[0, true]]]]],
411 [["i", "==", ["map", [[1, false]]]]],
412 [["i", "==", ["map", [[0, true], [1, false]]]]],
413 [["i", "==", ["map", [[2, true]]]]],
414 [["i", "==", ["map", [[2, true], [0, true]]]]],
415 [["i", "==", ["map", [[2, true], [1, false]]]]],
416 [["i", "==", ["map", [[2, true], [1, false], [0, true]]]]],
417 [["i", "!=", ["map", []]]],
418 [["i", "!=", ["map", [[0, true]]]]],
419 [["i", "!=", ["map", [[1, false]]]]],
420 [["i", "!=", ["map", [[0, true], [1, false]]]]],
421 [["i", "!=", ["map", [[2, true]]]]],
422 [["i", "!=", ["map", [[2, true], [0, true]]]]],
423 [["i", "!=", ["map", [[2, true], [1, false]]]]],
424 [["i", "!=", ["map", [[2, true], [1, false], [0, true]]]]],
425 [["i", "includes", ["map", []]]],
426 [["i", "includes", ["map", [[0, true]]]]],
427 [["i", "includes", ["map", [[1, false]]]]],
428 [["i", "includes", ["map", [[0, true], [1, false]]]]],
429 [["i", "includes", ["map", [[2, true]]]]],
430 [["i", "includes", ["map", [[2, true], [0, true]]]]],
431 [["i", "includes", ["map", [[2, true], [1, false]]]]],
432 [["i", "includes", ["map", [[2, true], [1, false], [0, true]]]]],
433 [["i", "excludes", ["map", []]]],
434 [["i", "excludes", ["map", [[0, true]]]]],
435 [["i", "excludes", ["map", [[1, false]]]]],
436 [["i", "excludes", ["map", [[0, true], [1, false]]]]],
437 [["i", "excludes", ["map", [[2, true]]]]],
438 [["i", "excludes", ["map", [[2, true], [0, true]]]]],
439 [["i", "excludes", ["map", [[2, true], [1, false]]]]],
40f280c7
BP
440 [["i", "excludes", ["map", [[2, true], [1, false], [0, true]]]]],
441 [["i", "includes", ["map", [[0, true]]]],
442 ["i", "includes", ["map", [[1, false]]]]]]' \
f85f8ebb
BP
443 '[{"i": ["map", []]},
444 {"i": ["map", [[0, true]]]},
445 {"i": ["map", [[1, false]]]},
446 {"i": ["map", [[0, true], [1, false]]]},
447 {"i": ["map", [[2, true]]]},
448 {"i": ["map", [[2, true], [0, true]]]},
449 {"i": ["map", [[2, true], [1, false]]]},
450 {"i": ["map", [[2, true], [1, false], [0, true]]]}]']],
451 [dnl
452condition 0: T---- ---
453condition 1: -T--- ---
454condition 2: --T-- ---
455condition 3: ---T- ---
456condition 4: ----T ---
457condition 5: ----- T--
458condition 6: ----- -T-
459condition 7: ----- --T
460condition 8: -TTTT TTT
461condition 9: T-TTT TTT
462condition 10: TT-TT TTT
463condition 11: TTT-T TTT
464condition 12: TTTT- TTT
465condition 13: TTTTT -TT
466condition 14: TTTTT T-T
467condition 15: TTTTT TT-
468condition 16: TTTTT TTT
469condition 17: -T-T- T-T
470condition 18: --TT- -TT
471condition 19: ---T- --T
472condition 20: ----T TTT
473condition 21: ----- T-T
474condition 22: ----- -TT
475condition 23: ----- --T
476condition 24: TTTTT TTT
477condition 25: T-T-T -T-
478condition 26: TT--T T--
479condition 27: T---T ---
480condition 28: TTTT- ---
481condition 29: T-T-- ---
482condition 30: TT--- ---
40f280c7
BP
483condition 31: T---- ---
484condition 32: ---T- --T], [condition])
f85f8ebb
BP
485
486# This is the same as the "set" test except that it adds values,
487# and those values don't always match.
488OVSDB_CHECK_POSITIVE([evaluating conditions on maps (2)],
489 [[evaluate-conditions \
490 '{"columns": {"i": {"type": {"key": "integer",
491 "value": "boolean",
492 "min": 0,
493 "max": "unlimited"}}}}' \
494 '[[["i", "==", ["map", []]]],
495 [["i", "==", ["map", [[0, true]]]]],
496 [["i", "==", ["map", [[1, false]]]]],
497 [["i", "==", ["map", [[0, true], [1, false]]]]],
498 [["i", "==", ["map", [[2, true]]]]],
499 [["i", "==", ["map", [[2, true], [0, true]]]]],
500 [["i", "==", ["map", [[2, true], [1, false]]]]],
501 [["i", "==", ["map", [[2, true], [1, false], [0, true]]]]],
502 [["i", "!=", ["map", []]]],
503 [["i", "!=", ["map", [[0, true]]]]],
504 [["i", "!=", ["map", [[1, false]]]]],
505 [["i", "!=", ["map", [[0, true], [1, false]]]]],
506 [["i", "!=", ["map", [[2, true]]]]],
507 [["i", "!=", ["map", [[2, true], [0, true]]]]],
508 [["i", "!=", ["map", [[2, true], [1, false]]]]],
509 [["i", "!=", ["map", [[2, true], [1, false], [0, true]]]]],
510 [["i", "includes", ["map", []]]],
511 [["i", "includes", ["map", [[0, true]]]]],
512 [["i", "includes", ["map", [[1, false]]]]],
513 [["i", "includes", ["map", [[0, true], [1, false]]]]],
514 [["i", "includes", ["map", [[2, true]]]]],
515 [["i", "includes", ["map", [[2, true], [0, true]]]]],
516 [["i", "includes", ["map", [[2, true], [1, false]]]]],
517 [["i", "includes", ["map", [[2, true], [1, false], [0, true]]]]],
518 [["i", "excludes", ["map", []]]],
519 [["i", "excludes", ["map", [[0, true]]]]],
520 [["i", "excludes", ["map", [[1, false]]]]],
521 [["i", "excludes", ["map", [[0, true], [1, false]]]]],
522 [["i", "excludes", ["map", [[2, true]]]]],
523 [["i", "excludes", ["map", [[2, true], [0, true]]]]],
524 [["i", "excludes", ["map", [[2, true], [1, false]]]]],
40f280c7
BP
525 [["i", "excludes", ["map", [[2, true], [1, false], [0, true]]]]],
526 [["i", "includes", ["map", [[0, true]]]],
527 ["i", "includes", ["map", [[1, false]]]]]]' \
f85f8ebb
BP
528 '[{"i": ["map", []]},
529 {"i": ["map", [[0, true]]]},
530 {"i": ["map", [[0, false]]]},
531 {"i": ["map", [[1, false]]]},
532 {"i": ["map", [[1, true]]]},
533
534 {"i": ["map", [[0, true], [1, false]]]},
535 {"i": ["map", [[0, true], [1, true]]]},
536 {"i": ["map", [[2, true]]]},
537 {"i": ["map", [[2, false]]]},
538 {"i": ["map", [[2, true], [0, true]]]},
539
540 {"i": ["map", [[2, false], [0, true]]]},
541 {"i": ["map", [[2, true], [1, false]]]},
542 {"i": ["map", [[2, true], [1, true]]]},
543 {"i": ["map", [[2, true], [1, false], [0, true]]]},
544 {"i": ["map", [[2, true], [1, false], [0, false]]]}]']],
545 [dnl
546condition 0: T---- ----- -----
547condition 1: -T--- ----- -----
548condition 2: ---T- ----- -----
549condition 3: ----- T---- -----
550condition 4: ----- --T-- -----
551condition 5: ----- ----T -----
552condition 6: ----- ----- -T---
553condition 7: ----- ----- ---T-
554condition 8: -TTTT TTTTT TTTTT
555condition 9: T-TTT TTTTT TTTTT
556condition 10: TTT-T TTTTT TTTTT
557condition 11: TTTTT -TTTT TTTTT
558condition 12: TTTTT TT-TT TTTTT
559condition 13: TTTTT TTTT- TTTTT
560condition 14: TTTTT TTTTT T-TTT
561condition 15: TTTTT TTTTT TTT-T
562condition 16: TTTTT TTTTT TTTTT
563condition 17: -T--- TT--T T--T-
564condition 18: ---T- T---- -T-TT
565condition 19: ----- T---- ---T-
566condition 20: ----- --T-T -TTTT
567condition 21: ----- ----T ---T-
568condition 22: ----- ----- -T-TT
569condition 23: ----- ----- ---T-
570condition 24: TTTTT TTTTT TTTTT
571condition 25: T-TTT --TT- -TT-T
572condition 26: TTT-T -TTTT T-T--
573condition 27: T-T-T --TT- --T--
574condition 28: TTTTT TT-T- T----
575condition 29: T-TTT ---T- -----
576condition 30: TTT-T -T-T- T----
40f280c7
BP
577condition 31: T-T-T ---T- -----
578condition 32: ----- T---- ---T-], [condition])
09e25603
TW
579
580OVSDB_CHECK_POSITIVE([evaluating conditions on optional integers],
581 [[evaluate-conditions \
582 '{"columns": {"i": {"type": {"key": "integer", "min": 0, "max": 1}}}}' \
583 '[[["i", "<", 1]],
584 [["i", "<=", 1]],
585 [["i", "==", 1]],
586 [["i", "!=", 1]],
587 [["i", ">=", 1]],
588 [["i", ">", 1]],
589 [["i", "includes", 1]],
590 [["i", "excludes", 1]],
591 [["i", ">", 0], ["i", "<", 2]]]' \
592 '[{"i": ["set", []]},
593 {"i": ["set", [0]]},
594 {"i": ["set", [1]]},
595 {"i": ["set", [2]]}]']],
596 [dnl
597condition 0: -T--
598condition 1: -TT-
599condition 2: --T-
600condition 3: TT-T
601condition 4: --TT
602condition 5: ---T
603condition 6: --T-
604condition 7: TT-T
605condition 8: --T-], [condition])
606
607OVSDB_CHECK_POSITIVE([evaluating conditions on optional strings],
608 [[evaluate-conditions \
609 '{"columns": {"s": {"type": {"key": "string", "min": 0, "max": 1}}}}' \
610 '[[["s", "==", ""]],
611 [["s", "!=", ""]],
612 [["s", "includes", ""]],
613 [["s", "excludes", ""]],
614 [["s", "==", "foo"]],
615 [["s", "!=", "foo"]],
616 [["s", "includes", "foo"]],
617 [["s", "excludes", "foo"]],
618 [["s", "!=", "foo"], ["s", "!=", ""]]]' \
619 '[{"s": ["set", [""]]},
620 {"s": ["set", ["foo"]]},
621 {"s": ["set", ["xxx"]]},
622 {"s": ["set", []]}]']],
623 [dnl
624condition 0: T---
625condition 1: -TTT
626condition 2: T---
627condition 3: -TTT
628condition 4: -T--
629condition 5: T-TT
630condition 6: -T--
631condition 7: T-TT
632condition 8: --TT], [condition])
633
634OVSDB_CHECK_POSITIVE([evaluating conditions on optional reals],
635 [[evaluate-conditions \
636 '{"columns": {"r": {"type": {"key": "real", "min": 0, "max": 1}}}}' \
637 '[[["r", "<", 5.0]],
638 [["r", "<=", 5.0]],
639 [["r", "==", 5.0]],
640 [["r", "!=", 5.0]],
641 [["r", ">=", 5.0]],
642 [["r", ">", 5.0]],
643 [["r", "includes", 5.0]],
644 [["r", "excludes", 5.0]],
645 [["r", "!=", 0], ["r", "!=", 5.1]]]' \
646 '[{"r": ["set", [0]]},
647 {"r": ["set", [5.0]]},
648 {"r": ["set", [5.1]]},
649 {"r": ["set", []]}]']],
650 [dnl
651condition 0: T---
652condition 1: TT--
653condition 2: -T--
654condition 3: T-TT
655condition 4: -TT-
656condition 5: --T-
657condition 6: -T--
658condition 7: T-TT
659condition 8: -T-T], [condition])