home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.pdx.edu / 2014.02.ftp.ee.pdx.edu.tar / ftp.ee.pdx.edu / pub / users / Harry / compilers / p10 / tst / misc2.pcat < prev    next >
Text File  |  2006-02-17  |  8KB  |  413 lines

  1. (*****
  2.  
  3. This file contains a number of various tests.
  4.  
  5. (1)  More thorough testing of frameSize computations.
  6.  
  7. (2)  More thorough testing of record dereferencing.
  8.  
  9. (3)  Use of arrays of booleans.
  10.  
  11. (4)  Additional testing of "true" and "false" constants.
  12.  
  13. (5)  Additional testing of formals and non-locals.
  14.  
  15. *****)
  16.  
  17. program is
  18.  
  19.     var r1: R1 := nil;
  20.         r2: R2 := nil;
  21.         r3: R3 := nil;
  22.         r4: R4 := nil;
  23.         r5: R5 := nil;
  24.         r6: R6 := nil;
  25.         r7: R7 := nil;
  26.         i: integer := 0;
  27.         b: boolean := false;
  28.         arr1: A1 := nil;
  29.         arr2: A2 := nil;
  30.         arr3: A3 := nil;
  31.     type R1 is record
  32.                  f1: R1;
  33.                  f2: R2;
  34.                  f3: R5;
  35.                  f4: R4;
  36.                 end;
  37.          R2 is record
  38.                  f1: R5;
  39.                  f2: integer;
  40.                  f3: R2;
  41.                  f4: integer;
  42.                end;
  43.          R3 is record
  44.                  h1: integer;
  45.                  h2: integer;
  46.                end;
  47.          R4 is record
  48.                  e1: integer;
  49.                  e2: R3;
  50.                  e3: integer;
  51.                  e4: R4;
  52.                end;
  53.          R5 is record
  54.                  g1: R3;
  55.                  g2: integer;
  56.                  g3: integer;
  57.                  g4: R3;
  58.                end;
  59.          R6 is record
  60.                  f1: R7;
  61.                  f2: boolean;
  62.                end;
  63.          R7 is record
  64.                  g1: boolean;
  65.                  g2: R6;
  66.                end;
  67.          A1 is array of boolean;
  68.          A2 is array of A1;
  69.          A3 is array of A2;
  70.  
  71.  
  72.   procedure frameTest1 () is
  73.     begin
  74.       return;
  75.     end;
  76.  
  77.   procedure frameTest2 (a: integer) is
  78.     begin
  79.       return;
  80.     end;
  81.  
  82.   procedure frameTest3 (a,b: integer) is
  83.     begin
  84.       return;
  85.     end;
  86.  
  87.   procedure frameTest4 (a,b,c: integer) is
  88.     begin
  89.       return;
  90.     end;
  91.  
  92.   procedure frameTest5 (a,b,c,d,e,f,g,h,i: integer) is
  93.     begin
  94.       return;
  95.     end;
  96.  
  97.   procedure frameTest6 () is
  98.     var x: integer := 0;
  99.     begin
  100.       return;
  101.     end;
  102.  
  103.   procedure frameTest7 () is
  104.     var x,y: integer := 0;
  105.     begin
  106.       return;
  107.     end;
  108.  
  109.   procedure frameTest8 () is
  110.     var x,y,z: integer := 0;
  111.     begin
  112.       return;
  113.     end;
  114.  
  115.   procedure frameTest9 () is
  116.     var x,y,z,w: integer := 0;
  117.     begin
  118.       return;
  119.     end;
  120.  
  121.   procedure frameTest10 (a: integer) is
  122.     var x: integer := 0;
  123.     begin
  124.       bar4 (1,2,3,4);
  125.       bar3 (1,2,3);
  126.       bar2 (1,2);
  127.       bar1 (1);
  128.       return;
  129.     end;
  130.  
  131.   procedure frameTest11 (a,b: integer) is
  132.     var x: integer := 0;
  133.     begin
  134.       bar4 (1,2,3,4);
  135.       bar3 (1,2,3);
  136.       bar2 (1,2);
  137.       bar1 (1);
  138.       return;
  139.     end;
  140.  
  141.   procedure frameTest12 (a: integer) is
  142.     var x,y: integer := 0;
  143.     begin
  144.       bar4 (1,2,3,4);
  145.       bar3 (1,2,3);
  146.       bar2 (1,2);
  147.       bar1 (1);
  148.       return;
  149.     end;
  150.  
  151.   procedure frameTest13 (a,b: integer) is
  152.     var x,y: integer := 0;
  153.     begin
  154.       bar4 (1,2,3,4);
  155.       bar3 (1,2,3);
  156.       bar2 (1,2);
  157.       bar1 (1);
  158.       return;
  159.     end;
  160.  
  161.   procedure frameTest14 (a: integer) is
  162.     var x: integer := 0;
  163.     begin
  164.       bar3 (1,2,3);
  165.       bar2 (1,2);
  166.       bar1 (1);
  167.       return;
  168.     end;
  169.  
  170.   procedure frameTest15 (a,b: integer) is
  171.     var x: integer := 0;
  172.     begin
  173.       bar3 (1,2,3);
  174.       bar2 (1,2);
  175.       bar1 (1);
  176.       return;
  177.     end;
  178.  
  179.   procedure frameTest16 (a: integer) is
  180.     var x,y: integer := 0;
  181.     begin
  182.       bar3 (1,2,3);
  183.       bar2 (1,2);
  184.       bar1 (1);
  185.       return;
  186.     end;
  187.  
  188.   procedure frameTest17 (a,b: integer) is
  189.     var x,y: integer := 0;
  190.     begin
  191.       bar3 (1,2,3);
  192.       bar2 (1,2);
  193.       bar1 (1);
  194.       return;
  195.     end;
  196.  
  197.   procedure frameTest18 (a: integer) is
  198.     var x: integer := 0;
  199.     begin
  200.       bar2 (1,2);
  201.       bar1 (1);
  202.       return;
  203.     end;
  204.  
  205.   procedure frameTest19 (a,b: integer) is
  206.     var x: integer := 0;
  207.     begin
  208.       bar2 (1,2);
  209.       bar1 (1);
  210.       return;
  211.     end;
  212.  
  213.   procedure frameTest20 (a: integer) is
  214.     var x,y: integer := 0;
  215.     begin
  216.       bar2 (1,2);
  217.       bar1 (1);
  218.       return;
  219.     end;
  220.  
  221.   procedure frameTest21 (a,b: integer) is
  222.     var x,y: integer := 0;
  223.     begin
  224.       bar2 (1,2);
  225.       bar1 (1);
  226.       return;
  227.     end;
  228.  
  229.   procedure frameTest22 (a: integer) is
  230.     var x: integer := 0;
  231.     begin
  232.       bar1 (1);
  233.       return;
  234.     end;
  235.  
  236.   procedure frameTest23 (a,b: integer) is
  237.     var x: integer := 0;
  238.     begin
  239.       bar1 (1);
  240.       return;
  241.     end;
  242.  
  243.   procedure frameTest24 (a: integer) is
  244.     var x,y: integer := 0;
  245.     begin
  246.       bar1 (1);
  247.       return;
  248.     end;
  249.  
  250.   procedure frameTest25 (a,b: integer) is
  251.     var x,y: integer := 0;
  252.     begin
  253.       bar1 (1);
  254.       return;
  255.     end;
  256.  
  257.   procedure bar1 (a: integer) is
  258.     begin
  259.       return;
  260.     end;
  261.  
  262.   procedure bar2 (a,b: integer) is
  263.     begin
  264.       return;
  265.     end;
  266.  
  267.   procedure bar3 (a,b,c: integer) is
  268.     begin
  269.       return;
  270.     end;
  271.   
  272.   procedure bar4 (a,b,c,d: integer) is
  273.     begin
  274.       return;
  275.     end;
  276.  
  277.   var a1,b1,c1,d1: integer := 0;
  278.   var w1,x1,y1,z1: integer := 0;
  279.  
  280.   procedure testFormals1 (a1,b2,c2,d2: integer) is
  281.     var w1,x2,y2,z2: integer := 0;
  282.     procedure testFormals2 (a1,b2,c3,d3: integer) is
  283.       var w1,x2,y3,z3: integer := 0;
  284.       procedure testFormals3 (a1,b2,c3,d4: integer) is
  285.         var w1,x2,y3,z4: integer := 0;
  286.         begin
  287.           a1 := a1 + b1 + c1 + d1
  288.                    + b2 + c2 + d2
  289.                         + c3 + d3
  290.                              + d4
  291.               + w1 + x1 + y1 + z1
  292.                    + x2 + y2 + z2
  293.                         + y3 + z3
  294.                              + z4;
  295.           return;
  296.         end;
  297.       begin
  298.         a1 := a1 + b1 + c1 + d1
  299.                  + b2 + c2 + d2
  300.                       + c3 + d3
  301.             + w1 + x1 + y1 + z1
  302.                  + x2 + y2 + z2
  303.                       + y3 + z3;
  304.         return;
  305.       end;
  306.     begin
  307.       a1 := a1 + b1 + c1 + d1
  308.                + b2 + c2 + d2
  309.           + w1 + x1 + y1 + z1
  310.                + x2 + y2 + z2;
  311.       return;
  312.     end;
  313.  
  314.   begin
  315.     i := r3.h1;
  316.     i := r3.h2;
  317.     i := r4.e1;
  318.     i := r4.e3;
  319.     i := r4.e4.e4.e4.e3;
  320.     i := r4.e4.e4.e4.e2.h1;
  321.     i := r4.e4.e4.e4.e2.h2;
  322.     i := r5.g2;
  323.     i := r5.g3;
  324.     i := r5.g1.h1;
  325.     i := r5.g1.h2;
  326.     i := r5.g4.h1;
  327.     i := r5.g4.h2;
  328.     i := r2.f2;
  329.     i := r2.f4;
  330.     i := r2.f3.f2;
  331.     i := r2.f3.f3.f3.f3.f2;
  332.     i := r2.f1.g1.h1;
  333.     i := r2.f1.g4.h2;
  334.     i := r1.f1.f1.f1.f2.f3.f3.f3.f2;
  335.     i := r1.f2.f1.g1.h1;
  336.     i := r1.f3.g2;
  337.     i := r1.f4.e4.e3;
  338.  
  339.     r3.h1 := 123;
  340.     r3.h2 := 123;
  341.     r4.e1 := 123;
  342.     r4.e3 := 123;
  343.     r4.e4.e4.e4.e3 := 123;
  344.     r4.e4.e4.e4.e2.h1 := 123;
  345.     r4.e4.e4.e4.e2.h2 := 123;
  346.     r5.g2 := 123;
  347.     r5.g3 := 123;
  348.     r5.g1.h1 := 123;
  349.     r5.g1.h2 := 123;
  350.     r5.g4.h1 := 123;
  351.     r5.g4.h2 := 123;
  352.     r2.f2 := 123;
  353.     r2.f4 := 123;
  354.     r2.f3.f2 := 123;
  355.     r2.f3.f3.f3.f3.f2 := 123;
  356.     r2.f1.g1.h1 := 123;
  357.     r2.f1.g4.h2 := 123;
  358.     r1.f1.f1.f1.f2.f3.f3.f3.f2 := 123;
  359.     r1.f2.f1.g1.h1 := 123;
  360.     r1.f3.g2 := 123;
  361.     r1.f4.e4.e3 := 123;
  362.  
  363.     b := r6.f2;
  364.     b := r6.f1.g1;
  365.     b := r6.f1.g2.f2;
  366.     b := r6.f1.g2.f1.g1;
  367.     b := r7.g1;
  368.     b := r7.g2.f2;
  369.     b := r7.g2.f1.g1;
  370.     b := r7.g2.f1.g2.f2;
  371.     b := r7.g2.f1.g2.f1.g1;
  372.  
  373.     if (r6.f2) then i:=123456; end;
  374.     if (r6.f1.g1) then i:=123456; end;
  375.     if (r6.f1.g2.f2) then i:=123456; end;
  376.     if (r6.f1.g2.f1.g1) then i:=123456; end;
  377.     if (r7.g1) then i:=123456; end;
  378.     if (r7.g2.f2) then i:=123456; end;
  379.     if (r7.g2.f1.g1) then i:=123456; end;
  380.     if (r7.g2.f1.g2.f2) then i:=123456; end;
  381.     if (r7.g2.f1.g2.f1.g1) then i:=123456; end;
  382.  
  383.     b := arr1 [100];
  384.     b := arr2 [100] [200];
  385.     b := arr3 [100] [200] [300];
  386.  
  387.     if (arr1 [100]) then i:=123456; end;
  388.     if (arr2 [100] [200]) then i:=123456; end;
  389.     if (arr3 [100] [200] [300]) then i:=123456; end;
  390.  
  391.     b := true;
  392.     b := false;
  393.     b := true and true;
  394.     b := true and false;
  395.     b := false and true;
  396.     b := false and false;
  397.     b := true or true;
  398.     b := true or false;
  399.     b := false or true;
  400.     b := false or false;
  401.  
  402.     if (true) then i:=123456; end;
  403.     if (false) then i:=123456; end;
  404.     if (true and true) then i:=123456; end;
  405.     if (true and false) then i:=123456; end;
  406.     if (false and true) then i:=123456; end;
  407.     if (false and false) then i:=123456; end;
  408.     if (true or true) then i:=123456; end;
  409.     if (true or false) then i:=123456; end;
  410.     if (false or true) then i:=123456; end;
  411.     if (false or false) then i:=123456; end;
  412.   end;
  413.