2
c $Id: testf.F,v 1.6 1997-02-26 20:39:23 d3h325 Exp $
6
c Exercise the MA routines.
26
#include "mafdecls.fh"
29
write (*,*) 'start testing MA_set_error_print ...'
30
value = MA_set_error_print(.true.)
31
write (*,*) 'should see an MA error message here ...'
32
value = MA_pop_stack(-1)
33
value = MA_set_error_print(.false.)
35
write (*,*) 'should not see an MA error message here ...'
36
value = MA_pop_stack(-1)
38
write (*,*) '... failure; return value is wrong'
40
write (*,*) 'stop testing MA_set_error_print'
43
value = MA_set_error_print(.true.)
46
write (*,*) 'should be 9 values ...'
47
write (*,*) '1. MA_sizeof(MT_BYTE, 1, MT_BYTE) = ',
48
$ MA_sizeof(MT_BYTE, 1, MT_BYTE)
49
write (*,*) '2. MA_sizeof(MT_INT, 1, MT_BYTE) = ',
50
$ MA_sizeof(MT_INT, 1, MT_BYTE)
51
write (*,*) '3. MA_sizeof(MT_LOG, 1, MT_BYTE) = ',
52
$ MA_sizeof(MT_LOG, 1, MT_BYTE)
53
write (*,*) '4. MA_sizeof(MT_REAL, 1, MT_BYTE) = ',
54
$ MA_sizeof(MT_REAL, 1, MT_BYTE)
55
write (*,*) '5. MA_sizeof(MT_DBL, 1, MT_BYTE) = ',
56
$ MA_sizeof(MT_DBL, 1, MT_BYTE)
57
write (*,*) '6. MA_sizeof(MT_SCPL, 1, MT_BYTE) = ',
58
$ MA_sizeof(MT_SCPL, 1, MT_BYTE)
59
write (*,*) '7. MA_sizeof(MT_DCPL, 1, MT_BYTE) = ',
60
$ MA_sizeof(MT_DCPL, 1, MT_BYTE)
61
write (*,*) '8. MA_sizeof(MT_BYTE, 3, MT_DBL) = ',
62
$ MA_sizeof(MT_BYTE, 3, MT_DBL)
63
write (*,*) '9. MA_sizeof(MT_BYTE, 33, MT_DBL) = ',
64
$ MA_sizeof(MT_BYTE, 33, MT_DBL)
68
write (*,*) 'should be 2 values ...'
69
write (*,*) '1. MA_sizeof_overhead(MT_BYTE) = ',
70
$ MA_sizeof_overhead(MT_BYTE)
71
write (*,*) '2. MA_sizeof_overhead(MT_INT) = ',
72
$ MA_sizeof_overhead(MT_INT)
76
write (*,*) 'should fail (not init) ...'
77
value = MA_push_stack(MT_DBL, 10, 'stack1', handle1)
79
write (*,*) '... success'
81
write (*,*) '... failure'
86
value = MA_initialized()
88
write (*,*) 'MA_initialized returns true (failure)'
90
write (*,*) 'MA_initialized returns false (success)'
95
write (*,*) 'should fail (bad datatype) ...'
96
value = MA_init(-1, 10, 10)
98
write (*,*) '... success'
100
write (*,*) '... failure'
105
write (*,*) 'should succeed ...'
106
value = MA_init(MT_DBL, 1000, 1000)
108
write (*,*) '... success'
110
write (*,*) '... failure'
115
value = MA_initialized()
117
write (*,*) 'MA_initialized returns true (success)'
119
write (*,*) 'MA_initialized returns false (failure)'
124
write (*,*) 'should be 1 value ...'
125
write (*,*) '1. MA_sizeof_overhead(MT_BYTE) = ',
126
$ MA_sizeof_overhead(MT_BYTE)
130
write (*,*) 'should fail (bad handle) ...'
132
value = MA_pop_stack(handle1)
134
write (*,*) '... success'
136
write (*,*) '... failure'
141
write (*,*) 'should fail (bad handle) ...'
143
value = MA_pop_stack(handle1)
145
write (*,*) '... success'
147
write (*,*) '... failure'
152
write (*,*) 'should fail (bad handle) ...'
154
value = MA_pop_stack(handle1)
156
write (*,*) '... success'
158
write (*,*) '... failure'
163
write (*,*) 'should fail (bad handle) ...'
164
value = MA_get_index(handle1, index1)
166
write (*,*) '... success'
168
write (*,*) '... failure'
173
write (*,*) 'start testing MA_chop_stack ...'
174
value = MA_push_stack(MT_BYTE, 1, 'stack1', handle1)
175
value = MA_push_stack(MT_BYTE, 2, 'stack2', handle2)
176
value = MA_push_stack(MT_BYTE, 3, 'stack3', handle3)
177
value = MA_push_stack(MT_BYTE, 4, 'stack4', handle4)
178
write (*,*) 'should be 4 blocks on stack ...'
179
call MA_summarize_allocated_blocks
180
write (*,*) 'should succeed ...'
181
value = MA_chop_stack(handle4)
183
write (*,*) '... success'
185
write (*,*) '... failure'
187
write (*,*) 'should be 3 blocks on stack ...'
188
call MA_summarize_allocated_blocks
189
write (*,*) 'should fail (not in stack) ...'
190
value = MA_chop_stack(handle4)
192
write (*,*) '... success'
194
write (*,*) '... failure'
196
write (*,*) 'should succeed ...'
197
value = MA_chop_stack(handle2)
199
write (*,*) '... success'
201
write (*,*) '... failure'
203
write (*,*) 'should be 1 block on stack ...'
204
call MA_summarize_allocated_blocks
205
write (*,*) 'should succeed ...'
206
value = MA_chop_stack(handle1)
208
write (*,*) '... success'
210
write (*,*) '... failure'
212
write (*,*) 'should be 0 blocks ...'
213
call MA_summarize_allocated_blocks
214
value = MA_push_stack(MT_BYTE, 1, 'stack1', handle1)
216
value = MA_push_stack(MT_BYTE, 1, 'stackn', handle2)
218
value = MA_chop_stack(handle1)
219
write (*,*) 'stop testing MA_chop_stack'
223
write (*,*) 'start testing 0-length stack allocations ...'
224
value = MA_push_get(MT_INT, 1, 'stack1', handle1, index1)
225
value = MA_push_get(MT_INT, 0, 'stack2', handle2, index2)
226
value = MA_push_stack(MT_BYTE, 0, 'stack3', handle3)
227
value = MA_push_stack(MT_BYTE, 4, 'stack4', handle4)
230
write (*,*) 'should fail (bad right sig on stack2) ...'
231
value = MA_verify_allocator_stuff()
233
write (*,*) '... success'
235
write (*,*) '... failure'
237
write (*,*) 'should succeed ...'
238
value = MA_chop_stack(handle1)
240
write (*,*) '... success'
242
write (*,*) '... failure'
244
write (*,*) 'stop testing 0-length stack allocations ...'
248
write (*,*) 'start testing 0-length heap allocations ...'
249
value = MA_alloc_get(MT_INT, 1, 'heap1', handle1, index1)
250
value = MA_alloc_get(MT_INT, 0, 'heap2', handle2, index2)
251
value = MA_allocate_heap(MT_BYTE, 0, 'heap3', handle3)
252
value = MA_allocate_heap(MT_BYTE, 4, 'heap4', handle4)
254
value = MA_free_heap(handle4)
255
value = MA_free_heap(handle3)
256
value = MA_free_heap(handle2)
257
value = MA_free_heap(handle1)
258
write (*,*) 'should be 0 blocks ...'
259
call MA_summarize_allocated_blocks
260
write (*,*) 'stop testing 0-length heap allocations ...'
264
write (*,*) 'should succeed ...'
265
value = MA_push_stack(MT_DBL, 10, 'stack1', handle1)
267
write (*,*) '... success'
269
write (*,*) '... failure'
271
write (*,*) 'should succeed ...'
272
value = MA_get_index(handle1, index1)
274
write (*,*) '... success'
276
write (*,*) '... failure'
278
dbl_mb(index1) = 19.82
279
dbl_mb(index1 + 9) = dbl_mb(index1) - 19
280
write (*,*) 'should be 19.82 and 0.82 ...'
281
write (*,*) 'dbl_mb(', index1, ') = ', dbl_mb(index1)
282
write (*,*) 'dbl_mb(', index1 + 9, ') = ', dbl_mb(index1 + 9)
286
write (*,*) 'should succeed ...'
287
value = MA_allocate_heap(MT_INT, 10, 'heap1', handle2)
289
write (*,*) '... success'
291
write (*,*) '... failure'
296
write (*,*) 'should fail (not in heap) ...'
297
value = MA_free_heap(handle1)
299
write (*,*) '... success'
301
write (*,*) '... failure'
306
write (*,*) 'should fail (not in stack) ...'
307
value = MA_pop_stack(handle2)
309
write (*,*) '... success'
311
write (*,*) '... failure'
316
write (*,*) 'should succeed ...'
317
value = MA_push_stack(MT_BYTE, 5, 'stack2', handle3)
319
write (*,*) '... success'
321
write (*,*) '... failure'
326
write (*,*) 'should see something here ...'
327
call MA_summarize_allocated_blocks
331
write (*,*) 'should fail (not top of stack) ...'
332
value = MA_pop_stack(handle1)
334
write (*,*) '... success'
336
write (*,*) '... failure'
341
write (*,*) 'should succeed ...'
342
value = MA_pop_stack(handle3)
344
write (*,*) '... success'
346
write (*,*) '... failure'
351
write (*,*) 'should succeed ...'
352
value = MA_pop_stack(handle1)
354
write (*,*) '... success'
356
write (*,*) '... failure'
361
write (*,*) 'should succeed ...'
362
value = MA_get_index(handle2, index2)
364
write (*,*) '... success'
366
write (*,*) '... failure'
368
int_mb(index2) = 1963
369
int_mb(index2 + 9) = int_mb(index2) - 1900
370
write (*,*) 'should be 1963 and 63 ...'
371
write (*,*) 'int_mb(', index2, ') = ', int_mb(index2)
372
write (*,*) 'int_mb(', index2 + 9, ') = ', int_mb(index2 + 9)
376
write (*,*) 'should succeed ...'
377
value = MA_allocate_heap(MT_REAL, 1, 'heap2', handle3)
379
write (*,*) '... success'
381
write (*,*) '... failure'
386
write (*,*) 'start testing MA_verify_allocator_stuff ...'
387
write (*,*) 'should see nothing here ...'
388
value = MA_verify_allocator_stuff()
389
write (*,*) 'should succeed ...'
391
write (*,*) '... success'
393
write (*,*) '... failure'
395
write (*,*) 'stop testing MA_verify_allocator_stuff'
399
write (*,*) 'should fail (bad right guard) ...'
400
int_mb(index2 + 10) = 0
401
value = MA_free_heap(handle2)
403
write (*,*) '... success'
405
write (*,*) '... failure'
410
write (*,*) 'should succeed ...'
411
value = MA_set_auto_verify(.true.)
412
value = MA_set_auto_verify(.true.)
414
write (*,*) '... success'
416
write (*,*) '... failure'
421
write (*,*) 'start testing MA_set_auto_verify ...'
422
write (*,*) 'should see something here ...'
423
value = MA_set_auto_verify(.true.)
424
value = MA_free_heap(handle2)
425
write (*,*) 'should fail (bad right guard) ...'
427
write (*,*) '... success'
429
write (*,*) '... failure'
431
value = MA_set_auto_verify(.false.)
432
write (*,*) 'stop testing MA_set_auto_verify'
436
write (*,*) 'start testing MA_verify_allocator_stuff ...'
437
write (*,*) 'should see something here ...'
438
value = MA_verify_allocator_stuff()
439
write (*,*) 'should fail (bad right guard) ...'
441
write (*,*) '... success'
443
write (*,*) '... failure'
445
write (*,*) 'stop testing MA_verify_allocator_stuff'
449
write (*,*) 'should be 3 values ...'
450
write (*,*) '1. MA_inquire_avail(MT_DBL) = ',
451
$ MA_inquire_avail(MT_DBL)
452
write (*,*) '2. MA_inquire_avail(MT_BYTE) = ',
453
$ MA_inquire_avail(MT_BYTE)
454
write (*,*) '3. MA_inquire_avail(MT_DCPL) = ',
455
$ MA_inquire_avail(MT_DCPL)
459
write (*,*) 'should be 3 values ...'
460
write (*,*) '1. MA_inquire_heap(MT_DBL) = ',
461
$ MA_inquire_heap(MT_DBL)
462
write (*,*) '2. MA_inquire_heap(MT_BYTE) = ',
463
$ MA_inquire_heap(MT_BYTE)
464
write (*,*) '3. MA_inquire_heap(MT_DCPL) = ',
465
$ MA_inquire_heap(MT_DCPL)
469
write (*,*) 'should be 3 values ...'
470
write (*,*) '1. MA_inquire_stack(MT_DBL) = ',
471
$ MA_inquire_stack(MT_DBL)
472
write (*,*) '2. MA_inquire_stack(MT_BYTE) = ',
473
$ MA_inquire_stack(MT_BYTE)
474
write (*,*) '3. MA_inquire_stack(MT_DCPL) = ',
475
$ MA_inquire_stack(MT_DCPL)
479
write (*,*) 'should succeed ...'
480
value = MA_alloc_get(MT_INT, 1, 'heap3', handle1, index1)
482
write (*,*) '... success'
484
write (*,*) '... failure'
486
int_mb(index1) = 1982
487
write (*,*) 'should be 1982 ...'
488
write (*,*) 'int_mb(', index1, ') = ', int_mb(index1)
492
write (*,*) 'should succeed ...'
493
value = MA_free_heap(handle1)
495
write (*,*) '... success'
497
write (*,*) '... failure'
502
write (*,*) 'start testing byte arrays ...'
503
write (*,*) 'should succeed ...'
504
value = MA_push_get(MT_BYTE, 5, 'stack3', handle1, index1)
506
write (*,*) '... success'
508
write (*,*) '... failure'
516
byte_mb(index1 + i) = char5(i + 1)
518
write (*,*) 'should be zyxwv ...'
520
char1 = byte_mb(index1+i)
521
write (*,*) 'byte_mb(', index1+i, ') = ', char1
523
write (*,*) 'should succeed ...'
524
value = MA_pop_stack(handle1)
526
write (*,*) '... success'
528
write (*,*) '... failure'
530
write (*,*) 'should succeed ...'
533
value = MA_alloc_get(MT_BYTE, i * 2, 'heap4', handle1, index1)
535
write (*,*) '... success'
537
write (*,*) '... failure'
539
byte_mb(index1) = char2(1:1)
540
byte_mb(index1 + 1) = char2(2:2)
541
write (*,*) 'should be ab ...'
543
char1 = byte_mb(index1+i)
544
write (*,*) 'byte_mb(', index1+i, ') = ', char1
546
write (*,*) 'should succeed ...'
547
value = MA_free_heap(handle1)
549
write (*,*) '... success'
551
write (*,*) '... failure'
553
write (*,*) 'stop testing byte arrays ...'
557
write (*,*) 'should succeed ...'
558
value = MA_push_get(MT_INT, 1, 'stack3', handle1, index1)
560
write (*,*) '... success'
562
write (*,*) '... failure'
565
write (*,*) 'should be 5 ...'
566
write (*,*) 'int_mb(', index1, ') = ', int_mb(index1)
570
write (*,*) 'should succeed ...'
571
value = MA_pop_stack(handle1)
573
write (*,*) '... success'
575
write (*,*) '... failure'
580
write (*,*) 'start testing MA_print_stats ...'
581
call MA_print_stats(.true.)
582
write (*,*) 'stop testing MA_print_stats'
586
write (*,*) 'should fail (not implemented) ...'
587
value = MA_init_memhandle_iterator(ihandle1)
589
write (*,*) '... success'
591
write (*,*) '... failure'
596
write (*,*) 'should fail (not implemented) ...'
597
value = MA_get_next_memhandle(ihandle1, handle1)
599
write (*,*) '... success'
601
write (*,*) '... failure'
606
write (*,*) 'start testing MA_set_hard_fail ...'
607
value = MA_set_hard_fail(.false.)
608
write (*,*) 'should see a (nonfatal) MA error message here ...'
609
value = MA_pop_stack(-1)
610
value = MA_set_hard_fail(.true.)
611
value = MA_set_hard_fail(.true.)
613
write (*,*) 'should see a (hard failure)',
614
$ ' MA error message here ...'
615
value = MA_pop_stack(-1)
617
write (*,*) '... failure; return value is wrong'
619
write (*,*) 'stop testing MA_set_hard_fail'