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 >
Wrap
Text File
|
1990-05-02
|
6KB
|
196 lines
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.