isl_stream.c: extracted from isl_input_omega.c
[isl.git] / isl_test.c
blobca4b3286abfbd5fdaedfd05d1d92899cb0260c18
1 #include <assert.h>
2 #include <stdio.h>
3 #include <limits.h>
4 #include <isl_ctx.h>
5 #include <isl_set.h>
6 #include <isl_constraint.h>
8 static char *srcdir;
10 void test_read(struct isl_ctx *ctx)
12 char filename[PATH_MAX];
13 FILE *input;
14 int n;
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");
22 assert(input);
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);
32 fclose(input);
35 /* Construct the basic set { [i] : 5 <= i <= N } */
36 void test_construction(struct isl_ctx *ctx)
38 isl_int v;
39 struct isl_dim *dim;
40 struct isl_basic_set *bset;
41 struct isl_constraint *c;
43 isl_int_init(v);
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);
51 isl_int_set_si(v, 1);
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));
56 isl_int_set_si(v, 1);
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);
64 isl_int_clear(v);
67 void test_application_case(struct isl_ctx *ctx, const char *name)
69 char filename[PATH_MAX];
70 FILE *input;
71 int n;
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");
79 assert(input);
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);
93 fclose(input);
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];
105 FILE *input;
106 int n;
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");
113 assert(input);
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);
125 fclose(input);
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];
137 FILE *input;
138 int n;
139 struct isl_basic_set *bset1, *bset2;
140 struct isl_set *set;
142 n = snprintf(filename, sizeof(filename),
143 "%s/test_inputs/%s.polylib", srcdir, name);
144 assert(n < sizeof(filename));
145 input = fopen(filename, "r");
146 assert(input);
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);
161 fclose(input);
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];
183 FILE *input;
184 int n;
185 struct isl_basic_set *bset1, *bset2;
186 struct isl_set *set;
188 n = snprintf(filename, sizeof(filename),
189 "%s/test_inputs/%s.polylib", srcdir, name);
190 assert(n < sizeof(filename));
191 input = fopen(filename, "r");
192 assert(input);
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);
206 fclose(input);
209 void test_gist(struct isl_ctx *ctx)
211 test_gist_case(ctx, "gist1");
214 int main()
216 struct isl_ctx *ctx;
218 srcdir = getenv("srcdir");
220 ctx = isl_ctx_alloc();
221 test_read(ctx);
222 test_construction(ctx);
223 test_application(ctx);
224 test_affine_hull(ctx);
225 test_convex_hull(ctx);
226 test_gist(ctx);
227 isl_ctx_free(ctx);
228 return 0;