]>
Commit | Line | Data |
---|---|---|
f85f8ebb BP |
1 | AT_BANNER([OVSDB -- conditions]) |
2 | ||
3 | OVSDB_CHECK_POSITIVE([null condition], | |
4 | [[parse-conditions \ | |
5 | '{"columns": {"name": {"type": "string"}}}' \ | |
6 | '[]']], | |
7 | [[[]]]) | |
8 | ||
9 | OVSDB_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 | ||
75 | AT_SETUP([disallowed conditions on scalars]) | |
76 | AT_KEYWORDS([ovsdb negative condition]) | |
7c126fbb | 77 | AT_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. | |
98 | test-ovsdb: syntax "["b",">=",false]": syntax error: Type mismatch: ">=" operator may not be applied to column b of type boolean. | |
99 | test-ovsdb: syntax "["b","<",false]": syntax error: Type mismatch: "<" operator may not be applied to column b of type boolean. | |
100 | test-ovsdb: syntax "["b","<=",false]": syntax error: Type mismatch: "<=" operator may not be applied to column b of type boolean. | |
101 | test-ovsdb: syntax "["s",">","a"]": syntax error: Type mismatch: ">" operator may not be applied to column s of type string. | |
102 | test-ovsdb: syntax "["s",">=","b"]": syntax error: Type mismatch: ">=" operator may not be applied to column s of type string. | |
103 | test-ovsdb: syntax "["s","<","c"]": syntax error: Type mismatch: "<" operator may not be applied to column s of type string. | |
104 | test-ovsdb: syntax "["s","<=","d"]": syntax error: Type mismatch: "<=" operator may not be applied to column s of type string. | |
105 | test-ovsdb: syntax "["u",">",["uuid","b10d28f7-af18-4a67-9e78-2a6394516c59"]]": syntax error: Type mismatch: ">" operator may not be applied to column u of type uuid. | |
106 | test-ovsdb: syntax "["u",">=",["uuid","9179ca6d-6d65-400a-b455-3ad92783a099"]]": syntax error: Type mismatch: ">=" operator may not be applied to column u of type uuid. | |
107 | test-ovsdb: syntax "["u","<",["uuid","ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]]": syntax error: Type mismatch: "<" operator may not be applied to column u of type uuid. | |
108 | test-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 | ]]) | |
110 | AT_CLEANUP | |
111 | ||
112 | OVSDB_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 | ||
173 | OVSDB_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 | ||
187 | OVSDB_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 | ||
196 | OVSDB_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-- | |
212 | condition 1: TT- | |
213 | condition 2: -T- | |
214 | condition 3: T-T | |
215 | condition 4: -TT | |
216 | condition 5: --T | |
217 | condition 6: -T- | |
40f280c7 BP |
218 | condition 7: T-T |
219 | condition 8: -T-], [condition]) | |
f85f8ebb BP |
220 | |
221 | OVSDB_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-- | |
237 | condition 1: TT- | |
238 | condition 2: -T- | |
239 | condition 3: T-T | |
240 | condition 4: -TT | |
241 | condition 5: --T | |
242 | condition 6: -T- | |
40f280c7 BP |
243 | condition 7: T-T |
244 | condition 8: -T-], [condition]) | |
f85f8ebb BP |
245 | |
246 | OVSDB_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- | |
261 | condition 1: -T | |
262 | condition 2: T- | |
263 | condition 3: -T | |
264 | condition 4: -T | |
265 | condition 5: T- | |
266 | condition 6: -T | |
40f280c7 BP |
267 | condition 7: T- |
268 | condition 8: --], [condition]) | |
f85f8ebb BP |
269 | |
270 | OVSDB_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-- | |
286 | condition 1: -TT | |
287 | condition 2: T-- | |
288 | condition 3: -TT | |
289 | condition 4: -T- | |
290 | condition 5: T-T | |
291 | condition 6: -T- | |
40f280c7 BP |
292 | condition 7: T-T |
293 | condition 8: --T], [condition]) | |
f85f8ebb BP |
294 | |
295 | OVSDB_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-- | |
312 | condition 1: -TT | |
313 | condition 2: T-- | |
314 | condition 3: -TT | |
315 | condition 4: -T- | |
316 | condition 5: T-T | |
317 | condition 6: -T- | |
40f280c7 BP |
318 | condition 7: T-T |
319 | condition 8: T-T], [condition]) | |
f85f8ebb BP |
320 | |
321 | OVSDB_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 | |
367 | condition 0: T---- --- | |
368 | condition 1: -T--- --- | |
369 | condition 2: --T-- --- | |
370 | condition 3: ---T- --- | |
371 | condition 4: ----T --- | |
372 | condition 5: ----- T-- | |
373 | condition 6: ----- -T- | |
374 | condition 7: ----- --T | |
375 | condition 8: -TTTT TTT | |
376 | condition 9: T-TTT TTT | |
377 | condition 10: TT-TT TTT | |
378 | condition 11: TTT-T TTT | |
379 | condition 12: TTTT- TTT | |
380 | condition 13: TTTTT -TT | |
381 | condition 14: TTTTT T-T | |
382 | condition 15: TTTTT TT- | |
383 | condition 16: TTTTT TTT | |
384 | condition 17: -T-T- T-T | |
385 | condition 18: --TT- -TT | |
386 | condition 19: ---T- --T | |
387 | condition 20: ----T TTT | |
388 | condition 21: ----- T-T | |
389 | condition 22: ----- -TT | |
390 | condition 23: ----- --T | |
391 | condition 24: TTTTT TTT | |
392 | condition 25: T-T-T -T- | |
393 | condition 26: TT--T T-- | |
394 | condition 27: T---T --- | |
395 | condition 28: TTTT- --- | |
396 | condition 29: T-T-- --- | |
397 | condition 30: TT--- --- | |
40f280c7 BP |
398 | condition 31: T---- --- |
399 | condition 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. | |
403 | OVSDB_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 | |
452 | condition 0: T---- --- | |
453 | condition 1: -T--- --- | |
454 | condition 2: --T-- --- | |
455 | condition 3: ---T- --- | |
456 | condition 4: ----T --- | |
457 | condition 5: ----- T-- | |
458 | condition 6: ----- -T- | |
459 | condition 7: ----- --T | |
460 | condition 8: -TTTT TTT | |
461 | condition 9: T-TTT TTT | |
462 | condition 10: TT-TT TTT | |
463 | condition 11: TTT-T TTT | |
464 | condition 12: TTTT- TTT | |
465 | condition 13: TTTTT -TT | |
466 | condition 14: TTTTT T-T | |
467 | condition 15: TTTTT TT- | |
468 | condition 16: TTTTT TTT | |
469 | condition 17: -T-T- T-T | |
470 | condition 18: --TT- -TT | |
471 | condition 19: ---T- --T | |
472 | condition 20: ----T TTT | |
473 | condition 21: ----- T-T | |
474 | condition 22: ----- -TT | |
475 | condition 23: ----- --T | |
476 | condition 24: TTTTT TTT | |
477 | condition 25: T-T-T -T- | |
478 | condition 26: TT--T T-- | |
479 | condition 27: T---T --- | |
480 | condition 28: TTTT- --- | |
481 | condition 29: T-T-- --- | |
482 | condition 30: TT--- --- | |
40f280c7 BP |
483 | condition 31: T---- --- |
484 | condition 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. | |
488 | OVSDB_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 | |
546 | condition 0: T---- ----- ----- | |
547 | condition 1: -T--- ----- ----- | |
548 | condition 2: ---T- ----- ----- | |
549 | condition 3: ----- T---- ----- | |
550 | condition 4: ----- --T-- ----- | |
551 | condition 5: ----- ----T ----- | |
552 | condition 6: ----- ----- -T--- | |
553 | condition 7: ----- ----- ---T- | |
554 | condition 8: -TTTT TTTTT TTTTT | |
555 | condition 9: T-TTT TTTTT TTTTT | |
556 | condition 10: TTT-T TTTTT TTTTT | |
557 | condition 11: TTTTT -TTTT TTTTT | |
558 | condition 12: TTTTT TT-TT TTTTT | |
559 | condition 13: TTTTT TTTT- TTTTT | |
560 | condition 14: TTTTT TTTTT T-TTT | |
561 | condition 15: TTTTT TTTTT TTT-T | |
562 | condition 16: TTTTT TTTTT TTTTT | |
563 | condition 17: -T--- TT--T T--T- | |
564 | condition 18: ---T- T---- -T-TT | |
565 | condition 19: ----- T---- ---T- | |
566 | condition 20: ----- --T-T -TTTT | |
567 | condition 21: ----- ----T ---T- | |
568 | condition 22: ----- ----- -T-TT | |
569 | condition 23: ----- ----- ---T- | |
570 | condition 24: TTTTT TTTTT TTTTT | |
571 | condition 25: T-TTT --TT- -TT-T | |
572 | condition 26: TTT-T -TTTT T-T-- | |
573 | condition 27: T-T-T --TT- --T-- | |
574 | condition 28: TTTTT TT-T- T---- | |
575 | condition 29: T-TTT ---T- ----- | |
576 | condition 30: TTT-T -T-T- T---- | |
40f280c7 BP |
577 | condition 31: T-T-T ---T- ----- |
578 | condition 32: ----- T---- ---T-], [condition]) | |
09e25603 TW |
579 | |
580 | OVSDB_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 | |
597 | condition 0: -T-- | |
598 | condition 1: -TT- | |
599 | condition 2: --T- | |
600 | condition 3: TT-T | |
601 | condition 4: --TT | |
602 | condition 5: ---T | |
603 | condition 6: --T- | |
604 | condition 7: TT-T | |
605 | condition 8: --T-], [condition]) | |
606 | ||
607 | OVSDB_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 | |
624 | condition 0: T--- | |
625 | condition 1: -TTT | |
626 | condition 2: T--- | |
627 | condition 3: -TTT | |
628 | condition 4: -T-- | |
629 | condition 5: T-TT | |
630 | condition 6: -T-- | |
631 | condition 7: T-TT | |
632 | condition 8: --TT], [condition]) | |
633 | ||
634 | OVSDB_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 | |
651 | condition 0: T--- | |
652 | condition 1: TT-- | |
653 | condition 2: -T-- | |
654 | condition 3: T-TT | |
655 | condition 4: -TT- | |
656 | condition 5: --T- | |
657 | condition 6: -T-- | |
658 | condition 7: T-TT | |
659 | condition 8: -T-T], [condition]) |