|
|
1.1 ! root 1: -- bigpepytest.py - test out most of the pepy constructs ! 2: ! 3: -- $Header: /f/osi/pepy/RCS/bigpepytest.py,v 7.0 89/11/23 22:11:37 mrose Rel $ ! 4: -- ! 5: -- ! 6: -- $Log: bigpepytest.py,v $ ! 7: -- Revision 7.0 89/11/23 22:11:37 mrose ! 8: -- Release 6.0 ! 9: -- ! 10: ! 11: -- ! 12: -- NOTICE ! 13: -- ! 14: -- Acquisition, use, and distribution of this module and related ! 15: -- materials are subject to the restrictions of a license agreement. ! 16: -- Consult the Preface in the User's Manual for the full terms of ! 17: -- this agreement. ! 18: -- ! 19: -- ! 20: ! 21: ! 22: BigTest DEFINITIONS ::= ! 23: ! 24: %{ ! 25: #ifndef lint ! 26: static char *rcsid = "$Header: /f/osi/pepy/RCS/bigpepytest.py,v 7.0 89/11/23 22:11:37 mrose Rel $"; ! 27: #endif ! 28: ! 29: #include <stdio.h> ! 30: ! 31: ! 32: static int count; ! 33: ! 34: static char *myname = "bigpepytest"; ! 35: ! 36: ! 37: void adios (); ! 38: ! 39: /* */ ! 40: ! 41: /* ARGSUSED */ ! 42: ! 43: main (argc, argv, envp) ! 44: int argc; ! 45: char **argv, ! 46: **envp; ! 47: { ! 48: PE pe; ! 49: ! 50: myname = argv[0]; ! 51: ! 52: if (encoder_BigTest_Test1 (&pe, 1, NULL, NULLCP, NULLCP) == NOTOK) ! 53: adios (NULLCP, "encoder fails"); ! 54: ! 55: if (printer_BigTest_Test1 (pe, 1, NULLIP, NULLVP, NULLCP) == NOTOK) ! 56: adios (NULLCP, "printer fails"); ! 57: ! 58: if (decoder_BigTest_Test1 (pe, 1, NULLIP, NULLVP, NULLCP) == NOTOK) ! 59: adios (NULLCP, "decoder fails"); ! 60: ! 61: exit (0); /* NOTREACHED */ ! 62: } ! 63: %} ! 64: ! 65: BEGIN ! 66: ! 67: ! 68: ENCODER encoder ! 69: ! 70: Test1 %{ int fd = rnd (2); %} ::= ! 71: SEQUENCE { ! 72: boolean ! 73: BOOLEAN ! 74: [[b rnd(2)]], ! 75: ! 76: taggedBoolean ! 77: [0] BOOLEAN ! 78: [[b rnd (2)]], ! 79: ! 80: implicitTaggedBoolean ! 81: [PRIVATE 0] IMPLICIT BOOLEAN ! 82: [[b rnd(2)]], ! 83: ! 84: integer ! 85: INTEGER ! 86: [[i rnd(10000)]], ! 87: ! 88: taggedInteger ! 89: [APPLICATION 1] INTEGER ! 90: [[i rnd(10000)]], ! 91: ! 92: implicitTaggedInteger ! 93: [UNIVERSAL 1] IMPLICIT INTEGER ! 94: [[i rnd(10000)]], ! 95: ! 96: integerOneValue ! 97: INTEGER ! 98: [[i 1]] { nn(1) }, ! 99: ! 100: taggedIntegerOneValue ! 101: [PRIVATE 2] INTEGER ! 102: [[i 1]] { nn(1) }, ! 103: ! 104: integerManyValues ! 105: INTEGER ! 106: [[i rnd(3) + 1]] ! 107: { nn1(1), nn2(2), nn3(3) }, ! 108: ! 109: implicitTaggedIntegerManyValues ! 110: [2] IMPLICIT INTEGER ! 111: [[i rnd(3) + 1]] ! 112: { nn1(1), nn2(2), nn3(3) }, ! 113: ! 114: bitstring ! 115: %{ ! 116: int i; ! 117: $$ = pe_alloc(PE_CLASS_UNIV, PE_FORM_PRIM, PE_PRIM_BITS); ! 118: $$ = prim2bit($$); ! 119: for(i = 0; i < 32; i++) ! 120: if( rnd(2) ) ! 121: (void) bit_on($$, i); ! 122: %} ! 123: BITSTRING, ! 124: ! 125: taggedBitstring [UNIVERSAL 3] ! 126: %{ ! 127: int i; ! 128: $$ = pe_alloc(PE_CLASS_UNIV, PE_FORM_PRIM, PE_PRIM_BITS); ! 129: $$ = prim2bit($$); ! 130: for(i = 0; i < 32; i++) ! 131: if( rnd(2) && rnd(3) ) ! 132: (void) bit_on($$, i); ! 133: %} ! 134: BITSTRING, ! 135: ! 136: bitstring2 ! 137: BIT STRING ! 138: [[x int2strb(0177, 8) $ 8]], ! 139: ! 140: taggedBitstring2 ! 141: [4] BIT STRING ! 142: [[x int2strb(0177, 8) $ 8]], ! 143: ! 144: implicitTaggedBitstring2 ! 145: [PRIVATE 4] IMPLICIT BIT STRING ! 146: [[x int2strb(0xffff, 16) $ 16]], ! 147: ! 148: bitstringValue ! 149: BIT STRING ! 150: [[x int2strb(1, 1) $ 1]] ! 151: { nn1(1) }, ! 152: ! 153: taggedBitstringValue ! 154: [APPLICATION 5] BIT STRING ! 155: [[x int2strb(1, 1) $ 1]] ! 156: { nn1(1) }, ! 157: ! 158: bitstringValues ! 159: BIT STRING ! 160: [[x int2strb(03, 3) $ 3]] ! 161: { nn1(1), nn2(2), nn3(3) }, ! 162: ! 163: taggedBitstringValues ! 164: [PRIVATE 6] BIT STRING ! 165: [[x int2strb(03, 3) $ 3]] ! 166: { nn1(1), nn2(2), nn3(3) }, ! 167: ! 168: implicitTaggedBitstringValues ! 169: [APPLICATION 6] IMPLICIT BIT STRING ! 170: [[x int2strb(03, 3) $ 3]] ! 171: { nn1(1), nn2(2), nn3(3) }, ! 172: ! 173: octetstring ! 174: OCTET STRING ! 175: [[s "hello world"]], ! 176: ! 177: taggedOctetstring ! 178: [UNIVERSAL 7] OCTET STRING ! 179: [[s "hello world"]], ! 180: ! 181: octetstring2 ! 182: OCTETSTRING ! 183: [[s "goodbye world"]], ! 184: ! 185: implicitTaggedOctetstring2 ! 186: [PRIVATE 7] IMPLICIT OCTETSTRING ! 187: [[o "goodbye world" $ 8]], ! 188: ! 189: null ! 190: NULL, ! 191: ! 192: taggedNull ! 193: [8] NULL, ! 194: ! 195: implicitTaggedNull ! 196: [PRIVATE 8] IMPLICIT NULL, ! 197: ! 198: sequence ! 199: SEQUENCE, ! 200: ! 201: taggedSequence ! 202: [APPLICATION 9] SEQUENCE, ! 203: ! 204: implicitTaggedSequence ! 205: [PRIVATE 9] SEQUENCE, ! 206: ! 207: sequenceOf ! 208: SEQUENCE OF ! 209: <<count = rnd(10); count >= 0; count-->> ! 210: SequenceA, ! 211: ! 212: taggedSequenceOf ! 213: [PRIVATE 10] SEQUENCE OF ! 214: <<count = rnd(10); count >= 0; count-->> ! 215: SequenceA, ! 216: ! 217: sequenceOf2 ! 218: SEQUENCEOF ! 219: <<count = rnd(3); count >= 0; count-->> ! 220: SequenceB, ! 221: ! 222: implicitTaggedSequenceOf2 ! 223: [10] IMPLICIT SEQUENCEOF ! 224: <<count = rnd(3); count >= 0; count-->> ! 225: SequenceA, ! 226: ! 227: set ! 228: SET, ! 229: ! 230: taggedSet ! 231: [UNIVERSAL 11] SET, ! 232: ! 233: implicitTaggedSet ! 234: [PRIVATE 11] IMPLICIT SET, ! 235: ! 236: setOf ! 237: SET OF ! 238: <<count = rnd(10); count >= 0; count -->> ! 239: SetA, ! 240: ! 241: taggedSetOf ! 242: [12] SET OF ! 243: <<count = rnd(10); count >= 0; count -->> ! 244: SetA, ! 245: ! 246: setOf2 ! 247: SETOF ! 248: <<count = rnd(4); count >= 0; count -->> ! 249: SetB, ! 250: ! 251: implicitTaggedSetOf2 ! 252: [PRIVATE 12] IMPLICIT SETOF ! 253: <<count = rnd(4); count >= 0; count -->> ! 254: SetA, ! 255: ! 256: setValues ! 257: SET { SequenceA, SequenceB, SetA, SetB }, ! 258: ! 259: taggedSetValues ! 260: [APPLICATION 13] SET { SequenceA, SequenceB, SetA, SetB }, ! 261: ! 262: implicitTaggedSetValues ! 263: [13] IMPLICIT SET { SequenceA, SequenceB, SetA, SetB }, ! 264: ! 265: choice ! 266: CHOICE << rnd(2) + 1 >> { ! 267: [1] ! 268: SequenceA, ! 269: ! 270: [2] ! 271: SequenceB, ! 272: ! 273: [3] ! 274: SetA, ! 275: ! 276: [4] ! 277: SetB ! 278: }, ! 279: ! 280: taggedChoice ! 281: [PRIVATE 14] CHOICE << rnd(2) + 1 >> { ! 282: [1] ! 283: SequenceA, ! 284: ! 285: [2] ! 286: SequenceB, ! 287: ! 288: [3] ! 289: SetA, ! 290: ! 291: [4] ! 292: SetB ! 293: }, ! 294: ! 295: bounded ! 296: objectname < ObjectA, ! 297: ! 298: taggedBounded ! 299: [UNIVERSAL 15] objectname < ObjectA, ! 300: ! 301: any ! 302: ANY ! 303: [[a pe_alloc (PE_CLASS_UNIV, PE_FORM_PRIM, PE_PRIM_NULL)]], ! 304: ! 305: taggedAny [PRIVATE 15] ! 306: ANY ! 307: [[a pe_alloc (PE_CLASS_UNIV, PE_FORM_PRIM, PE_PRIM_NULL)]], ! 308: ! 309: oid ! 310: %{ ! 311: OID oid; ! 312: register int i; ! 313: ! 314: oid = (OID) calloc (1, sizeof(OIDentifier)); ! 315: oid->oid_nelem = rnd(6)+2; ! 316: oid->oid_elements = (unsigned int *) ! 317: calloc((unsigned) oid->oid_nelem, ! 318: sizeof(unsigned int)); ! 319: for(i = 0; i < oid->oid_nelem; i++) ! 320: oid->oid_elements[i] = rnd(10); ! 321: $$ = oid; ! 322: %} ! 323: OBJECT IDENTIFIER, ! 324: ! 325: taggedOid [16] ! 326: %{ ! 327: OID oid; ! 328: register int i; ! 329: ! 330: oid = (OID) calloc (1, sizeof(OIDentifier)); ! 331: oid->oid_nelem = rnd(6)+2; ! 332: oid->oid_elements = (unsigned int *) ! 333: calloc((unsigned) oid->oid_nelem, ! 334: sizeof(unsigned int)); ! 335: for(i = 0; i < oid->oid_nelem; i++) ! 336: oid->oid_elements[i] = rnd(10); ! 337: $$ = oid; ! 338: %} ! 339: OBJECT IDENTIFIER, ! 340: ! 341: oid2 ! 342: OBJECT IDENTIFIER ! 343: [[O str2oid ("1.2.3.4.5.6.7.8.9")]], ! 344: ! 345: implicitTaggedOid2 ! 346: [APPLICATION 17] IMPLICIT OBJECT IDENTIFIER ! 347: [[O str2oid ("1.2.3.4.5.6.7.8.9")]], ! 348: ! 349: funnyDefault ! 350: [18] IMPLICIT INTEGER ! 351: [[i fd]] ! 352: DEFAULT 0 << fd != 0 >> ! 353: } ! 354: ! 355: SequenceA ::= ! 356: SEQUENCE { ! 357: seqAinteger ! 358: INTEGER ! 359: [[i rnd(50)]], ! 360: ! 361: seqAbool ! 362: BOOLEAN ! 363: [[b rnd(2)]] ! 364: } ! 365: ! 366: SequenceB ::= ! 367: [PRIVATE 100] SEQUENCE { ! 368: seqBinteger ! 369: INTEGER ! 370: [[i rnd(75)]] ! 371: } ! 372: ! 373: SetA ::= ! 374: SET { ! 375: setAinteger ! 376: INTEGER ! 377: [[i rnd(20000)]], ! 378: ! 379: setAbool ! 380: BOOLEAN ! 381: [[b rnd(2)]] ! 382: } ! 383: ! 384: SetB ::= ! 385: [PRIVATE 101] SET { ! 386: setBinteger ! 387: INTEGER ! 388: [[i rnd(3000)]] ! 389: } ! 390: ! 391: ObjectA ::= ! 392: BOOLEAN ! 393: [[b rnd(2)]] ! 394: ! 395: ! 396: SECTIONS none decoder printer ! 397: ! 398: Test1 ::= ! 399: SEQUENCE { ! 400: boolean ! 401: BOOLEAN, ! 402: ! 403: taggedBoolean ! 404: [0] BOOLEAN, ! 405: ! 406: implicitTaggedBoolean ! 407: [PRIVATE 0] IMPLICIT BOOLEAN, ! 408: ! 409: integer ! 410: INTEGER, ! 411: ! 412: taggedInteger ! 413: [APPLICATION 1] INTEGER, ! 414: ! 415: implicitTaggedInteger ! 416: [UNIVERSAL 1] IMPLICIT INTEGER, ! 417: ! 418: integerOneValue ! 419: INTEGER { nn(1) }, ! 420: ! 421: taggedIntegerOneValue ! 422: [PRIVATE 2] INTEGER { nn(1) }, ! 423: ! 424: integerManyValues ! 425: INTEGER { nn1(1), nn2(2), nn3(3) }, ! 426: ! 427: implicitTaggedIntegerManyValues ! 428: [2] IMPLICIT INTEGER { nn1(1), nn2(2), nn3(3) }, ! 429: ! 430: bitstring ! 431: BITSTRING, ! 432: ! 433: taggedBitString ! 434: [UNIVERSAL 3] BITSTRING, ! 435: ! 436: bitstring2 ! 437: BIT STRING, ! 438: ! 439: taggedBitstring2 ! 440: [4] BIT STRING, ! 441: ! 442: implictTaggedBitstring2 ! 443: [PRIVATE 4] IMPLICIT BIT STRING, ! 444: ! 445: bitstringValue ! 446: BIT STRING { nn1(1) }, ! 447: ! 448: taggedBitstringValue ! 449: [APPLICATION 5] BIT STRING { nn1(1) }, ! 450: ! 451: bitstringValues ! 452: BIT STRING { nn1(1), nn2(2), nn3(3) }, ! 453: ! 454: taggedBitstringValues ! 455: [PRIVATE 6] BIT STRING { nn1(1), nn2(2), nn3(3) }, ! 456: ! 457: implicitTaggedBitstringValues ! 458: [APPLICATION 6] IMPLICIT BIT STRING ! 459: { nn1(1), nn2(2), nn3(3) }, ! 460: ! 461: octetstring ! 462: OCTET STRING, ! 463: ! 464: taggedOctetstring ! 465: [UNIVERSAL 7] OCTET STRING, ! 466: ! 467: octetstring2 ! 468: OCTETSTRING, ! 469: ! 470: implicitTaggedOctetstring2 ! 471: [PRIVATE 7] IMPLICIT OCTETSTRING, ! 472: ! 473: null ! 474: NULL, ! 475: ! 476: taggedNull ! 477: [8] NULL, ! 478: ! 479: implicitTaggedNull ! 480: [PRIVATE 8] IMPLICIT NULL, ! 481: ! 482: sequence ! 483: SEQUENCE, ! 484: ! 485: taggedSequence ! 486: [APPLICATION 9] SEQUENCE, ! 487: ! 488: implicitTaggedSequence ! 489: [PRIVATE 9] IMPLICIT SEQUENCE, ! 490: ! 491: sequenceOf ! 492: SEQUENCE OF ! 493: SequenceA, ! 494: ! 495: taggedSequenceOf ! 496: [PRIVATE 10] SEQUENCE OF ! 497: SequenceA, ! 498: ! 499: sequenceOf2 ! 500: SEQUENCEOF ! 501: SequenceB, ! 502: ! 503: implicitTaggedSequenceOf2 ! 504: [10] IMPLICIT SEQUENCEOF ! 505: SequenceA, ! 506: ! 507: set ! 508: SET, ! 509: ! 510: taggedSet ! 511: [UNIVERSAL 11] SET, ! 512: ! 513: implicitTaggedSet ! 514: [PRIVATE 11] IMPLICIT SET, ! 515: ! 516: setOf ! 517: SET OF ! 518: SetA, ! 519: ! 520: taggedSetOf ! 521: [12] SET OF ! 522: SetA, ! 523: ! 524: setOf2 ! 525: SETOF ! 526: SetB, ! 527: ! 528: implicitTaggedSetOf2 ! 529: [PRIVATE 12] IMPLICIT SETOF ! 530: SetA, ! 531: ! 532: setValues ! 533: SET { SequenceA, SequenceB, SetA, SetB }, ! 534: ! 535: taggedSetValues ! 536: [APPLICATION 13] SET { SequenceA, SequenceB, SetA, SetB }, ! 537: ! 538: implicitTaggedSetValues ! 539: [13] IMPLICIT SET { SequenceA, SequenceB, SetA, SetB }, ! 540: ! 541: choice ! 542: CHOICE { ! 543: [1] ! 544: SequenceA, ! 545: ! 546: [2] ! 547: SequenceB, ! 548: ! 549: [3] ! 550: SetA, ! 551: ! 552: [4] ! 553: SetB ! 554: }, ! 555: ! 556: taggedChoice ! 557: [PRIVATE 14] CHOICE { ! 558: [1] ! 559: SequenceA, ! 560: ! 561: [2] ! 562: SequenceB, ! 563: ! 564: [3] ! 565: SetA, ! 566: ! 567: [4] ! 568: SetB ! 569: }, ! 570: ! 571: bounded ! 572: objectname < ObjectA, ! 573: ! 574: taggedBounded ! 575: [UNIVERSAL 15] objectname < ObjectA, ! 576: ! 577: any ! 578: ANY, ! 579: ! 580: taggedAny ! 581: [PRIVATE 15] ANY, ! 582: ! 583: oid ! 584: OBJECT IDENTIFIER, ! 585: ! 586: taggedOid ! 587: [16] OBJECT IDENTIFIER, ! 588: ! 589: oid2 ! 590: OBJECT IDENTIFIER, ! 591: ! 592: implicitTaggedOid2 ! 593: [APPLICATION 17] IMPLICIT OBJECT IDENTIFIER, ! 594: ! 595: funnyDefault ! 596: [18] IMPLICIT INTEGER ! 597: %{ if ($$ == 0) advise (NULLCP, "funny default!"); %} ! 598: DEFAULT 0 ! 599: } ! 600: ! 601: SequenceA ::= ! 602: SEQUENCE { ! 603: seqAinteger ! 604: INTEGER, ! 605: ! 606: seqAbool ! 607: BOOLEAN ! 608: } ! 609: ! 610: SequenceB ::= ! 611: [PRIVATE 100] SEQUENCE { ! 612: seqBinteger ! 613: INTEGER ! 614: } ! 615: ! 616: SetA ::= ! 617: SET { ! 618: setAinteger ! 619: INTEGER, ! 620: ! 621: setAbool ! 622: BOOLEAN ! 623: } ! 624: ! 625: SetB ::= ! 626: [PRIVATE 101] SET { ! 627: setBinteger ! 628: INTEGER ! 629: } ! 630: ! 631: ObjectA ::= ! 632: BOOLEAN ! 633: ! 634: ! 635: END ! 636: ! 637: %{ ! 638: ! 639: /* MISC */ ! 640: ! 641: #ifdef BSD42 ! 642: #define SRAND(s) srandom ((int) (s)) ! 643: #define RAND random ! 644: ! 645: long random (); ! 646: #else ! 647: #define SRAND srand ! 648: #define RAND rand ! 649: ! 650: int rand (); ! 651: #endif ! 652: ! 653: long time (); ! 654: ! 655: ! 656: static int rnd(n) ! 657: int n; ! 658: { ! 659: static int init = 0; ! 660: ! 661: if (!init) { ! 662: SRAND (time ((long *) 0)); ! 663: init = 1; ! 664: } ! 665: return (RAND () % n); ! 666: } ! 667: ! 668: /* ERRORS */ ! 669: ! 670: #include <varargs.h> ! 671: ! 672: ! 673: #ifndef lint ! 674: void _advise (); ! 675: ! 676: ! 677: static void adios (va_alist) ! 678: va_dcl ! 679: { ! 680: va_list ap; ! 681: ! 682: va_start (ap); ! 683: ! 684: _advise (ap); ! 685: ! 686: va_end (ap); ! 687: ! 688: _exit (1); ! 689: } ! 690: #else ! 691: /* VARARGS */ ! 692: ! 693: static void adios (what, fmt) ! 694: char *what, ! 695: *fmt; ! 696: { ! 697: adios (what, fmt); ! 698: } ! 699: #endif ! 700: ! 701: ! 702: #ifndef lint ! 703: static void advise (va_alist) ! 704: va_dcl ! 705: { ! 706: va_list ap; ! 707: ! 708: va_start (ap); ! 709: ! 710: _advise (ap); ! 711: ! 712: va_end (ap); ! 713: } ! 714: ! 715: ! 716: static void _advise (ap) ! 717: va_list ap; ! 718: { ! 719: char buffer[BUFSIZ]; ! 720: ! 721: asprintf (buffer, ap); ! 722: ! 723: (void) fflush (stdout); ! 724: ! 725: fprintf (stderr, "%s: ", myname); ! 726: (void) fputs (buffer, stderr); ! 727: (void) fputc ('\n', stderr); ! 728: ! 729: (void) fflush (stderr); ! 730: } ! 731: #else ! 732: /* VARARGS */ ! 733: ! 734: static void advise (what, fmt) ! 735: char *what, ! 736: *fmt; ! 737: { ! 738: advise (what, fmt); ! 739: } ! 740: #endif ! 741: ! 742: %}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.