1/***
2!Test
3expected: !Result
4  solution: !Solution:
5    y:
6    - '{}'
7    - '4.0..infinity'
8    - '{2.0,3.0}'
9    - '2.0..2.0 union 3.0..3.0 union 4.0..infinity'
10    - '-1.0..1.0'
11    - '-1.0..1.0 union 4.0..infinity'
12    - '-1.0..1.0 union 2.0..2.0 union 3.0..3.0'
13    - '-1.0..1.0 union 2.0..2.0 union 3.0..3.0 union 4.0..infinity'
14    - '{-3.0,-2.0}'
15    - '-3.0..-3.0 union -2.0..-2.0 union 4.0..infinity'
16    - '{-3.0,-2.0,2.0,3.0}'
17    - '-3.0..-3.0 union -2.0..-2.0 union 2.0..2.0 union 3.0..3.0 union 4.0..infinity'
18    - '-3.0..-3.0 union -2.0..-2.0 union -1.0..1.0'
19    - '-3.0..-3.0 union -2.0..-2.0 union -1.0..1.0 union 4.0..infinity'
20    - '-3.0..-3.0 union -2.0..-2.0 union -1.0..1.0 union 2.0..2.0 union 3.0..3.0'
21    - '-3.0..-3.0 union -2.0..-2.0 union -1.0..1.0 union 2.0..2.0 union 3.0..3.0 union 4.0..infinity'
22    - '-infinity..-4.0'
23    - '-infinity..-4.0 union 4.0..infinity'
24    - '-infinity..-4.0 union 2.0..2.0 union 3.0..3.0'
25    - '-infinity..-4.0 union 2.0..2.0 union 3.0..3.0 union 4.0..infinity'
26    - '-infinity..-4.0 union -1.0..1.0'
27    - '-infinity..-4.0 union -1.0..1.0 union 4.0..infinity'
28    - '-infinity..-4.0 union -1.0..1.0 union 2.0..2.0 union 3.0..3.0'
29    - '-infinity..-4.0 union -1.0..1.0 union 2.0..2.0 union 3.0..3.0 union 4.0..infinity'
30    - '-infinity..-4.0 union -3.0..-3.0 union -2.0..-2.0'
31    - '-infinity..-4.0 union -3.0..-3.0 union -2.0..-2.0 union 4.0..infinity'
32    - '-infinity..-4.0 union -3.0..-3.0 union -2.0..-2.0 union 2.0..2.0 union 3.0..3.0'
33    - '-infinity..-4.0 union -3.0..-3.0 union -2.0..-2.0 union 2.0..2.0 union 3.0..3.0 union 4.0..infinity'
34    - '-infinity..-4.0 union -3.0..-3.0 union -2.0..-2.0 union -1.0..1.0'
35    - '-infinity..-4.0 union -3.0..-3.0 union -2.0..-2.0 union -1.0..1.0 union 4.0..infinity'
36    - '-infinity..-4.0 union -3.0..-3.0 union -2.0..-2.0 union -1.0..1.0 union 2.0..2.0 union 3.0..3.0'
37    - '-infinity..-4.0 union -3.0..-3.0 union -2.0..-2.0 union -1.0..1.0 union 2.0..2.0 union 3.0..3.0 union 4.0..infinity'
38***/
39
40array [1..5] of set of float: x = [
41  -infinity..-4.0,
42  {-3.0, -2.0},
43  -1.0..1.0,
44  {2.0, 3.0},
45  4.0..infinity
46];
47
48function set of float: s(bool: b, set of float: x) = if b then x else {} endif;
49
50array [1..32] of string: y :: add_to_output = [
51  show(
52    s(a, x[1]) union
53    s(b, x[2]) union
54    s(c, x[3]) union
55    s(d, x[4]) union
56    s(e, x[5])
57  ) | a, b, c, d, e in [false, true]
58];