Testing Packages (Enhancement to CleanSlate)
- To: mathgroup at smc.vnet.net
- Subject: [mg17059] Testing Packages (Enhancement to CleanSlate)
- From: hanssen at zeiss.de
- Date: Fri, 23 Apr 1999 02:32:04 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Hi, MathGroup,
When writing an testing packages, one often has to load the
package to be tested. There is a package CleanSlate, which helps
a lot. Using it, you frequently see yourself typing
CleanSlate["mypackage`"];
Needs["mypackage`];
This is a little inconvenient, because you have to enclose
your context name in quotes and also you have to add the
context-mark character (the accent-grave). To overcome
this inconvenience, I have modified the CleanSlate package.
I always load the modified CleanSlate-package through Needs
from init.m:
The beginning of CleanSlate now reads
BeginPackage["CleanSlate`"];
Unprotect[Again,CleanSlate,CleanSlateExcept,ClearInOut]; (* add Again *)
Again::usage=
"Again[context] is the same as (CleanSlate[context]; Needs[context];) - \n
Instead of a context-name enclosed in quotes it also accepts the \n
context-name without the quotes and the context-mark at the end.";
Add the following to the body of the package CleanSlate, i.e. after
Begin["`Private`"];
(*************** Again **************)
Again[context_] :=
Module[{aa}
,(If[Head[context]===Symbol
,CleanSlate[aa=ToString[context]<>"`"];
Needs[aa]
,CleanSlate[context]; Needs[context]
];
)
]; (* Again *)
The statement at the very end just before EndPackage[] now reads:
Protect[Again, ClearInOut, CleanSlate, CleanSlateExcept]; (* add Again *)
With these modifications, one can easily modify a package under test
with a standard editor (e.g. PFE), reload and test it. This is done by
calling Again[mypackage] (provided mypackage is just a symbol
which has not been assigned a value).
If you have syntactical errors in the package (e.g. unbalanced comments,
unbalanced quotes etc), then you have to "execute" the statement
EndPackage[];
in the notebook, where test your package, before calling
Again[context].
kind regards
Dipl.-Math. Adelbert Hanszen