source: tests/alloc2.cfa@ e378c730

ADT ast-experimental pthread-emulation
Last change on this file since e378c730 was 1988572, checked in by Peter A. Buhr <pabuhr@…>, 3 years ago

formatting, removed unnecessary casts

  • Property mode set to 100644
File size: 23.6 KB
RevLine 
[191a190]1#include <malloc.h> // malloc_usable_size
2#include <stdint.h> // uintptr_t
3#include <stdlib.hfa> // access C malloc, realloc
4#include <string.h> // memcmp
5
6int last_failed;
7int tests_total;
8int tests_failed;
9size_t tAlign = 32;
10struct S1 { int data; } __attribute__((aligned(32)));
11typedef struct S1 T1;
12
[1988572]13void test_base( void * ip, size_t size, size_t align ) {
[191a190]14 tests_total += 1;
[1988572]15// printf( "DEBUG: starting test %d\n", tests_total);
16 bool passed = (malloc_size( ip ) == size) && (malloc_usable_size( ip ) >= size) && (malloc_alignment( ip ) == align) && ((uintptr_t)ip % align == 0);
17 if ( ! passed ) {
18 printf( "failed test %3d: %4zu %4zu but got %4zu ( %3zu ) %4zu\n", tests_total, size, align, malloc_size( ip ), malloc_usable_size( ip ), malloc_alignment( ip ) );
[f76ff0b]19 tests_failed += 1;
[1988572]20 } // if
21// printf( "DEBUG: done test %d\n", tests_total);
[191a190]22}
23
[1988572]24void test_fill( void * ip_, size_t start, size_t end, char fill ) {
[191a190]25 tests_total += 1;
[1988572]26// printf( "DEBUG: starting test %d\n", tests_total );
[191a190]27 bool passed = true;
28 char * ip = (char *) ip_;
[1988572]29 for ( i; start ~ end ) passed = passed && (ip[i] == fill);
30 if ( ! passed ) {
31 printf( "failed test %3d: fill C\n", tests_total );
[f76ff0b]32 tests_failed += 1;
[1988572]33 } // if
34// printf( "DEBUG: done test %d\n", tests_total );
[191a190]35}
36
[1988572]37void test_fill( void * ip_, size_t start, size_t end, int fill ) {
[191a190]38 tests_total += 1;
[1988572]39// printf( "DEBUG: starting test %d\n", tests_total );
[191a190]40 bool passed = true;
[1988572]41 int * ip = (int *)ip_;
42 for (i; start ~ end ) passed = passed && (ip[i] == fill);
43 if ( ! passed ) {
44 printf( "failed test %3d: fill int\n", tests_total );
[f76ff0b]45 tests_failed += 1;
[1988572]46 } // if
47// printf( "DEBUG: done test %d\n", tests_total );
[191a190]48}
49
[1988572]50void test_fill( void * ip_, size_t start, size_t end, int * fill ) {
[191a190]51 tests_total += 1;
[1988572]52// printf( "DEBUG: starting test %d\n", tests_total );
53 bool passed = memcmp((void*)((uintptr_t )ip_ + start ), (void*)fill, end ) == 0;
54 if ( ! passed ) {
55 printf( "failed test %3d: fill int A\n", tests_total );
[f76ff0b]56 tests_failed += 1;
[1988572]57 } // if
58// printf( "DEBUG: done test %d\n", tests_total );
[191a190]59}
60
[1988572]61void test_fill( void * ip_, size_t start, size_t end, T1 fill ) {
[191a190]62 tests_total += 1;
[1988572]63// printf( "DEBUG: starting test %d\n", tests_total );
[191a190]64 bool passed = true;
65 T1 * ip = (T1 *) ip_;
[1988572]66 for ( i; start ~ end ) passed = passed && (ip[i].data == fill.data );
67 if ( ! passed ) {
68 printf( "failed test %3d: fill T1\n", tests_total );
[f76ff0b]69 tests_failed += 1;
[1988572]70 } // if
71// printf( "DEBUG: done test %d\n", tests_total );
[191a190]72}
73
[1988572]74void test_fill( void * ip_, size_t start, size_t end, T1 * fill ) {
[191a190]75 tests_total += 1;
[1988572]76// printf( "DEBUG: starting test %d\n", tests_total );
77 bool passed = memcmp( (void*)((uintptr_t )ip_ + start ), (void*)fill, end ) == 0;
78 if ( ! passed ) {
79 printf( "failed test %3d: fill T1 A\n", tests_total );
[f76ff0b]80 tests_failed += 1;
[1988572]81 } // if
82// printf( "DEBUG: done test %d\n", tests_total );
[191a190]83}
84
[1988572]85void test_use( int * ip, size_t dim ) {
[191a190]86 tests_total += 1;
[1988572]87// printf( "DEBUG: starting test %d\n", tests_total );
[191a190]88 bool passed = true;
[1988572]89 for ( i; 0 ~ dim ) ip[i] = 0xdeadbeef;
90 for ( i; 0 ~ dim ) passed = passed && (ip[i] == 0xdeadbeef);
91 if ( ! passed ) {
92 printf( "failed test %3d: use int\n", tests_total );
[f76ff0b]93 tests_failed += 1;
[1988572]94 } // if
95// printf( "DEBUG: done test %d\n", tests_total );
[191a190]96}
97
[1988572]98void test_use( T1 * ip, size_t dim ) {
[191a190]99 tests_total += 1;
[1988572]100// printf( "DEBUG: starting test %d\n", tests_total );
[191a190]101 bool passed = true;
[1988572]102 for ( i; 0 ~ dim ) ip[i].data = 0xdeadbeef;
103 for ( i; 0 ~ dim ) passed = passed && (ip[i].data == 0xdeadbeef);
104 if ( ! passed ) {
105 printf( "failed test %3d: use T1\n", tests_total );
[f76ff0b]106 tests_failed += 1;
[1988572]107 } // if
108// printf( "DEBUG: done test %d\n", tests_total );
[191a190]109}
110
111int main( void ) {
[1988572]112 enum { dim = 8, align = 64, libAlign = libAlign() };
[191a190]113 size_t elemSize = sizeof(int);
114 size_t size = dim * elemSize;
[1988572]115
116 int FillT = 9;
117 char FillC = 'a';
118 int * FillA = calloc( dim / 4 );
119 T1 FillT1 = { FillT };
120 T1 * FillT1A = (T1 *)(void *) malloc( (dim / 4) * sizeof(T1) );
121 for ( i; 0 ~ (dim / 4) ) FillT1A[i] = FillT1;
122
123 int * ip;
124 int * op;
125 double * dp;
126 T1 * t1p;
127 T1 * t1op;
[191a190]128
129 // testing alloc
130
131 last_failed = -1;
132 tests_total = 0;
133 tests_failed = 0;
134
135 ip = alloc();
[1988572]136 test_base( ip, elemSize, libAlign );
137 test_use( ip, elemSize / elemSize );
138 free( ip );
[191a190]139
140 ip = alloc( dim );
[1988572]141 test_base( ip, size, libAlign );
142 test_use( ip, size / elemSize );
143 free( ip );
[191a190]144
145 ip = alloc( 0 );
[1988572]146 test_base( ip, 0, libAlign );
147 free( ip );
[191a190]148
149 dp = alloc( dim );
150 ip = alloc( dp`resize );
[1988572]151 test_base( ip, elemSize, libAlign );
152 test_use( ip, elemSize / elemSize );
153 free( ip );
[191a190]154
[1988572]155 ip = alloc( ((double *)0p)`resize );
156 test_base( ip, elemSize, libAlign );
157 test_use( ip, elemSize / elemSize );
158 free( ip );
[191a190]159
160 dp = alloc( dim );
161 ip = alloc( dim, dp`resize );
[1988572]162 test_base( ip, size, libAlign );
163 test_use( ip, size / elemSize );
164 free( ip );
[191a190]165
166 dp = alloc( dim );
167 ip = alloc( 0, dp`resize );
[1988572]168 test_base( ip, 0, libAlign );
169 free( ip );
[191a190]170
[1988572]171 ip = alloc( dim, 0p`resize );
172 test_base( ip, size, libAlign );
173 test_use( ip, size / elemSize );
174 free( ip );
[191a190]175
[1988572]176 ip = alloc( 0, 0p`resize );
177 test_base( ip, 0, libAlign );
178 free( ip );
[191a190]179
[1988572]180 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]181 ip = alloc( dim, op`realloc );
[1988572]182 test_base( ip, size, libAlign );
183 test_fill( ip, 0, dim, 0xdeadbeefN );
184 test_use( ip, size / elemSize );
185 free( ip );
[191a190]186
[1988572]187 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]188 ip = alloc( 0, op`realloc );
[1988572]189 test_base( ip, 0, libAlign );
190 free( ip );
[191a190]191
[1988572]192 ip = alloc( dim, 0p`realloc );
193 test_base( ip, size, libAlign );
194 test_use( ip, size / elemSize );
195 free( ip );
[191a190]196
[1988572]197 ip = alloc( 0, 0p`realloc );
198 test_base( ip, 0, libAlign );
199 free( ip );
[191a190]200
[1988572]201 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]202 ip = alloc( dim, op`resize );
[1988572]203 test_base( ip, size, libAlign );
204 test_use( ip, size / elemSize );
205 free( ip );
[191a190]206
207 ip = alloc( FillC`fill );
[1988572]208 test_base( ip, elemSize, libAlign );
209 test_fill( ip, 0, elemSize, FillC );
210 test_use( ip, elemSize / elemSize );
211 free( ip );
[191a190]212
213 ip = alloc( FillT`fill );
[1988572]214 test_base( ip, elemSize, libAlign );
215 test_fill( ip, 0, 1, FillT );
216 test_use( ip, elemSize / elemSize );
217 free( ip );
[191a190]218
219 ip = alloc( dim, FillC`fill );
[1988572]220 test_base( ip, size, libAlign );
221 test_fill( ip, 0, size, FillC );
222 test_use( ip, size / elemSize );
223 free( ip );
[191a190]224
225 ip = alloc( 0, FillC`fill );
[1988572]226 test_base( ip, 0, libAlign );
227 free( ip );
[191a190]228
229 ip = alloc( dim, FillT`fill );
[1988572]230 test_base( ip, size, libAlign );
231 test_fill( ip, 0, dim, FillT );
232 test_use( ip, size / elemSize );
233 free( ip );
[191a190]234
235 ip = alloc( 0, FillT`fill );
[1988572]236 test_base( ip, 0, libAlign );
237 free( ip );
[191a190]238
239 ip = alloc( dim, [FillA, dim/4]`fill );
[1988572]240 test_base( ip, size, libAlign );
241 test_fill( ip, 0, size/4, FillA );
242 test_use( ip, size / elemSize );
243 free( ip );
[191a190]244
245 ip = alloc( 0, [FillA, dim/4]`fill );
[1988572]246 test_base( ip, 0, libAlign );
247 free( ip );
[191a190]248
[1988572]249 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]250 ip = alloc( dim, op`realloc, FillC`fill );
[1988572]251 test_base( ip, size, libAlign );
252 test_fill( ip, 0, dim, 0xdeadbeefN );
253 test_use( ip, size / elemSize );
254 free( ip );
[191a190]255
[1988572]256 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]257 ip = alloc( dim / 4, op`realloc, FillC`fill );
[1988572]258 test_base( ip, size / 4, libAlign );
259 test_fill( ip, 0, dim / 4, 0xdeadbeefN );
260 test_use( ip, size / 4 / elemSize );
261 free( ip );
[191a190]262
[1988572]263 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]264 ip = alloc( dim * 4, op`realloc, FillC`fill );
[1988572]265 test_base( ip, size * 4, libAlign );
266 test_fill( ip, 0, dim, 0xdeadbeefN );
267 test_fill( ip, size, size * 4, FillC );
268 test_use( ip, size * 4 / elemSize );
269 free( ip );
[191a190]270
[1988572]271 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]272 ip = alloc( 0, op`realloc, FillC`fill );
[1988572]273 test_base( ip, 0, libAlign );
274 free( ip );
[191a190]275
[1988572]276 ip = alloc( dim, 0p`realloc, FillC`fill );
277 test_base( ip, size, libAlign );
278 test_fill( ip, 0, size, FillC );
279 test_use( ip, size / elemSize );
280 free( ip );
[191a190]281
[1988572]282 ip = alloc( 0, 0p`realloc, FillC`fill );
283 test_base( ip, 0, libAlign );
284 free( ip );
[191a190]285
[1988572]286 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]287 ip = alloc( dim, op`realloc, FillT`fill );
[1988572]288 test_base( ip, size, libAlign );
289 test_fill( ip, 0, dim, 0xdeadbeefN );
290 test_use( ip, size / elemSize );
291 free( ip );
[191a190]292
[1988572]293 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]294 ip = alloc( dim / 4, op`realloc, FillT`fill );
[1988572]295 test_base( ip, size / 4, libAlign );
296 test_fill( ip, 0, dim / 4, 0xdeadbeefN );
297 test_use( ip, size / 4 / elemSize );
298 free( ip );
[191a190]299
[1988572]300 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]301 ip = alloc( dim * 4, op`realloc, FillT`fill );
[1988572]302 test_base( ip, size * 4, libAlign );
303 test_fill( ip, 0, dim, 0xdeadbeefN );
304 test_fill( ip, dim, dim * 4, FillT );
305 test_use( ip, size * 4 / elemSize );
306 free( ip );
[191a190]307
[1988572]308 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]309 ip = alloc( 0, op`realloc, FillT`fill );
[1988572]310 test_base( ip, 0, libAlign );
311 free( ip );
[191a190]312
[1988572]313 ip = alloc( dim, 0p`realloc, FillT`fill );
314 test_base( ip, size, libAlign );
315 test_fill( ip, 0, dim, FillT );
316 test_use( ip, size / elemSize );
317 free( ip );
[191a190]318
[1988572]319 ip = alloc( 0, 0p`realloc, FillT`fill );
320 test_base( ip, 0, libAlign );
321 free( ip );
[191a190]322
323 ip = alloc( align`align );
[1988572]324 test_base( ip, elemSize, align );
325 test_use( ip, elemSize / elemSize );
326 free( ip );
[191a190]327
328 ip = alloc( dim, align`align );
[1988572]329 test_base( ip, size, align );
330 test_use( ip, size / elemSize );
331 free( ip );
[191a190]332
333 ip = alloc( 0, align`align );
[1988572]334 test_base( ip, 0, libAlign );
335 free( ip );
[191a190]336
[1988572]337 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]338 ip = alloc( op`realloc, align`align );
[1988572]339 test_base( ip, elemSize, align );
340 test_fill( ip, 0, 1, 0xdeadbeefN );
341 test_use( ip, elemSize / elemSize );
342 free( ip );
[191a190]343
[1988572]344 ip = alloc( 0p`realloc, align`align );
345 test_base( ip, elemSize, align );
346 test_use( ip, elemSize / elemSize );
347 free( ip );
[191a190]348
349 dp = alloc( dim );
350 ip = alloc( dp`resize, align`align );
[1988572]351 test_base( ip, elemSize, align );
352 test_use( ip, elemSize / elemSize );
353 free( ip );
[191a190]354
[1988572]355 ip = alloc( 0p`resize, align`align );
356 test_base( ip, elemSize, align );
357 test_use( ip, elemSize / elemSize );
358 free( ip );
[191a190]359
[1988572]360 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]361 ip = alloc( dim, op`realloc, align`align );
[1988572]362 test_base( ip, size, align );
363 test_fill( ip, 0, dim, 0xdeadbeefN );
364 test_use( ip, size / elemSize );
365 free( ip );
[191a190]366
[1988572]367 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]368 ip = alloc( 0, op`realloc, align`align );
[1988572]369 test_base( ip, 0, libAlign );
370 free( ip );
[191a190]371
[1988572]372 ip = alloc( dim, 0p`realloc, align`align );
373 test_base( ip, size, align );
374 test_use( ip, size / elemSize );
375 free( ip );
[191a190]376
[1988572]377 ip = alloc( 0, 0p`realloc, align`align );
378 test_base( ip, 0, libAlign );
379 free( ip );
[191a190]380
381 ip = alloc( align`align, FillC`fill );
[1988572]382 test_base( ip, elemSize, align );
383 test_fill( ip, 0, elemSize, FillC );
384 test_use( ip, elemSize / elemSize );
385 free( ip );
[191a190]386
387 ip = alloc( align`align, FillT`fill );
[1988572]388 test_base( ip, elemSize, align );
389 test_fill( ip, 0, 1, FillT );
390 test_use( ip, elemSize / elemSize );
391 free( ip );
[191a190]392
393 ip = alloc( dim, align`align, FillC`fill );
[1988572]394 test_base( ip, size, align );
395 test_fill( ip, 0, size, FillC );
396 test_use( ip, size / elemSize );
397 free( ip );
[191a190]398
399 ip = alloc( 0, align`align, FillC`fill );
[1988572]400 test_base( ip, 0, libAlign );
401 free( ip );
[191a190]402
403 ip = alloc( dim, align`align, FillT`fill );
[1988572]404 test_base( ip, size, align );
405 test_fill( ip, 0, dim, FillT );
406 test_use( ip, size / elemSize );
407 free( ip );
[191a190]408
409 ip = alloc( 0, align`align, FillT`fill );
[1988572]410 test_base( ip, 0, libAlign );
411 free( ip );
[191a190]412
413 ip = alloc( dim, align`align, [FillA, dim/4]`fill );
[1988572]414 test_base( ip, size, align );
415 test_fill( ip, 0, size/4, FillA );
416 test_use( ip, size / elemSize );
417 free( ip );
[191a190]418
419 ip = alloc( 0, align`align, [FillA, dim/4]`fill );
[1988572]420 test_base( ip, 0, libAlign );
421 free( ip );
[191a190]422
[1988572]423 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]424 ip = alloc( dim, op`realloc, align`align, FillC`fill );
[1988572]425 test_base( ip, size, align );
426 test_fill( ip, 0, dim, 0xdeadbeefN );
427 test_use( ip, size / elemSize );
428 free( ip );
[191a190]429
[1988572]430 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]431 ip = alloc( dim / 4, op`realloc, align`align, FillC`fill );
[1988572]432 test_base( ip, size / 4, align );
433 test_fill( ip, 0, dim / 4, 0xdeadbeefN );
434 test_use( ip, size / 4 / elemSize );
435 free( ip );
[191a190]436
[1988572]437 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]438 ip = alloc( dim * 4, op`realloc, align`align, FillC`fill );
[1988572]439 test_base( ip, size * 4, align );
440 test_fill( ip, 0, dim, 0xdeadbeefN );
441 test_fill( ip, size, size * 4, FillC );
442 test_use( ip, size * 4 / elemSize );
443 free( ip );
[191a190]444
[1988572]445 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]446 ip = alloc( 0, op`realloc, align`align, FillC`fill );
[1988572]447 test_base( ip, 0, libAlign );
448 free( ip );
[191a190]449
[1988572]450 ip = alloc( dim, 0p`realloc, align`align, FillC`fill );
451 test_base( ip, size, align );
452 test_fill( ip, 0, size, FillC );
453 test_use( ip, size / elemSize );
454 free( ip );
[191a190]455
[1988572]456 ip = alloc( 0, 0p`realloc, align`align, FillC`fill );
457 test_base( ip, 0, libAlign );
458 free( ip );
[191a190]459
[1988572]460 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]461 ip = alloc( dim, op`realloc, align`align, FillT`fill );
[1988572]462 test_base( ip, size, align );
463 test_fill( ip, 0, dim, 0xdeadbeefN );
464 test_use( ip, size / elemSize );
465 free( ip );
[191a190]466
[1988572]467 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]468 ip = alloc( dim / 4, op`realloc, align`align, FillT`fill );
[1988572]469 test_base( ip, size / 4, align );
470 test_fill( ip, 0, dim / 4, 0xdeadbeefN );
471 test_use( ip, size / 4 / elemSize );
472 free( ip );
[191a190]473
[1988572]474 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]475 ip = alloc( dim * 4, op`realloc, align`align, FillT`fill );
[1988572]476 test_base( ip, size * 4, align );
477 test_fill( ip, 0, dim, 0xdeadbeefN );
478 test_fill( ip, dim, dim * 4, FillT );
479 test_use( ip, size * 4 / elemSize );
480 free( ip );
[191a190]481
[1988572]482 op = alloc( dim, 0xdeadbeefN`fill );
[191a190]483 ip = alloc( 0, op`realloc, align`align, FillT`fill );
[1988572]484 test_base( ip, 0, libAlign );
485 free( ip );
[191a190]486
[1988572]487 ip = alloc( dim, 0p`realloc, align`align, FillT`fill );
488 test_base( ip, size, align );
489 test_fill( ip, 0, dim, FillT );
490 test_use( ip, size / elemSize );
491 free( ip );
[191a190]492
[1988572]493 ip = alloc( 0, 0p`realloc, align`align, FillT`fill );
494 test_base( ip, 0, libAlign );
495 free( ip );
[191a190]496
[1988572]497 if ( tests_failed == 0 ) printf( "PASSED alloc tests\n\n" );
498 else printf( "failed alloc tests : %d/%d\n\n", tests_failed, tests_total );
[191a190]499
[1988572]500 // testing alloc ( aligned struct )
[191a190]501
502 elemSize = sizeof(T1);
503 size = dim * elemSize;
504 last_failed = -1;
505 tests_total = 0;
506 tests_failed = 0;
507
508 t1p = alloc();
[1988572]509 test_base( t1p, elemSize, tAlign );
510 test_use( t1p, elemSize / elemSize );
511 free( t1p );
[191a190]512
513 t1p = alloc( dim );
[1988572]514 test_base( t1p, size, tAlign );
515 test_use( t1p, size / elemSize );
516 free( t1p );
[191a190]517
518 t1p = alloc( 0 );
[1988572]519 test_base( t1p, 0, libAlign );
520 free( t1p );
[191a190]521
522 dp = alloc( dim );
523 t1p = alloc( dp`resize );
[1988572]524 test_base( t1p, elemSize, tAlign );
525 test_use( t1p, elemSize / elemSize );
526 free( t1p );
[191a190]527
[1988572]528 t1p = alloc( 0p`resize );
529 test_base( t1p, elemSize, tAlign );
530 test_use( t1p, elemSize / elemSize );
531 free( t1p );
[191a190]532
533 dp = alloc( dim );
534 t1p = alloc( dim, dp`resize );
[1988572]535 test_base( t1p, size, tAlign );
536 test_use( t1p, size / elemSize );
537 free( t1p );
[191a190]538
539 dp = alloc( dim );
540 t1p = alloc( 0, dp`resize );
[1988572]541 test_base( t1p, 0, libAlign );
542 free( t1p );
[191a190]543
[1988572]544 t1p = alloc( dim, 0p`resize );
545 test_base( t1p, size, tAlign );
546 test_use( t1p, size / elemSize );
547 free( t1p );
[191a190]548
[1988572]549 t1p = alloc( 0, 0p`resize );
550 test_base( t1p, 0, libAlign );
551 free( t1p );
[191a190]552
553 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
554 t1p = alloc( dim, t1op`realloc );
[1988572]555 test_base( t1p, size, tAlign );
556 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
557 test_use( t1p, size / elemSize );
558 free( t1p );
[191a190]559
560 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
561 t1p = alloc( 0, t1op`realloc );
[1988572]562 test_base( t1p, 0, libAlign );
563 free( t1p );
[191a190]564
[1988572]565 t1p = alloc( dim, 0p`realloc );
566 test_base( t1p, size, tAlign );
567 test_use( t1p, size / elemSize );
568 free( t1p );
[191a190]569
[1988572]570 t1p = alloc( 0, 0p`realloc );
571 test_base( t1p, 0, libAlign );
572 free( t1p );
[191a190]573
574 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
575 t1p = alloc( dim, t1op`resize );
[1988572]576 test_base( t1p, size, tAlign );
577 test_use( t1p, size / elemSize );
578 free( t1p );
[191a190]579
580 t1p = alloc( FillC`fill );
[1988572]581 test_base( t1p, elemSize, tAlign );
582 test_fill( t1p, 0, elemSize, FillC );
583 test_use( t1p, elemSize / elemSize );
584 free( t1p );
[191a190]585
586 t1p = alloc( FillT1`fill );
[1988572]587 test_base( t1p, elemSize, tAlign );
588 test_fill( t1p, 0, 1, FillT1);
589 test_use( t1p, elemSize / elemSize );
590 free( t1p );
[191a190]591
592 t1p = alloc( dim, FillC`fill );
[1988572]593 test_base( t1p, size, tAlign );
594 test_fill( t1p, 0, size, FillC );
595 test_use( t1p, size / elemSize );
596 free( t1p );
[191a190]597
598 t1p = alloc( 0, FillC`fill );
[1988572]599 test_base( t1p, 0, libAlign );
600 free( t1p );
[191a190]601
602 t1p = alloc( dim, FillT1`fill );
[1988572]603 test_base( t1p, size, tAlign );
604 test_fill( t1p, 0, dim, FillT1);
605 test_use( t1p, size / elemSize );
606 free( t1p );
[191a190]607
608 t1p = alloc( 0, FillT1`fill );
[1988572]609 test_base( t1p, 0, libAlign );
610 free( t1p );
[191a190]611
612 t1p = alloc( dim, [FillT1A, dim / 4]`fill );
[1988572]613 test_base( t1p, size, tAlign );
614 test_fill( t1p, 0, size/4, FillT1A );
615 test_use( t1p, size / elemSize );
616 free( t1p );
[191a190]617
618 t1p = alloc( 0, [FillT1A, dim / 4]`fill );
[1988572]619 test_base( t1p, 0, libAlign );
620 free( t1p );
[191a190]621
622 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
623 t1p = alloc( dim, t1op`realloc, FillC`fill );
[1988572]624 test_base( t1p, size, tAlign );
625 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
626 test_use( t1p, size / elemSize );
627 free( t1p );
[191a190]628
629 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
630 t1p = alloc( dim / 4, t1op`realloc, FillC`fill );
[1988572]631 test_base( t1p, size / 4, tAlign );
632 test_fill( t1p, 0, dim / 4, (T1){0xdeadbeef});
633 test_use( t1p, size / 4 / elemSize );
634 free( t1p );
[191a190]635
636 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
637 t1p = alloc( dim * 4, t1op`realloc, FillC`fill );
[1988572]638 test_base( t1p, size * 4, tAlign );
639 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
640 test_fill( t1p, size, size * 4, FillC );
641 test_use( t1p, size * 4 / elemSize );
642 free( t1p );
[191a190]643
644 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
645 t1p = alloc( 0, t1op`realloc, FillC`fill );
[1988572]646 test_base( t1p, 0, libAlign );
647 free( t1p );
[191a190]648
[1988572]649 t1p = alloc( dim, 0p`realloc, FillC`fill );
650 test_base( t1p, size, tAlign );
651 test_fill( t1p, 0, size, FillC );
652 test_use( t1p, size / elemSize );
653 free( t1p );
[191a190]654
[1988572]655 t1p = alloc( 0, 0p`realloc, FillC`fill );
656 test_base( t1p, 0, libAlign );
657 free( t1p );
[191a190]658
659 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
660 t1p = alloc( dim, t1op`realloc, FillT1`fill );
[1988572]661 test_base( t1p, size, tAlign );
662 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
663 test_use( t1p, size / elemSize );
664 free( t1p );
[191a190]665
666 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
667 t1p = alloc( dim / 4, t1op`realloc, FillT1`fill );
[1988572]668 test_base( t1p, size / 4, tAlign );
669 test_fill( t1p, 0, dim / 4, (T1){0xdeadbeef});
670 test_use( t1p, size / 4 / elemSize );
671 free( t1p );
[191a190]672
673 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
674 t1p = alloc( dim * 4, t1op`realloc, FillT1`fill );
[1988572]675 test_base( t1p, size * 4, tAlign );
676 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
677 test_fill( t1p, dim, dim * 4, FillT1);
678 test_use( t1p, size * 4 / elemSize );
679 free( t1p );
[191a190]680
681 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
682 t1p = alloc( 0, t1op`realloc, FillT1`fill );
[1988572]683 test_base( t1p, 0, libAlign );
684 free( t1p );
[191a190]685
[1988572]686 t1p = alloc( dim, 0p`realloc, FillT1`fill );
687 test_base( t1p, size, tAlign );
688 test_fill( t1p, 0, dim, FillT1);
689 test_use( t1p, size / elemSize );
690 free( t1p );
[191a190]691
[1988572]692 t1p = alloc( 0, 0p`realloc, FillT1`fill );
693 test_base( t1p, 0, libAlign );
694 free( t1p );
[191a190]695
696 t1p = alloc( align`align );
[1988572]697 test_base( t1p, elemSize, align );
698 test_use( t1p, elemSize / elemSize );
699 free( t1p );
[191a190]700
701 t1p = alloc( dim, align`align );
[1988572]702 test_base( t1p, size, align );
703 test_use( t1p, size / elemSize );
704 free( t1p );
[191a190]705
706 t1p = alloc( 0, align`align );
[1988572]707 test_base( t1p, 0, libAlign );
708 free( t1p );
[191a190]709
710 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
711 t1p = alloc( t1op`realloc, align`align );
[1988572]712 test_base( t1p, elemSize, align );
713 test_fill( t1p, 0, 1, (T1){0xdeadbeef});
714 test_use( t1p, elemSize / elemSize );
715 free( t1p );
[191a190]716
[1988572]717 t1p = alloc( 0p`realloc, align`align );
718 test_base( t1p, elemSize, align );
719 test_use( t1p, elemSize / elemSize );
720 free( t1p );
[191a190]721
722 dp = alloc( dim );
723 t1p = alloc( dp`resize, align`align );
[1988572]724 test_base( t1p, elemSize, align );
725 test_use( t1p, elemSize / elemSize );
726 free( t1p );
[191a190]727
[1988572]728 t1p = alloc( 0p`resize, align`align );
729 test_base( t1p, elemSize, align );
730 test_use( t1p, elemSize / elemSize );
731 free( t1p );
[191a190]732
733 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
734 t1p = alloc( dim, t1op`realloc, align`align );
[1988572]735 test_base( t1p, size, align );
736 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
737 test_use( t1p, size / elemSize );
738 free( t1p );
[191a190]739
740 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
741 t1p = alloc( 0, t1op`realloc, align`align );
[1988572]742 test_base( t1p, 0, libAlign );
743 free( t1p );
[191a190]744
[1988572]745 t1p = alloc( dim, 0p`realloc, align`align );
746 test_base( t1p, size, align );
747 test_use( t1p, size / elemSize );
748 free( t1p );
[191a190]749
[1988572]750 t1p = alloc( 0, 0p`realloc, align`align );
751 test_base( t1p, 0, libAlign );
752 free( t1p );
[191a190]753
754 t1p = alloc( align`align, FillC`fill );
[1988572]755 test_base( t1p, elemSize, align );
756 test_fill( t1p, 0, elemSize, FillC );
757 test_use( t1p, elemSize / elemSize );
758 free( t1p );
[191a190]759
760 t1p = alloc( align`align, FillT1`fill );
[1988572]761 test_base( t1p, elemSize, align );
762 test_fill( t1p, 0, 1, FillT1);
763 test_use( t1p, elemSize / elemSize );
764 free( t1p );
[191a190]765
766 t1p = alloc( dim, align`align, FillC`fill );
[1988572]767 test_base( t1p, size, align );
768 test_fill( t1p, 0, size, FillC );
769 test_use( t1p, size / elemSize );
770 free( t1p );
[191a190]771
772 t1p = alloc( 0, align`align, FillC`fill );
[1988572]773 test_base( t1p, 0, libAlign );
774 free( t1p );
[191a190]775
776 t1p = alloc( dim, align`align, FillT1`fill );
[1988572]777 test_base( t1p, size, align );
778 test_fill( t1p, 0, dim, FillT1);
779 test_use( t1p, size / elemSize );
780 free( t1p );
[191a190]781
782 t1p = alloc( 0, align`align, FillT1`fill );
[1988572]783 test_base( t1p, 0, libAlign );
784 free( t1p );
[191a190]785
786 t1p = alloc( dim, align`align, [FillT1A, dim / 4]`fill );
[1988572]787 test_base( t1p, size, align );
788 test_fill( t1p, 0, size/4, FillT1A );
789 test_use( t1p, size / elemSize );
790 free( t1p );
[191a190]791
792 t1p = alloc( 0, align`align, [FillT1A, dim / 4]`fill );
[1988572]793 test_base( t1p, 0, libAlign );
794 free( t1p );
[191a190]795
796 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
797 t1p = alloc( dim, t1op`realloc, align`align, FillC`fill );
[1988572]798 test_base( t1p, size, align );
799 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
800 test_use( t1p, size / elemSize );
801 free( t1p );
[191a190]802
803 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
804 t1p = alloc( dim / 4, t1op`realloc, align`align, FillC`fill );
[1988572]805 test_base( t1p, size / 4, align );
806 test_fill( t1p, 0, dim / 4, (T1){0xdeadbeef});
807 test_use( t1p, size / 4 / elemSize );
808 free( t1p );
[191a190]809
810 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
811 t1p = alloc( dim * 4, t1op`realloc, align`align, FillC`fill );
[1988572]812 test_base( t1p, size * 4, align );
813 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
814 test_fill( t1p, size, size * 4, FillC );
815 test_use( t1p, size * 4 / elemSize );
816 free( t1p );
[191a190]817
818 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
819 t1p = alloc( 0, t1op`realloc, align`align, FillC`fill );
[1988572]820 test_base( t1p, 0, libAlign );
821 free( t1p );
[191a190]822
[1988572]823 t1p = alloc( dim, 0p`realloc, align`align, FillC`fill );
824 test_base( t1p, size, align );
825 test_fill( t1p, 0, size, FillC );
826 test_use( t1p, size / elemSize );
827 free( t1p );
[191a190]828
[1988572]829 t1p = alloc( 0, 0p`realloc, align`align, FillC`fill );
830 test_base( t1p, 0, libAlign );
831 free( t1p );
[191a190]832
[1988572]833 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
[191a190]834 t1p = alloc( dim, t1op`realloc, align`align, FillT1`fill );
[1988572]835 test_base( t1p, size, align );
836 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
837 test_use( t1p, size / elemSize );
838 free( t1p );
[191a190]839
840 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
841 t1p = alloc( dim / 4, t1op`realloc, align`align, FillT1`fill );
[1988572]842 test_base( t1p, size / 4, align );
843 test_fill( t1p, 0, dim / 4, (T1){0xdeadbeef});
844 test_use( t1p, size / 4 / elemSize );
845 free( t1p );
[191a190]846
847 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
848 t1p = alloc( dim * 4, t1op`realloc, align`align, FillT1`fill );
[1988572]849 test_base( t1p, size * 4, align );
850 test_fill( t1p, 0, dim, (T1){0xdeadbeef});
851 test_fill( t1p, dim, dim * 4, FillT1);
852 test_use( t1p, size * 4 / elemSize );
853 free( t1p );
[191a190]854
855 t1op = alloc( dim, ((T1){0xdeadbeef})`fill );
856 t1p = alloc( 0, t1op`realloc, align`align, FillT1`fill );
[1988572]857 test_base( t1p, 0, libAlign );
858 free( t1p );
859
860 t1p = alloc( dim, 0p`realloc, align`align, FillT1`fill );
861 test_base( t1p, size, align );
862 test_fill( t1p, 0, dim, FillT1);
863 test_use( t1p, size / elemSize );
864 free( t1p );
865
866 t1p = alloc( 0, 0p`realloc, align`align, FillT1`fill );
867 test_base( t1p, 0, libAlign );
868 free( t1p );
869
870 if ( tests_failed == 0) printf( "PASSED alloc tests (aligned struct)\n\n");
871 else printf( "failed alloc tests ( aligned struct ) : %d/%d\n\n", tests_failed, tests_total );
872
873 printf( "(if applicable) alignment error below indicates memory trashing caused by test_use.\n\n");
874 free( FillA );
875 free( FillT1A );
[ea561c9]876} // main
Note: See TracBrowser for help on using the repository browser.