1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
;
; AC 2024 Mars 13
; quick tests for operators.
; need GIVE_LIST_NUMERIC procedure in the testsuite
;
; We don't play with negative numbers because for Int/Long & unsigned
; we will have other difficulties related to modulo
;
; --------------------------------------
;
pro PROCESS_RESULTS, operateur, type, val, expected, errors, verbose=verbose
;
if KEYWORD_SET(verbose) then print, operateur, ' ', type, val, expected
if (TOTAL(ABS(val-expected)) GT 1e-6) then begin
ERRORS_ADD, errors, operateur+' '+type
endif
end
; --------------------------------------
;
pro TEST_OP_DIV, cumul_errors, value, expected, verbose=verbose, test=test
;
errors=0
;
GIVE_LIST_NUMERIC,a,b,c
;
for ii=0, N_ELEMENTS(a)-1 do begin
val=FIX(value, type=a[ii])
val /=2
;;
PROCESS_RESULTS, 'DIV', b[ii], val, expected, errors, verbose=verbose
endfor
;
; --------------
;
BANNER_FOR_TESTSUITE, "TEST_OP_DIV", errors, /short, verb=verbose
ERRORS_CUMUL, cumul_errors, errors
if KEYWORD_SET(test) then STOP
;
end
;
; --------------------------------------
;
pro TEST_OP_MUL, cumul_errors, value, expected, verbose=verbose, test=test
;
errors=0
;
GIVE_LIST_NUMERIC,a,b,c
for ii=0, n_elements(a)-1 do begin
val=FIX(value, type=a[ii])
val *=2
PROCESS_RESULTS, 'MUL', b[ii], val, expected, errors, verbose=verbose
endfor
;
; --------------
;
BANNER_FOR_TESTSUITE, "TEST_OP_MUL", errors, /short, verb=verbose
ERRORS_CUMUL, cumul_errors, errors
if KEYWORD_SET(test) then STOP
;
end
;
; --------------------------------------
;
pro TEST_OP_ADD, cumul_errors, value, expected, verbose=verbose, test=test
;
errors=0
;
GIVE_LIST_NUMERIC,a,b,c
;
for ii=0, n_elements(a)-1 do begin
val=FIX(value, type=a[ii])
val +=2
PROCESS_RESULTS, 'ADD', b[ii], val, expected, errors, verbose=verbose
endfor
;
; --------------
;
BANNER_FOR_TESTSUITE, "TEST_OP_ADD", errors, /short, verb=verbose
ERRORS_CUMUL, cumul_errors, errors
if KEYWORD_SET(test) then STOP
;
end
;
; --------------------------------------
;
pro TEST_OP_SUB, cumul_errors, value, expected, verbose=verbose, test=test
;
errors=0
;
GIVE_LIST_NUMERIC,a,b,c
for ii=0, n_elements(a)-1 do begin
val=FIX(value, type=a[ii])
val -=2
PROCESS_RESULTS, 'SUB', b[ii], val, expected, errors, verbose=verbose
endfor
; --------------
;
BANNER_FOR_TESTSUITE, "TEST_OP_SUB", errors, /short, verb=verbose
ERRORS_CUMUL, cumul_errors, errors
if KEYWORD_SET(test) then STOP
;
end
;
; --------------------------------------
;
pro TEST_OPERATORS, help=help, test=test, verbose=verbose, no_exit=no_exit
;
if KEYWORD_SET(help) then begin
print, 'pro TEST_TOTAL, help=help, test=test, verbose=verbose, no_exit=no_exit'
return
endif
;
TEST_OP_ADD, cumul_errors, 10, 12., verbose=verbose
TEST_OP_ADD, cumul_errors, [10], 12., verbose=verbose
TEST_OP_ADD, cumul_errors, [10,20], [12.,22], verbose=verbose
;
TEST_OP_SUB, cumul_errors, 10, 8, verbose=verbose
TEST_OP_SUB, cumul_errors, [10], 8, verbose=verbose
TEST_OP_SUB, cumul_errors, [10,20], [8,18], verbose=verbose
;
TEST_OP_MUL, cumul_errors, 10, 20, verbose=verbose
TEST_OP_MUL, cumul_errors, [10], 20, verbose=verbose
TEST_OP_MUL, cumul_errors, [10,20], [20,40], verbose=verbose
;
TEST_OP_DIV, cumul_errors, 10, 5, verbose=verbose
TEST_OP_DIV, cumul_errors, [10], 5, verbose=verbose
TEST_OP_DIV, cumul_errors, [10,20], [5,10], verbose=verbose
;
; ----------------- final message ----------
;
BANNER_FOR_TESTSUITE, 'TEST_OPERATORS', cumul_errors, short=short
;
if (cumul_errors GT 0) AND ~KEYWORD_SET(no_exit) then EXIT, status=1
;
if KEYWORD_SET(test) then STOP
;
end
|