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);