home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 375.lha / IncrStorageManager_v1.0 / DynTest.mod < prev    next >
Text File  |  1990-05-02  |  6KB  |  196 lines

  1. MODULE DynTest;
  2.  
  3. (* Product: Incremental Storage Manager
  4.  
  5.    Version: 1.0
  6.  
  7.    Author:
  8.         Daniel B. Hankins
  9.         143 Montgomery Street
  10.         Poughkeepsie, NY 12601
  11.         dan-hankins@cup.portal.com
  12.  
  13.    Creation Date: 1989
  14.  
  15.    Release  Date: November 21, 1989
  16.  
  17.    Notice of Intellectual Property:
  18.         This material is *NOT COPYRIGHTED*.  By this notice, I hereby place
  19.    this program and all its parts in the public domain, under the definitions
  20.    and restrictions of United States law.
  21.  
  22.    History of Revisions:
  23.         None yet.
  24. *)
  25.  
  26. FROM SYSTEM        IMPORT ADDRESS;
  27. FROM DOSProcessHandler IMPORT Exit;
  28. FROM RandomNumbers IMPORT Seed, Random;
  29. FROM InOut         IMPORT WriteString, WriteCard, WriteLn;
  30. FROM LongInOut     IMPORT WriteLongCard;
  31.  
  32. IMPORT DynamicItem;
  33. IMPORT Strings;
  34.  
  35. (*
  36. FROM Debug         IMPORT DebugFlag;
  37. *)
  38.  
  39.  
  40. TYPE
  41.   Transparent = POINTER TO LONGCARD;
  42.   StrPtr = POINTER TO Strings.String;
  43.  
  44. CONST
  45.   ArraySize = 50;
  46.  
  47. VAR
  48.   ArrayIndex: CARDINAL;
  49.   TempIndex, Index: LONGCARD;
  50.   TestArray: ARRAY [1..ArraySize] OF RECORD
  51.                                        count: CARDINAL;
  52.                                        size:  LONGCARD;
  53.                                        ref:   DynamicItem.Object;
  54.                                      END;
  55.   ItemVar: Transparent;
  56.   Prose, Temp1, Temp2: Strings.String;
  57.   Comp: Strings.CompareResults;
  58.   NewString: StrPtr;
  59.  
  60.  
  61. PROCEDURE DoesNothing(NotUsed: ADDRESS);
  62. BEGIN
  63. END DoesNothing;
  64.  
  65.  
  66. BEGIN
  67.   TempIndex := 1;
  68.   Seed(314);
  69.   Prose := 'Four-score-and-seven-years-ago,-our-forefathers...Dont-sell';
  70.   Strings.Concat(Prose, 
  71.            '-Shell-Sort-short.-Did-I-say-something-wrong?--Pardon-me-for',
  72.            Prose);
  73.   Strings.Concat(Prose,
  74.            '-breathing-which-I-never-do-anyway-so-I-dont-know-why-I-bother',
  75.            Prose);
  76.   Strings.Concat(Prose,
  77.            '-to-say-it-oh-god-im-so-depressed.--Life?-Dont-talk-to-me-about',
  78.            Prose);
  79.  
  80.   FOR ArrayIndex := 1 TO ArraySize DO
  81.     TestArray[ArrayIndex].ref      := DynamicItem.NilObject();
  82.     TestArray[ArrayIndex].count    := 0;
  83.     TestArray[ArrayIndex].size     := LONG(0);
  84.   END;
  85.   WriteString("Finished initialization.");
  86.   WriteLn;
  87.   FOR Index := 1 TO 2500 DO
  88.     IF FALSE = TRUE THEN
  89.       (* DebugFlag := TRUE; *)
  90.     END;
  91.     ArrayIndex := Random(ArraySize) + 1;
  92.     WriteLn;
  93.     IF Random(TestArray[ArrayIndex].count+2) = 0 THEN
  94.       IF TestArray[ArrayIndex].count > 0 THEN
  95.         WriteLongCard(Index + 25 * (TempIndex - 1), 5); WriteString(': ');
  96.         WriteString("Adding ref to item");
  97.         WriteCard(ArrayIndex,10); WriteString("."); WriteLn;
  98.  
  99.         ItemVar := Transparent(TestArray[ArrayIndex].ref);
  100.         TestArray[ArrayIndex].ref :=
  101.           DynamicItem.Ref(TestArray[ArrayIndex].ref);
  102.         TestArray[ArrayIndex].count := TestArray[ArrayIndex].count + 1;
  103.  
  104.         NewString := DynamicItem.Access(TestArray[ArrayIndex].ref);
  105.         Strings.Assign(Temp1, NewString^);
  106.         Strings.Assign(Temp2,'');
  107.         Strings.Copy(Prose, 0,
  108.                      SHORT(TestArray[ArrayIndex].size)-1, Temp2);
  109.         Comp := Strings.Compare(Temp1, Temp2);
  110.         IF NOT(Comp = Strings.Equal) THEN
  111.           WriteString("Error in comparison."); WriteLn();
  112.           Exit(0);
  113.         END;
  114.  
  115.         WriteString("Ref, Item, Count, Size =");
  116.         WriteLongCard(LONGCARD(TestArray[ArrayIndex].ref),10);
  117.         ItemVar := Transparent(TestArray[ArrayIndex].ref);
  118.         WriteLongCard(ItemVar^,11);
  119.         WriteCard(TestArray[ArrayIndex].count,10);
  120.         WriteLongCard(TestArray[ArrayIndex].size,10);
  121.         WriteLn;
  122.       ELSE
  123.         WriteLongCard(Index + 25 * (TempIndex - 1), 5); WriteString(': ');
  124.         WriteString("Getting new item");
  125.         WriteCard(ArrayIndex,10); WriteString("."); WriteLn;
  126.  
  127.         TestArray[ArrayIndex].size := LONG(Random(200) + 1);
  128.  
  129.         WriteString("Size is"); WriteLongCard(TestArray[ArrayIndex].size, 10);
  130.         WriteLn;
  131.  
  132.         ItemVar := Transparent(TestArray[ArrayIndex].ref);
  133.         TestArray[ArrayIndex].ref :=
  134.           DynamicItem.New(TestArray[ArrayIndex].size, DoesNothing, DoesNothing);
  135.  
  136.         IF NOT(DynamicItem.Nil(TestArray[ArrayIndex].ref)) THEN
  137.           NewString := StrPtr(DynamicItem.Access(TestArray[ArrayIndex].ref));
  138.           Strings.Copy(Prose, 0,
  139.                        SHORT(TestArray[ArrayIndex].size)-1, NewString^);
  140.  
  141.           WriteString("Got new item."); WriteLn;
  142.  
  143.           TestArray[ArrayIndex].count := TestArray[ArrayIndex].count + 1;
  144.  
  145.           WriteString("Ref, Item, Count, Size =");
  146.           WriteLongCard(LONGCARD(TestArray[ArrayIndex].ref),10);
  147.           ItemVar := Transparent(TestArray[ArrayIndex].ref);
  148.           WriteLongCard(ItemVar^,11);
  149.           WriteCard(TestArray[ArrayIndex].count,10);
  150.           WriteLongCard(TestArray[ArrayIndex].size,10);
  151.           WriteLn;
  152.         ELSE
  153.           WriteString("No more space!");
  154.           WriteLn;
  155.           Exit(0);
  156.         END;
  157.       END;
  158.     ELSE
  159.       IF TestArray[ArrayIndex].count > 0 THEN
  160.         WriteLongCard(Index + 25 * (TempIndex - 1), 5); WriteString(': ');
  161.         WriteString("Getting rid of item");
  162.         WriteCard(ArrayIndex,10); WriteString("."); WriteLn;
  163.  
  164.         NewString := DynamicItem.Access(TestArray[ArrayIndex].ref);
  165.         Strings.Assign(Temp1, NewString^);
  166.         Strings.Assign(Temp2,'');
  167.         Strings.Copy(Prose, 0,
  168.                      SHORT(TestArray[ArrayIndex].size)-1, Temp2);
  169.         Comp := Strings.Compare(Temp1, Temp2);
  170.         IF NOT(Comp = Strings.Equal) THEN
  171.           WriteString("Error in comparison."); WriteLn();
  172.           Exit(0);
  173.         END;
  174.  
  175.         ItemVar := Transparent(TestArray[ArrayIndex].ref);
  176.         DynamicItem.Dispose(TestArray[ArrayIndex].ref);
  177.         TestArray[ArrayIndex].count := TestArray[ArrayIndex].count - 1;
  178.  
  179.         WriteString("Ref, Item, Count, Size =");
  180.         WriteLongCard(LONGCARD(TestArray[ArrayIndex].ref),10);
  181.         ItemVar := Transparent(TestArray[ArrayIndex].ref);
  182.         WriteLongCard(ItemVar^,11);
  183.         WriteCard(TestArray[ArrayIndex].count,10);
  184.         WriteLongCard(TestArray[ArrayIndex].size,10);
  185.         WriteLn;
  186.       ELSE
  187.         WriteString("No item yet at index");
  188.         WriteCard(ArrayIndex,10); WriteString("."); WriteLn;
  189.       END;
  190.     END;
  191.   END;
  192.   DynamicItem.DisposeAll();
  193.   WriteString("Finished test.");
  194.   WriteLn;
  195. END DynTest.
  196.