6 #include <isl_constraint.h>
10 void test_read(struct isl_ctx
*ctx
)
12 char filename
[PATH_MAX
];
15 struct isl_basic_set
*bset1
, *bset2
;
16 const char *str
= "{[y]: Exists ( alpha : 2alpha = y)}";
18 n
= snprintf(filename
, sizeof(filename
),
19 "%s/test_inputs/set.omega", srcdir
);
20 assert(n
< sizeof(filename
));
21 input
= fopen(filename
, "r");
24 bset1
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_OMEGA
);
25 bset2
= isl_basic_set_read_from_str(ctx
, str
, 0, ISL_FORMAT_OMEGA
);
27 assert(isl_basic_set_is_equal(bset1
, bset2
) == 1);
29 isl_basic_set_free(bset1
);
30 isl_basic_set_free(bset2
);
35 /* Construct the basic set { [i] : 5 <= i <= N } */
36 void test_construction(struct isl_ctx
*ctx
)
40 struct isl_basic_set
*bset
;
41 struct isl_constraint
*c
;
45 dim
= isl_dim_set_alloc(ctx
, 1, 1);
46 bset
= isl_basic_set_universe(dim
);
48 c
= isl_inequality_alloc(isl_dim_copy(bset
->dim
));
49 isl_int_set_si(v
, -1);
50 isl_constraint_set_coefficient(c
, isl_dim_set
, 0, v
);
52 isl_constraint_set_coefficient(c
, isl_dim_param
, 0, v
);
53 bset
= isl_basic_set_add_constraint(bset
, c
);
55 c
= isl_inequality_alloc(isl_dim_copy(bset
->dim
));
57 isl_constraint_set_coefficient(c
, isl_dim_set
, 0, v
);
58 isl_int_set_si(v
, -5);
59 isl_constraint_set_constant(c
, v
);
60 bset
= isl_basic_set_add_constraint(bset
, c
);
62 isl_basic_set_free(bset
);
67 void test_application_case(struct isl_ctx
*ctx
, const char *name
)
69 char filename
[PATH_MAX
];
72 struct isl_basic_set
*bset1
, *bset2
;
73 struct isl_basic_map
*bmap
;
75 n
= snprintf(filename
, sizeof(filename
),
76 "%s/test_inputs/%s.omega", srcdir
, name
);
77 assert(n
< sizeof(filename
));
78 input
= fopen(filename
, "r");
81 bset1
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_OMEGA
);
82 bmap
= isl_basic_map_read_from_file(ctx
, input
, 0, ISL_FORMAT_OMEGA
);
84 bset1
= isl_basic_set_apply(bset1
, bmap
);
86 bset2
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_OMEGA
);
88 assert(isl_basic_set_is_equal(bset1
, bset2
) == 1);
90 isl_basic_set_free(bset1
);
91 isl_basic_set_free(bset2
);
96 void test_application(struct isl_ctx
*ctx
)
98 test_application_case(ctx
, "application");
99 test_application_case(ctx
, "application2");
102 void test_affine_hull_case(struct isl_ctx
*ctx
, const char *name
)
104 char filename
[PATH_MAX
];
107 struct isl_basic_set
*bset1
, *bset2
;
109 n
= snprintf(filename
, sizeof(filename
),
110 "%s/test_inputs/%s.polylib", srcdir
, name
);
111 assert(n
< sizeof(filename
));
112 input
= fopen(filename
, "r");
115 bset1
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_POLYLIB
);
116 bset2
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_POLYLIB
);
118 bset1
= isl_basic_set_affine_hull(bset1
);
120 assert(isl_basic_set_is_equal(bset1
, bset2
) == 1);
122 isl_basic_set_free(bset1
);
123 isl_basic_set_free(bset2
);
128 void test_affine_hull(struct isl_ctx
*ctx
)
130 test_affine_hull_case(ctx
, "affine2");
131 test_affine_hull_case(ctx
, "affine");
134 void test_convex_hull_case(struct isl_ctx
*ctx
, const char *name
)
136 char filename
[PATH_MAX
];
139 struct isl_basic_set
*bset1
, *bset2
;
142 n
= snprintf(filename
, sizeof(filename
),
143 "%s/test_inputs/%s.polylib", srcdir
, name
);
144 assert(n
< sizeof(filename
));
145 input
= fopen(filename
, "r");
148 bset1
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_POLYLIB
);
149 bset2
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_POLYLIB
);
151 set
= isl_basic_set_union(bset1
, bset2
);
152 bset1
= isl_set_convex_hull(set
);
154 bset2
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_POLYLIB
);
156 assert(isl_basic_set_is_equal(bset1
, bset2
) == 1);
158 isl_basic_set_free(bset1
);
159 isl_basic_set_free(bset2
);
164 void test_convex_hull(struct isl_ctx
*ctx
)
166 test_convex_hull_case(ctx
, "convex0");
167 test_convex_hull_case(ctx
, "convex1");
168 test_convex_hull_case(ctx
, "convex2");
169 test_convex_hull_case(ctx
, "convex3");
170 test_convex_hull_case(ctx
, "convex4");
171 test_convex_hull_case(ctx
, "convex5");
172 test_convex_hull_case(ctx
, "convex6");
173 test_convex_hull_case(ctx
, "convex7");
174 test_convex_hull_case(ctx
, "convex8");
175 test_convex_hull_case(ctx
, "convex9");
176 test_convex_hull_case(ctx
, "convex10");
177 test_convex_hull_case(ctx
, "convex11");
180 void test_gist_case(struct isl_ctx
*ctx
, const char *name
)
182 char filename
[PATH_MAX
];
185 struct isl_basic_set
*bset1
, *bset2
;
188 n
= snprintf(filename
, sizeof(filename
),
189 "%s/test_inputs/%s.polylib", srcdir
, name
);
190 assert(n
< sizeof(filename
));
191 input
= fopen(filename
, "r");
194 bset1
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_POLYLIB
);
195 bset2
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_POLYLIB
);
197 bset1
= isl_basic_set_gist(bset1
, bset2
);
199 bset2
= isl_basic_set_read_from_file(ctx
, input
, 0, ISL_FORMAT_POLYLIB
);
201 assert(isl_basic_set_is_equal(bset1
, bset2
) == 1);
203 isl_basic_set_free(bset1
);
204 isl_basic_set_free(bset2
);
209 void test_gist(struct isl_ctx
*ctx
)
211 test_gist_case(ctx
, "gist1");
218 srcdir
= getenv("srcdir");
220 ctx
= isl_ctx_alloc();
222 test_construction(ctx
);
223 test_application(ctx
);
224 test_affine_hull(ctx
);
225 test_convex_hull(ctx
);