|
|
1.1 ! root 1: -TITLE SPITBOL TEST PROGRAM #1 -- DIAGNOSTICS PHASE ONE ! 2: -IN80 ! 3: * ! 4: OUTPUT = 'TEST #1 ' ! 5: * ! 6: * ! 7: * THIS IS A STANDARD TEST PROGRAM FOR SPITBOL WHICH TESTS ! 8: * OUT FUNCTIONS, OPERATORS AND DATATYPE MANIPULATIONS ! 9: * ! 10: TRACE(.TEST) ! 11: &TRACE = 1000 ! 12: STARS = ' ERROR DETECTED ***' ! 13: &ERRLIMIT = 1000 ! 14: SETEXIT(.ERRORS) ;* SET INTERRUPT LOCATION ! 15: OUTPUT = '************************************************' ! 16: OUTPUT = '**** S P I T B O L D I A G N O S T I C S ****' ! 17: OUTPUT = '**** P H A S E O N E ****' ! 18: OUTPUT = '************************************************' ! 19: OUTPUT = '**** ANY TRACE OUTPUT INDICATES AN ERROR ****' ! 20: OUTPUT = '************************************************' ! 21: * ! 22: * TEST REPLACE FUNCTION ! 23: * ! 24: TEST = DIFFER(REPLACE('AXXBYYY','XY','01'),'A00B111') STARS ! 25: A = REPLACE(&ALPHABET,'XY','AB') ! 26: TEST = DIFFER(REPLACE('AXY',&ALPHABET,A),'AAB') STARS ! 27: * ! 28: * TEST LPAD,RPAD FUNCTIONS ! 29: * ! 30: TEST = DIFFER(LPAD('ABC',5,'X'),'XXABC') STARS ! 31: TEST = DIFFER(RPAD('ABC',5,'X'),'ABCXX') STARS ! 32: TEST = DIFFER(LPAD(12,5),' 12') STARS ! 33: TEST = DIFFER(RPAD(10,4),'10 ') STARS ! 34: TEST = DIFFER(LPAD('ABC',2),'ABC') STARS ! 35: TEST = DIFFER(RPAD('AB',1),'AB') STARS ! 36: TEST = DIFFER(LPAD('AB',2),'AB') STARS ! 37: TEST = DIFFER(LPAD()) STARS ! 38: TEST = DIFFER(LPAD(,5),' ') STARS ! 39: * ! 40: * TEST CONVERT FUNCTION ! 41: * ! 42: TEST = DIFFER(CONVERT('8.9','NUMERIC') , 8.9) STARS ! 43: TEST = DIFFER(CONVERT('100','NUMERIC') , 100) STARS ! 44: TEST = DIFFER(CONVERT('12','INTEGER') , 12) STARS ! 45: TEST = DIFFER(CONVERT(2.5,'INTEGER'),2) STARS ! 46: TEST = DIFFER(CONVERT(2,'REAL'),2.0) STARS ! 47: TEST = DIFFER(CONVERT('.2','REAL'),0.2) STARS ! 48: * ! 49: * TEST REVERSE FUNCTION ! 50: * ! 51: TEST = DIFFER(REVERSE('123'),'321') STARS ! 52: TEST = DIFFER(REVERSE()) STARS ! 53: TEST = DIFFER(REVERSE(12),'21') STARS ! 54: * ! 55: * TEST DATATYPE FUNCTION ! 56: * ! 57: TEST = DIFFER(DATATYPE('JKL'),'STRING') STARS ! 58: TEST = DIFFER(DATATYPE(12),'INTEGER') STARS ! 59: TEST = DIFFER(DATATYPE(1.33),'REAL') STARS ! 60: TEST = DIFFER(DATATYPE(NULL),'STRING') STARS ! 61: * ! 62: * TEST ARITHMETIC OPERATORS ! 63: * ! 64: TEST = DIFFER(3 + 2,5) STARS ! 65: TEST = DIFFER(3 - 2,1) STARS ! 66: TEST = DIFFER(3 * 2,6) STARS ! 67: TEST = DIFFER(5 / 2,2) STARS ! 68: TEST = DIFFER(13 / 7,1) STARS ! 69: TEST = DIFFER(13 / -7,-1) STARS ! 70: TEST = DIFFER(-13 / 7,-1) STARS ! 71: TEST = DIFFER(-13 / -7,1) STARS ! 72: TEST = DIFFER(13 / 13,1) STARS ! 73: TEST = DIFFER(13 / -13,-1) STARS ! 74: TEST = DIFFER(-13 / 13,-1) STARS ! 75: TEST = DIFFER(-13 / -13,1) STARS ! 76: TEST = DIFFER(13 / 14,0) STARS ! 77: TEST = DIFFER(13 / -14,0) STARS ! 78: TEST = DIFFER(2 ** 3,8) STARS ! 79: TEST = DIFFER(3 + 1,4) STARS ! 80: TEST = DIFFER(3 - 1,2) STARS ! 81: TEST = DIFFER('3' + 2,5) STARS ! 82: TEST = DIFFER(3 + '-2',1) STARS ! 83: TEST = DIFFER('1' + '0',1) STARS ! 84: TEST = DIFFER(5 + NULL,5) STARS ! 85: TEST = DIFFER(-5,0 - 5) STARS ! 86: TEST = DIFFER(+'4',4) STARS ! 87: TEST = DIFFER(2.0 + 3.0,5.0) STARS ! 88: TEST = DIFFER(3.0 - 1.0,2.0) STARS ! 89: TEST = DIFFER(3.0 * 2.0,6.0) STARS ! 90: TEST = DIFFER(3.0 / 2.0,1.5) STARS ! 91: TEST = DIFFER(3.0 ** 3,27.0) STARS ! 92: TEST = DIFFER(-1.0,0.0 - 1.0) STARS ! 93: * ! 94: * TEST MIXED MODE ! 95: * ! 96: TEST = DIFFER(1 + 2.0,3.0) STARS ! 97: TEST = DIFFER(3.0 / 2,1.5) STARS ! 98: * ! 99: * TEST FUNCTIONS ! 100: * ! 101: * FIRST, A SIMPLE TEST OF A FACTORIAL FUNCTION ! 102: * ! 103: DEFINE('FACT(N)') :(FACTEND) ! 104: FACT FACT = EQ(N,1) 1 :S(RETURN) ! 105: FACT = N * FACT(N - 1) :(RETURN) ! 106: FACTEND TEST = NE(FACT(5),120) STARS ! 107: TEST = DIFFER(OPSYN(.FACTO,'FACT')) STARS ! 108: TEST = DIFFER(FACTO(4),24) STARS ! 109: * ! 110: * SEE IF ALTERNATE ENTRY POINT WORKS OK ! 111: * ! 112: DEFINE('FACT2(N)',.FACT2ENT) :(FACT2ENDF) ! 113: FACT2ENT FACT2 = EQ(N,1) 1 :S(RETURN) ! 114: FACT2 = N * FACT2(N - 1) :(RETURN) ! 115: FACT2ENDF OUTPUT = NE(FACT2(6),720) STARS ! 116: * ! 117: * TEST FUNCTION REDEFINITION AND CASE OF ARGUMENT = FUNC NAME ! 118: * ! 119: TEST = DIFFER(DEFINE('FACT(FACT)','FACT3')) STARS ! 120: . :(FACT2END) ! 121: FACT3 FACT = NE(FACT,1) FACT * FACT(FACT - 1) ! 122: . :(RETURN) ! 123: FACT2END ! 124: TEST = NE(FACT(4),24) STARS ! 125: * ! 126: * TEST OUT LOCALS ! 127: * ! 128: DEFINE('LFUNC(A,B,C)D,E,F') :(LFUNCEND) ! 129: LFUNC TEST = ~(IDENT(A,'A') IDENT(B,'B') IDENT(C,'C')) STARS ! 130: * TEST = ~(IDENT(D) IDENT(E) IDENT(F)) STARS ! 131: A = 'AA' ; B = 'BB' ; C = 'CC' ; D = 'DD' ; E = 'EE' ; F = 'FF' ! 132: . :(RETURN) ! 133: LFUNCEND AA = 'A' ; BB = 'B' ; CC = 'C' ! 134: D = 'D' ; E = 'E' ; F = 'F' ! 135: A = 'X' ; B = 'Y' ; C = 'Z' ! 136: TEST = DIFFER(LFUNC(AA,BB,CC)) STARS ! 137: TEST = ~(IDENT(A,'X') IDENT(B,'Y') IDENT(C,'Z')) STARS ! 138: TEST = ~(IDENT(AA,'A') IDENT(BB,'B') IDENT(CC,'C')) STARS ! 139: TEST = ~(IDENT(D,'D') IDENT(E,'E') IDENT(F,'F')) STARS ! 140: * ! 141: * TEST NRETURN ! 142: * ! 143: DEFINE('NTEST()') :(ENDNTEST) ! 144: NTEST NTEST = .A :(NRETURN) ! 145: ENDNTEST A = 27 ! 146: TEST = DIFFER(NTEST(),27) STARS ! 147: . :F(ST59) ;ST59 ! 148: NTEST() = 26 ! 149: . :F(ST60) ;ST60 ! 150: TEST = DIFFER(A,26) STARS ! 151: * ! 152: * CONTINUE TEST OF FUNCTIONS ! 153: * ! 154: * ! 155: * TEST FAILURE RETURN ! 156: * ! 157: DEFINE('FAILURE()') :(FAILEND) ! 158: FAILURE :(FRETURN) ! 159: FAILEND TEST = FAILURE() STARS ! 160: * ! 161: * TEST OPSYN FOR OPERATORS ! 162: * ! 163: OPSYN('@',.DUPL,2) ! 164: OPSYN('|',.SIZE,1) ! 165: TEST = DIFFER('A' @ 4,'AAAA') STARS ! 166: TEST = DIFFER(|'STRING',6) STARS ! 167: * ! 168: * TEST OUT ARRAY FACILITY ! 169: * ! 170: A = ARRAY(3) ! 171: TEST = DIFFER(A[1]) STARS ! 172: A[2] = 4.5 ! 173: TEST = DIFFER(A[2],4.5) STARS ! 174: TEST = ?A[4] STARS ! 175: TEST = ?A[0] STARS ! 176: TEST = DIFFER(PROTOTYPE(A),3) STARS ! 177: B = ARRAY(3,10) ! 178: TEST = DIFFER(B[2],10) STARS ! 179: B = ARRAY('3') ! 180: B[2] = 'A' ! 181: TEST = DIFFER(B[2],'A') STARS ! 182: C = ARRAY('2,2') ! 183: C[1,2] = '*' ! 184: TEST = DIFFER(C[1,2],'*') STARS ! 185: TEST = DIFFER(PROTOTYPE(C),'2,2') STARS ! 186: D = ARRAY('-1:1,2') ! 187: D[-1,1] = 0 ! 188: TEST = DIFFER(D[-1,1],0) STARS ! 189: TEST = ?D[-2,1] STARS ! 190: TEST = ?D[2,1] STARS ! 191: * ! 192: * TEST PROGRAM DEFINED DATATYPE FUNCTIONS ! 193: * ! 194: DATA('NODE(VAL,LSON,RSON)') ! 195: A = NODE('X','Y','Z') ! 196: TEST = DIFFER(DATATYPE(A),'NODE') STARS ! 197: TEST = DIFFER(VAL(A),'X') STARS ! 198: B = NODE() ! 199: TEST = DIFFER(RSON(B)) STARS ! 200: LSON(B) = A ! 201: TEST = DIFFER(RSON(LSON(B)),'Z') STARS ! 202: * TEST = DIFFER(VALUE('B'),B) STARS ! 203: * ! 204: * TEST MULTIPLE USE OF FIELD FUNCTION NAME ! 205: * ! 206: DATA('CLUNK(VALUE,LSON)') ! 207: TEST = DIFFER(RSON(LSON(B)),'Z') STARS ! 208: * TEST = DIFFER(VALUE('B'),B) STARS ! 209: C = CLUNK('A','B') ! 210: TEST = DIFFER(LSON(C),'B') STARS ! 211: * ! 212: * TEST NUMERICAL PREDICATES ! 213: * ! 214: TEST = LT(5,4) STARS ! 215: TEST = LT(4,4) STARS ! 216: TEST = ~LT(4,5) STARS ! 217: TEST = LE(5,2) STARS ! 218: TEST = ~LE(4,4) STARS ! 219: TEST = ~LE(4,10) STARS ! 220: TEST = EQ(4,5) STARS ! 221: TEST = EQ(5,4) STARS ! 222: TEST = ~EQ(5,5) STARS ! 223: TEST = NE(4,4) STARS ! 224: TEST = ~NE(4,6) STARS ! 225: TEST = ~NE(6,4) STARS ! 226: TEST = GT(4,6) STARS ! 227: TEST = GT(4,4) STARS ! 228: TEST = ~GT(5,2) STARS ! 229: TEST = GE(5,7) STARS ! 230: TEST = ~GE(4,4) STARS ! 231: TEST = ~GE(7,5) STARS ! 232: TEST = NE(4,5 - 1) STARS ! 233: TEST = GT(4,3 + 1) STARS ! 234: TEST = LE(20,5 + 6) STARS ! 235: TEST = EQ(1.0,2.0) STARS ! 236: TEST = GT(-2.0,-1.0) STARS ! 237: TEST = GT(-3.0,4.0) STARS ! 238: TEST = NE('12',12) STARS ! 239: TEST = NE('12',12.0) STARS ! 240: TEST = ~CONVERT(BAL,'PATTERN') STARS ! 241: * ! 242: * TEST INTEGER ! 243: * ! 244: TEST = INTEGER('ABC') STARS ! 245: TEST = ~INTEGER(12) STARS ! 246: TEST = ~INTEGER('12') STARS ! 247: * ! 248: * TEST SIZE ! 249: * ! 250: TEST = NE(SIZE('ABC'),3) STARS ! 251: TEST = NE(SIZE(12),2) STARS ! 252: TEST = NE(SIZE(NULL),0) STARS ! 253: * ! 254: * TEST LGT ! 255: * ! 256: TEST = LGT('ABC','XYZ') STARS ! 257: TEST = LGT('ABC','ABC') STARS ! 258: TEST = ~LGT('XYZ','ABC') STARS ! 259: TEST = LGT(NULL,'ABC') STARS ! 260: TEST = ~LGT('ABC',NULL) STARS ! 261: * ! 262: * TEST INDIRECT ADDRESSING ! 263: * ! 264: TEST = DIFFER($'BAL',BAL) STARS ! 265: TEST = DIFFER($.BAL,BAL) STARS ! 266: $'QQ' = 'X' ! 267: TEST = DIFFER(QQ,'X') STARS ! 268: TEST = DIFFER($'GARBAGE') STARS ! 269: A = ARRAY(3) ! 270: A[2] = 'X' ! 271: TEST = DIFFER($.A[2],'X') STARS ! 272: * ! 273: * TEST CONCATENATION ! 274: * ! 275: TEST = DIFFER('A' 'B','AB') STARS ! 276: TEST = DIFFER('A' 'B' 'C','ABC') STARS ! 277: TEST = DIFFER(1 2,'12') STARS ! 278: TEST = DIFFER(2 2 2,'222') STARS ! 279: TEST = DIFFER(1 3.4,'13.4') STARS ! 280: TEST = DIFFER(BAL NULL,BAL) STARS ! 281: TEST = DIFFER(NULL BAL,BAL) STARS ! 282: * ! 283: * TEST DREALS ! 284: * ! 285: TEST = DIFFER(1.0D2 + 2.0D2,3.0D2) STARS ! 286: TEST = DIFFER(2.5D0 * 2.0D0,5.00D0) STARS ! 287: TEST = DIFFER(3.0D0 / 3.0D0,1.0D0) STARS ! 288: TEST = DIFFER(4.0D0 - 3.0D0,1.0D0) STARS ! 289: * TEST = DIFFER(3.D0 + 1.,4.D0) STARS ! 290: * TEST = DIFFER(1. + 3.D0,4.D0) STARS ! 291: TEST = DIFFER(1.0D0 + 1,2.0D0) STARS ! 292: TEST = DIFFER(3 + 1.0D0,4.0D0) STARS ! 293: TEST = DIFFER(3.0D0 ** 3,27.0D0) STARS ! 294: * ! 295: * TEST REMDR ! 296: * ! 297: TEST = DIFFER(REMDR(10,3),1) STARS ! 298: TEST = DIFFER(REMDR(11,10),1) STARS ! 299: TEST = DIFFER(REMDR(13,7),6) STARS ! 300: TEST = DIFFER(REMDR(13,-7),6) STARS ! 301: TEST = DIFFER(REMDR(-13,7),-6) STARS ! 302: TEST = DIFFER(REMDR(-13,-7),-6) STARS ! 303: TEST = DIFFER(REMDR(13,13),0) STARS ! 304: TEST = DIFFER(REMDR(13,-13),0) STARS ! 305: TEST = DIFFER(REMDR(-13,13),0) STARS ! 306: TEST = DIFFER(REMDR(-13,-13),0) STARS ! 307: * ! 308: * TEST DUPL ! 309: * ! 310: TEST = DIFFER(DUPL('ABC',2),'ABCABC') STARS ! 311: TEST = DIFFER(DUPL(NULL,10),NULL) STARS ! 312: TEST = DIFFER(DUPL('ABCDEFG',0),NULL) STARS ! 313: TEST = DIFFER(DUPL(1,10),'1111111111') STARS ! 314: * ! 315: * TEST TABLE FACILITY ! 316: * ! 317: T = TABLE(10) ! 318: TEST = DIFFER(T['CAT']) STARS ! 319: T['CAT'] = 'DOG' ! 320: TEST = DIFFER(T['CAT'],'DOG') STARS ! 321: T[7] = 45 ! 322: TEST = DIFFER(T[7],45) STARS ! 323: TEST = DIFFER(T['CAT'],'DOG') STARS ! 324: TA = CONVERT(T,'ARRAY') ! 325: TEST = DIFFER(PROTOTYPE(TA),'2,2') STARS ! 326: ATA = CONVERT(TA,'TABLE') ! 327: TEST = DIFFER(ATA[7],45) STARS ! 328: TEST = DIFFER(ATA['CAT'],'DOG') STARS ! 329: * ! 330: * TEST ITEM FUNCTION ! 331: * ! 332: AAA = ARRAY(10) ! 333: ITEM(AAA,1) = 5 ! 334: TEST = DIFFER(ITEM(AAA,1),5) STARS ! 335: TEST = DIFFER(AAA[1],5) STARS ! 336: AAA[2] = 22 ! 337: TEST = DIFFER(ITEM(AAA,2),22) STARS ! 338: AMA = ARRAY('2,2,2,2') ! 339: ITEM(AMA,1,2,1,2) = 1212 ! 340: TEST = DIFFER(ITEM(AMA,1,2,1,2),1212) STARS ! 341: TEST = DIFFER(AMA[1,2,1,2],1212) STARS ! 342: AMA[2,1,2,1] = 2121 ! 343: TEST = DIFFER(ITEM(AMA,2,1,2,1),2121) STARS ! 344: * ! 345: * TEST EVAL ! 346: * ! 347: EXPR = *('ABC' 'DEF') ! 348: TEST = DIFFER(EVAL(EXPR),'ABCDEF') STARS ! 349: Q = 'QQQ' ! 350: SEXP = *Q ! 351: TEST = DIFFER(EVAL(SEXP),'QQQ') STARS ! 352: FEXP = *IDENT(1,2) ! 353: TEST = EVAL(FEXP) STARS ! 354: * ! 355: * TRY A FEW ALTERNATIONS ! 356: * ! 357: TEST = DIFFER((GT(3,1) 3,1),3) STARS ! 358: TEST = DIFFER((LT(3,1) 3,1),1) STARS ! 359: TEST = DIFFER(EVAL(*(NE(1,2) 'A','B')),'A') STARS ! 360: TEST = DIFFER(EVAL(*(EQ(1,2) 'A','B')),'B') STARS ! 361: * ! 362: * TEST SUBSTR ! 363: * ! 364: TEST = DIFFER(SUBSTR('ABC',2,1),'B') STARS ! 365: TEST = DIFFER(SUBSTR('ABCDEF',1,5),'ABCDE') STARS ! 366: TEST = SUBSTR('ABC',50,1) STARS ! 367: TEST = SUBSTR('ABC',81,50) STARS ! 368: TEST = SUBSTR(NULL,1,1) STARS ! 369: * ! 370: * TEST ARG ! 371: * ! 372: JLAB DEFINE('JLAB(A,B,C)D,E,F') ! 373: TEST = DIFFER(ARG(.JLAB,1),.A) STARS ! 374: TEST = DIFFER(ARG(.JLAB,3),.C) STARS ! 375: $ARG(.JLAB,1) = 'QWERT' ! 376: TEST = DIFFER(A,'QWERT') STARS ! 377: TEST = ARG(.JLAB,0) STARS ! 378: TEST = ARG(.JLAB,4) STARS ! 379: * ! 380: * TEST LOC ! 381: * ! 382: TEST = DIFFER(LOCAL(.JLAB,1),.D) STARS ! 383: TEST = DIFFER(LOCAL(.JLAB,3),.F) STARS ! 384: TEST = LOCAL(.JLAB,0) STARS ! 385: TEST = LOCAL('JLAB',4) STARS ! 386: * ! 387: * TEST APPLY ! 388: * ! 389: TEST = APPLY(.EQ,1,2) STARS ! 390: TEST = ~APPLY(.EQ,1,1) STARS ! 391: TEST = ~APPLY(.EQ,0) STARS ! 392: TEST = ~APPLY(.EQ,1,1,1) STARS ! 393: TEST = ~IDENT(APPLY(.TRIM,'ABC '),'ABC') STARS ! 394: * ! 395: * FINAL PROCESSING ! 396: * ! 397: OUTPUT = '************************************************' ! 398: DIAGNOSTICS = 1000 - &TRACE ! 399: EQ(DIAGNOSTICS,0) :S(TERMINATE) ! 400: OUTPUT = '**** NUMBER OF ERRORS DETECTED ' ! 401: . LPAD(DIAGNOSTICS,5) ' ****' ! 402: OUTPUT = '**** E N D O F D I A G N O S T I C S ****' ! 403: OUTPUT = '************************************************' ! 404: . :(END) ! 405: TERMINATE OUTPUT = '**** N O E R R O R S D E T E C T E D ****' ! 406: OUTPUT = '**** E N D O F D I A G N O S T I C S ****' ! 407: OUTPUT = '************************************************' ! 408: :(END) ! 409: * ! 410: * ERROR HANDLING ROUTINE ! 411: * ! 412: ERRORS OUTPUT = '**** ERROR AT ' ! 413: . LPAD(&LASTNO,4) ' &ERRTYPE = ' LPAD(&ERRTYPE,7,' ') ! 414: . ' ****' ! 415: OUTPUT = ' &ERRTEXT = ' &ERRTEXT ! 416: DUMP(1) ! 417: &TRACE = &TRACE - 1 ! 418: SETEXIT(.ERRORS) :(CONTINUE) ! 419: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.