home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 355_03 / slk3.exe / TEST / TST / ASSN.TST < prev    next >
Text File  |  1989-02-16  |  2KB  |  161 lines

  1. /*
  2.     Tests of SPP's ability to handle assignments.
  3.  
  4.     source:  assn.tst
  5.     version: February 16, 1989
  6. */
  7.  
  8. assign() {
  9.     int x,y,z,w;
  10.     char a,b,c,d;
  11.  
  12.     a = '\012';
  13.     b = '\005';
  14.     c = '\000';
  15.     d = '\377';
  16.     x = 5;
  17.     y = 10;
  18.     z = 15;
  19.     w = -5;
  20.  
  21.     /* Should fail in PL\68k. */
  22.     u = 1;
  23.     a = a << b;
  24.     a = b >> c;
  25.     a = b * c;
  26.     a = b / c;
  27.     a = b % c;
  28.     a = b ^ c;
  29.     a = b & c;
  30.     a = b | c;
  31.  
  32.     a = b < c;
  33.     a = b >= c;
  34.     a = b == c;
  35.     a = !b;
  36.  
  37.     a = (int) b;
  38.     a = b;
  39.  
  40.     b + c;
  41.     b + x;
  42.  
  43.     a = b + x;    /* mixed mode */
  44.     a = b && x;
  45.     a = x && x;
  46.     a = x && b;
  47.     a = b && c;
  48.     a = x < y;
  49.  
  50. /* relatively simple assignments of various kinds */
  51.     a = b;
  52.     a += '\001';
  53.     a += b;
  54.     a -= '\001';
  55.     a -= b;
  56.     a <<= '\005';
  57.     a >>= '\004';
  58.         
  59.     b ^= d1;
  60.     a &= '\005';
  61.     a &= b;
  62.     a |= '\007';
  63.     b |= c;
  64.     
  65.     a = b + c;
  66.     b = d + a + b + c;
  67.     b = d - a - b + c;
  68.     a = b = c = d = 1;
  69.     a = (b + c) - ( a + d);
  70.     a = (b + c) - (b=a + d);
  71.     a = b + (c + d);
  72.     a = b + (c + (d + a));    /* at some point one runs out of temps */
  73.     b = -a + -b + -c;
  74.  
  75.  
  76.     /* now do the integers */    
  77.     x = x << y;
  78.     x = y >> z;
  79.     x = y * z;
  80.     x = y / z;
  81.     x = y % z;
  82.     x = y ^ z;
  83.     x = y & z;
  84.     x = y | z;
  85.     x = y + z + y & z;
  86.     x = y + z + (y & z);
  87.     x = y = z + (int) u;
  88.     x ^= y;
  89.  
  90.     /* relatively simple assignments */
  91.     x = y;
  92.     x += 1;
  93.     x += y;
  94.     x -= 1;
  95.     x -= y;
  96.     x <<= 5;
  97.     x >>= 4;
  98.  
  99.     y ^= d1;
  100.     x &= 5;
  101.     x &= y;
  102.     x |= 7;
  103.     y |= z;
  104.     w != w;
  105.     w = !z & x & y;
  106.     
  107.     x = y + z;
  108.     y = w + x + y + z;
  109.     y = d - x - y + z;
  110.     y = -x + -z + -w;
  111.  
  112.     u = d + w;    /* u is presumably undefined */
  113.  
  114.     x = y = z = w = 15;
  115.     x = (y + z) - (w - x);
  116.     x = (y + z) + (z=w - x);
  117.     w = (w=z + x) - (w=y + z);
  118.  
  119.     /* and now put a different cast on it */
  120.     x = (int) x;
  121.     x = (int) a + y - ((int) b) + z; 
  122.     x = (int)(char) x;
  123.     a = (char) x + b - (c &= 5);
  124.     a = (char) z;
  125.     a &= (char) y;
  126.     a &= (char) (y = x + 5);
  127.     x &= (int) (a = b + 5);
  128.     x = (int) ((a = (char) b) + '\001');
  129.     a = (int) a;    /* mixed mode */
  130.     u = (int) a;    /* our undefined friend */
  131.     x = (int) (x + u);
  132.     x = (int) (x + (char) u);
  133.  
  134.     /* miscellaneous */
  135.     x = sizeof(int);
  136.     x = sizeof(a);
  137.     x = sizeof(struct abc*);
  138.     x = sizeof(long);
  139.     x = sizeof(long *);
  140. }
  141.  
  142. bad_assignments()
  143. {
  144.     int x,y;
  145.     char a, b, c;
  146.  
  147.     x = ((int)(char)) x;
  148.     x = ((int)(char) x) + y - 1;
  149.  
  150.     /* I wonder about these forms ... */
  151.     a = b ++ c;
  152.     a = b + +c;
  153.     a = b -- c;
  154.     a = b - -c;
  155.     a = b - - c;
  156.     a = b+++c;
  157.     a = b + ++c;
  158.     a = b---c;
  159.     a = +b;
  160. }
  161.