1 /*
2 * Copyright (C) by Argonne National Laboratory
3 * See COPYRIGHT in top-level directory
4 */
5
6 #include "yaksa.h"
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <assert.h>
10
11 void int_with_lb_ub_test(void);
12 void contig_of_int_with_lb_ub_test(void);
13 void contig_negextent_of_int_with_lb_ub_test(void);
14 void vector_of_int_with_lb_ub_test(void);
15 void vector_blklen_of_int_with_lb_ub_test(void);
16 void vector_blklen_stride_of_int_with_lb_ub_test(void);
17 void vector_blklen_stride_negextent_of_int_with_lb_ub_test(void);
18 void vector_blklen_negstride_negextent_of_int_with_lb_ub_test(void);
19 void int_with_negextent_test(void);
20 void vector_blklen_negstride_of_int_with_lb_ub_test(void);
21
main(int argc,char ** argv)22 int main(int argc, char **argv)
23 {
24 yaksa_init(NULL);
25
26 int_with_lb_ub_test();
27 contig_of_int_with_lb_ub_test();
28 contig_negextent_of_int_with_lb_ub_test();
29 vector_of_int_with_lb_ub_test();
30 vector_blklen_of_int_with_lb_ub_test();
31 vector_blklen_stride_of_int_with_lb_ub_test();
32 vector_blklen_negstride_of_int_with_lb_ub_test();
33 int_with_negextent_test();
34 vector_blklen_stride_negextent_of_int_with_lb_ub_test();
35 vector_blklen_negstride_negextent_of_int_with_lb_ub_test();
36
37 yaksa_finalize();
38 return 0;
39 }
40
int_with_lb_ub_test(void)41 void int_with_lb_ub_test(void)
42 {
43 uintptr_t val;
44 intptr_t lb, extent;
45 yaksa_type_t tmptype, eviltype;
46
47 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
48 yaksa_type_create_resized(tmptype, -3, 9, NULL, &eviltype);
49 yaksa_type_get_size(eviltype, &val);
50 assert(val == 4);
51
52 yaksa_type_get_extent(eviltype, &lb, &extent);
53 assert(lb == -3);
54 assert(extent == 9);
55
56 yaksa_type_get_true_extent(eviltype, &lb, &extent);
57 assert(lb == 0);
58 assert(extent == 4);
59
60 yaksa_type_free(tmptype);
61 yaksa_type_free(eviltype);
62 }
63
contig_of_int_with_lb_ub_test(void)64 void contig_of_int_with_lb_ub_test(void)
65 {
66 uintptr_t val;
67 intptr_t lb, extent;
68 yaksa_type_t tmptype, inttype, eviltype;
69
70 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
71 yaksa_type_create_resized(tmptype, -3, 9, NULL, &inttype);
72 yaksa_type_create_contig(3, inttype, NULL, &eviltype);
73
74 yaksa_type_get_size(eviltype, &val);
75 assert(val == 12);
76
77 yaksa_type_get_extent(eviltype, &lb, &extent);
78 assert(lb == -3);
79 assert(extent == 27);
80
81 yaksa_type_get_true_extent(eviltype, &lb, &extent);
82 assert(lb == 0);
83 assert(extent == 22);
84
85 yaksa_type_free(tmptype);
86 yaksa_type_free(inttype);
87 yaksa_type_free(eviltype);
88 }
89
contig_negextent_of_int_with_lb_ub_test(void)90 void contig_negextent_of_int_with_lb_ub_test(void)
91 {
92 uintptr_t val;
93 intptr_t lb, extent;
94 yaksa_type_t tmptype, inttype, eviltype;
95
96 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
97 yaksa_type_create_resized(tmptype, 6, -9, NULL, &inttype);
98 yaksa_type_create_contig(3, inttype, NULL, &eviltype);
99
100 yaksa_type_get_size(eviltype, &val);
101 assert(val == 12);
102
103 yaksa_type_get_extent(eviltype, &lb, &extent);
104 assert(lb == -12);
105 assert(extent == 9);
106
107 yaksa_type_get_true_extent(eviltype, &lb, &extent);
108 assert(lb == -18);
109 assert(extent == 22);
110
111 yaksa_type_free(tmptype);
112 yaksa_type_free(inttype);
113 yaksa_type_free(eviltype);
114 }
115
vector_of_int_with_lb_ub_test(void)116 void vector_of_int_with_lb_ub_test(void)
117 {
118 uintptr_t val;
119 intptr_t lb, extent;
120 yaksa_type_t tmptype, inttype, eviltype;
121
122 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
123 yaksa_type_create_resized(tmptype, -3, 9, NULL, &inttype);
124 yaksa_type_create_vector(3, 1, 1, inttype, NULL, &eviltype);
125
126 yaksa_type_get_size(eviltype, &val);
127 assert(val == 12);
128
129 yaksa_type_get_extent(eviltype, &lb, &extent);
130 assert(lb == -3);
131 assert(extent == 27);
132
133 yaksa_type_get_true_extent(eviltype, &lb, &extent);
134 assert(lb == 0);
135 assert(extent == 22);
136
137 yaksa_type_free(tmptype);
138 yaksa_type_free(inttype);
139 yaksa_type_free(eviltype);
140 }
141
vector_blklen_of_int_with_lb_ub_test(void)142 void vector_blklen_of_int_with_lb_ub_test(void)
143 {
144 uintptr_t val;
145 intptr_t lb, extent;
146 yaksa_type_t tmptype, inttype, eviltype;
147
148 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
149 yaksa_type_create_resized(tmptype, -3, 9, NULL, &inttype);
150 yaksa_type_create_vector(3, 4, 1, inttype, NULL, &eviltype);
151
152 yaksa_type_get_size(eviltype, &val);
153 assert(val == 48);
154
155 yaksa_type_get_extent(eviltype, &lb, &extent);
156 assert(lb == -3);
157 assert(extent == 54);
158
159 yaksa_type_get_true_extent(eviltype, &lb, &extent);
160 assert(lb == 0);
161 assert(extent == 49);
162
163 yaksa_type_free(tmptype);
164 yaksa_type_free(inttype);
165 yaksa_type_free(eviltype);
166 }
167
vector_blklen_stride_of_int_with_lb_ub_test(void)168 void vector_blklen_stride_of_int_with_lb_ub_test(void)
169 {
170 uintptr_t val;
171 intptr_t lb, extent;
172 yaksa_type_t tmptype, inttype, eviltype;
173
174 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
175 yaksa_type_create_resized(tmptype, -3, 9, NULL, &inttype);
176 yaksa_type_create_vector(3, 4, 5, inttype, NULL, &eviltype);
177
178 yaksa_type_get_size(eviltype, &val);
179 assert(val == 48);
180
181 yaksa_type_get_extent(eviltype, &lb, &extent);
182 assert(lb == -3);
183 assert(extent == 126);
184
185 yaksa_type_get_true_extent(eviltype, &lb, &extent);
186 assert(lb == 0);
187 assert(extent == 121);
188
189 yaksa_type_free(tmptype);
190 yaksa_type_free(inttype);
191 yaksa_type_free(eviltype);
192 }
193
vector_blklen_negstride_of_int_with_lb_ub_test(void)194 void vector_blklen_negstride_of_int_with_lb_ub_test(void)
195 {
196 uintptr_t val;
197 intptr_t lb, extent;
198 yaksa_type_t tmptype, inttype, eviltype;
199
200 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
201 yaksa_type_create_resized(tmptype, -3, 9, NULL, &inttype);
202 yaksa_type_create_vector(3, 4, -5, inttype, NULL, &eviltype);
203
204 yaksa_type_get_size(eviltype, &val);
205 assert(val == 48);
206
207 yaksa_type_get_extent(eviltype, &lb, &extent);
208 assert(lb == -93);
209 assert(extent == 126);
210
211 yaksa_type_get_true_extent(eviltype, &lb, &extent);
212 assert(lb == -90);
213 assert(extent == 121);
214
215 yaksa_type_free(tmptype);
216 yaksa_type_free(inttype);
217 yaksa_type_free(eviltype);
218 }
219
int_with_negextent_test(void)220 void int_with_negextent_test(void)
221 {
222 uintptr_t val;
223 intptr_t lb, extent;
224 yaksa_type_t tmptype, eviltype;
225
226 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
227 yaksa_type_create_resized(tmptype, 6, -9, NULL, &eviltype);
228
229 yaksa_type_get_size(eviltype, &val);
230 assert(val == 4);
231
232 yaksa_type_get_extent(eviltype, &lb, &extent);
233 assert(lb == 6);
234 assert(extent == -9);
235
236 yaksa_type_get_true_extent(eviltype, &lb, &extent);
237 assert(lb == 0);
238 assert(extent == 4);
239
240 yaksa_type_free(tmptype);
241 yaksa_type_free(eviltype);
242 }
243
vector_blklen_stride_negextent_of_int_with_lb_ub_test(void)244 void vector_blklen_stride_negextent_of_int_with_lb_ub_test(void)
245 {
246 uintptr_t val;
247 intptr_t lb, extent;
248 yaksa_type_t tmptype, inttype, eviltype;
249
250 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
251 yaksa_type_create_resized(tmptype, 6, -9, NULL, &inttype);
252 yaksa_type_create_vector(3, 4, 5, inttype, NULL, &eviltype);
253
254 yaksa_type_get_size(eviltype, &val);
255 assert(val == 48);
256
257 yaksa_type_get_extent(eviltype, &lb, &extent);
258 assert(lb == -111);
259 assert(extent == 108);
260
261 yaksa_type_get_true_extent(eviltype, &lb, &extent);
262 assert(lb == -117);
263 assert(extent == 121);
264
265 yaksa_type_free(tmptype);
266 yaksa_type_free(inttype);
267 yaksa_type_free(eviltype);
268 }
269
vector_blklen_negstride_negextent_of_int_with_lb_ub_test(void)270 void vector_blklen_negstride_negextent_of_int_with_lb_ub_test(void)
271 {
272 uintptr_t val;
273 intptr_t lb, extent;
274 yaksa_type_t tmptype, inttype, eviltype;
275
276 yaksa_type_create_contig(4, YAKSA_TYPE__BYTE, NULL, &tmptype);
277 yaksa_type_create_resized(tmptype, 6, -9, NULL, &inttype);
278 yaksa_type_create_vector(3, 4, -5, inttype, NULL, &eviltype);
279
280 yaksa_type_get_size(eviltype, &val);
281 assert(val == 48);
282
283 yaksa_type_get_extent(eviltype, &lb, &extent);
284 assert(lb == -21);
285 assert(extent == 108);
286
287 yaksa_type_get_true_extent(eviltype, &lb, &extent);
288 assert(lb == -27);
289 assert(extent == 121);
290
291 yaksa_type_free(tmptype);
292 yaksa_type_free(inttype);
293 yaksa_type_free(eviltype);
294 }
295