home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / rtl / tpl60n17 / test / settest.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-06-29  |  3.3 KB  |  127 lines

  1. VAR Box1, Box2:       ARRAY [0..255] OF BYTE;
  2.     OneWOTwo, TwoWOOne, UnionSet, InterSet, Set1, Set2, Set3: SET OF BYTE;
  3.     K, MaxNr, L, N, Low, Hi: INTEGER;
  4.  
  5. BEGIN
  6.    Randomize;
  7.  
  8.    FOR L := 0 TO 255 DO BEGIN
  9.       Box1 [L] := L;
  10.    END;
  11.    MaxNr := 255;
  12.    FOR L := 0 TO 255 DO BEGIN
  13.       K := Random (MaxNr+1);
  14.       Box2 [L] := Box1 [K];
  15.       Box1 [K] := Box1 [MaxNr];
  16.       Dec (MaxNr);
  17.    END;
  18.    Set1 := [];
  19.    Set2 := [];
  20.    FOR L := 0 TO 255 DO BEGIN
  21.       Set1 := Set1 + [Box2 [L]];
  22.       IF NOT (Box2 [L] IN Set1) THEN BEGIN
  23.          WriteLn ('error in AddElem or InSet functions');
  24.          Halt;
  25.          END;
  26.       Set2 := Set2 + [Box2 [L]] + [];
  27.    END;
  28.  
  29.    IF (Set1 <> Set2) OR (NOT (Set1 <= Set2)) OR (NOT (Set1 >= Set2)) THEN BEGIN
  30.       WriteLn ('error in relational operators 1');
  31.       Halt;
  32.       END;
  33.  
  34.    FOR L := 0 TO 255 DO BEGIN
  35.       Set1 := Set1 - [Box2 [L]];
  36.       IF Box2 [L] IN Set1 THEN BEGIN
  37.          WriteLn ('error in set difference 1');
  38.          Halt;
  39.          END;
  40.    END;
  41.  
  42.    IF Set1 <> [] THEN BEGIN
  43.       WriteLn ('error in set difference 2');
  44.       Halt;
  45.       END;
  46.  
  47.    FOR L := 1 TO 10000 DO BEGIN
  48.       REPEAT
  49.          Low := Random (256);
  50.          Hi  := Random (256);
  51.       UNTIL Low <= Hi;
  52.       Set1 := [];
  53.       Set1 := Set1 + [Low..Hi];
  54.       FOR K := 0 TO 255 DO BEGIN
  55.          IF (K IN Set1) AND ((K < Low) OR (K > Hi)) THEN BEGIN
  56.             WriteLn ('wrong set inclusion in add range');
  57.             Halt;
  58.             END;
  59.          IF (NOT (K IN Set1)) AND ((K >= Low) AND (K <= Hi)) THEN BEGIN
  60.             WriteLn ('wrong set exclusion in add range');
  61.             Halt;
  62.             END;
  63.       END;
  64.    END;
  65.  
  66.    FOR L := 1 TO 10000 DO BEGIN
  67.       Set1 := [];
  68.       Set2 := [];
  69.       FOR K := 1 TO 10 DO BEGIN
  70.          Low := Random (256);
  71.          Hi  := Random (256);
  72.          Set2:= Set1 + [Low..Hi];
  73.          IF (Set1 >= Set2) AND (Set1 <> Set2) THEN BEGIN
  74.             WriteLn ('error in relational operators 2');
  75.             Halt;
  76.             END;
  77.          IF NOT (Set1 <= Set2) THEN BEGIN
  78.             WriteLn ('error in relational operators 3');
  79.             Halt;
  80.             END;
  81.          Set1 := Set2;
  82.       END;
  83.    END;
  84.  
  85.    FOR L := 1 TO 10000 DO BEGIN
  86.       Set1 := [];
  87.       FOR K := 1 TO 10 DO BEGIN
  88.          Low := Random (256);
  89.          Hi  := Random (256);
  90.          Set1:= Set1 + [Low..Hi];
  91.       END;
  92.       Set2 := [];
  93.       FOR K := 1 TO 10 DO BEGIN
  94.          Low := Random (256);
  95.          Hi  := Random (256);
  96.          Set2:= Set2 + [Low..Hi];
  97.       END;
  98.  
  99.       OneWOTwo := Set1 - Set2;
  100.       TwoWOOne := Set2 - Set1;
  101.       InterSet := Set1 * Set2;
  102.       UnionSet := Set1 + Set2;
  103.  
  104.       IF InterSet <> (Set2 * Set1) THEN BEGIN
  105.          WriteLn ('error in set difference');
  106.          Halt;
  107.          END;
  108.  
  109.       IF (InterSet + OneWOTwo) <> Set1 THEN BEGIN
  110.          WriteLn ('error in set difference or intersection');
  111.          Halt;
  112.          END;
  113.  
  114.       IF (InterSet + TwoWOOne) <> Set2 THEN BEGIN
  115.          WriteLn ('error in set difference or intersection');
  116.          Halt;
  117.          END;
  118.  
  119.       IF (OneWOTwo + TwoWOOne + InterSet) <> UnionSet THEN BEGIN
  120.          WriteLn ('error in set union, intersection or difference');
  121.          Halt;
  122.          END;
  123.  
  124.    END;
  125. END.
  126.  
  127.