home *** CD-ROM | disk | FTP | other *** search
- MODULE DynTest;
-
- (* Product: Incremental Storage Manager
-
- Version: 1.0
-
- Author:
- Daniel B. Hankins
- 143 Montgomery Street
- Poughkeepsie, NY 12601
- dan-hankins@cup.portal.com
-
- Creation Date: 1989
-
- Release Date: November 21, 1989
-
- Notice of Intellectual Property:
- This material is *NOT COPYRIGHTED*. By this notice, I hereby place
- this program and all its parts in the public domain, under the definitions
- and restrictions of United States law.
-
- History of Revisions:
- None yet.
- *)
-
- FROM SYSTEM IMPORT ADDRESS;
- FROM DOSProcessHandler IMPORT Exit;
- FROM RandomNumbers IMPORT Seed, Random;
- FROM InOut IMPORT WriteString, WriteCard, WriteLn;
- FROM LongInOut IMPORT WriteLongCard;
-
- IMPORT DynamicItem;
- IMPORT Strings;
-
- (*
- FROM Debug IMPORT DebugFlag;
- *)
-
-
- TYPE
- Transparent = POINTER TO LONGCARD;
- StrPtr = POINTER TO Strings.String;
-
- CONST
- ArraySize = 50;
-
- VAR
- ArrayIndex: CARDINAL;
- TempIndex, Index: LONGCARD;
- TestArray: ARRAY [1..ArraySize] OF RECORD
- count: CARDINAL;
- size: LONGCARD;
- ref: DynamicItem.Object;
- END;
- ItemVar: Transparent;
- Prose, Temp1, Temp2: Strings.String;
- Comp: Strings.CompareResults;
- NewString: StrPtr;
-
-
- PROCEDURE DoesNothing(NotUsed: ADDRESS);
- BEGIN
- END DoesNothing;
-
-
- BEGIN
- TempIndex := 1;
- Seed(314);
- Prose := 'Four-score-and-seven-years-ago,-our-forefathers...Dont-sell';
- Strings.Concat(Prose,
- '-Shell-Sort-short.-Did-I-say-something-wrong?--Pardon-me-for',
- Prose);
- Strings.Concat(Prose,
- '-breathing-which-I-never-do-anyway-so-I-dont-know-why-I-bother',
- Prose);
- Strings.Concat(Prose,
- '-to-say-it-oh-god-im-so-depressed.--Life?-Dont-talk-to-me-about',
- Prose);
-
- FOR ArrayIndex := 1 TO ArraySize DO
- TestArray[ArrayIndex].ref := DynamicItem.NilObject();
- TestArray[ArrayIndex].count := 0;
- TestArray[ArrayIndex].size := LONG(0);
- END;
- WriteString("Finished initialization.");
- WriteLn;
- FOR Index := 1 TO 2500 DO
- IF FALSE = TRUE THEN
- (* DebugFlag := TRUE; *)
- END;
- ArrayIndex := Random(ArraySize) + 1;
- WriteLn;
- IF Random(TestArray[ArrayIndex].count+2) = 0 THEN
- IF TestArray[ArrayIndex].count > 0 THEN
- WriteLongCard(Index + 25 * (TempIndex - 1), 5); WriteString(': ');
- WriteString("Adding ref to item");
- WriteCard(ArrayIndex,10); WriteString("."); WriteLn;
-
- ItemVar := Transparent(TestArray[ArrayIndex].ref);
- TestArray[ArrayIndex].ref :=
- DynamicItem.Ref(TestArray[ArrayIndex].ref);
- TestArray[ArrayIndex].count := TestArray[ArrayIndex].count + 1;
-
- NewString := DynamicItem.Access(TestArray[ArrayIndex].ref);
- Strings.Assign(Temp1, NewString^);
- Strings.Assign(Temp2,'');
- Strings.Copy(Prose, 0,
- SHORT(TestArray[ArrayIndex].size)-1, Temp2);
- Comp := Strings.Compare(Temp1, Temp2);
- IF NOT(Comp = Strings.Equal) THEN
- WriteString("Error in comparison."); WriteLn();
- Exit(0);
- END;
-
- WriteString("Ref, Item, Count, Size =");
- WriteLongCard(LONGCARD(TestArray[ArrayIndex].ref),10);
- ItemVar := Transparent(TestArray[ArrayIndex].ref);
- WriteLongCard(ItemVar^,11);
- WriteCard(TestArray[ArrayIndex].count,10);
- WriteLongCard(TestArray[ArrayIndex].size,10);
- WriteLn;
- ELSE
- WriteLongCard(Index + 25 * (TempIndex - 1), 5); WriteString(': ');
- WriteString("Getting new item");
- WriteCard(ArrayIndex,10); WriteString("."); WriteLn;
-
- TestArray[ArrayIndex].size := LONG(Random(200) + 1);
-
- WriteString("Size is"); WriteLongCard(TestArray[ArrayIndex].size, 10);
- WriteLn;
-
- ItemVar := Transparent(TestArray[ArrayIndex].ref);
- TestArray[ArrayIndex].ref :=
- DynamicItem.New(TestArray[ArrayIndex].size, DoesNothing, DoesNothing);
-
- IF NOT(DynamicItem.Nil(TestArray[ArrayIndex].ref)) THEN
- NewString := StrPtr(DynamicItem.Access(TestArray[ArrayIndex].ref));
- Strings.Copy(Prose, 0,
- SHORT(TestArray[ArrayIndex].size)-1, NewString^);
-
- WriteString("Got new item."); WriteLn;
-
- TestArray[ArrayIndex].count := TestArray[ArrayIndex].count + 1;
-
- WriteString("Ref, Item, Count, Size =");
- WriteLongCard(LONGCARD(TestArray[ArrayIndex].ref),10);
- ItemVar := Transparent(TestArray[ArrayIndex].ref);
- WriteLongCard(ItemVar^,11);
- WriteCard(TestArray[ArrayIndex].count,10);
- WriteLongCard(TestArray[ArrayIndex].size,10);
- WriteLn;
- ELSE
- WriteString("No more space!");
- WriteLn;
- Exit(0);
- END;
- END;
- ELSE
- IF TestArray[ArrayIndex].count > 0 THEN
- WriteLongCard(Index + 25 * (TempIndex - 1), 5); WriteString(': ');
- WriteString("Getting rid of item");
- WriteCard(ArrayIndex,10); WriteString("."); WriteLn;
-
- NewString := DynamicItem.Access(TestArray[ArrayIndex].ref);
- Strings.Assign(Temp1, NewString^);
- Strings.Assign(Temp2,'');
- Strings.Copy(Prose, 0,
- SHORT(TestArray[ArrayIndex].size)-1, Temp2);
- Comp := Strings.Compare(Temp1, Temp2);
- IF NOT(Comp = Strings.Equal) THEN
- WriteString("Error in comparison."); WriteLn();
- Exit(0);
- END;
-
- ItemVar := Transparent(TestArray[ArrayIndex].ref);
- DynamicItem.Dispose(TestArray[ArrayIndex].ref);
- TestArray[ArrayIndex].count := TestArray[ArrayIndex].count - 1;
-
- WriteString("Ref, Item, Count, Size =");
- WriteLongCard(LONGCARD(TestArray[ArrayIndex].ref),10);
- ItemVar := Transparent(TestArray[ArrayIndex].ref);
- WriteLongCard(ItemVar^,11);
- WriteCard(TestArray[ArrayIndex].count,10);
- WriteLongCard(TestArray[ArrayIndex].size,10);
- WriteLn;
- ELSE
- WriteString("No item yet at index");
- WriteCard(ArrayIndex,10); WriteString("."); WriteLn;
- END;
- END;
- END;
- DynamicItem.DisposeAll();
- WriteString("Finished test.");
- WriteLn;
- END DynTest.
-