To run the test suite, change to this directory and run
"./runtest".  To only run the test cases for particular applets,
specify them as parameters to runtest.

The test cases for an applet reside in the subdirectory of the
applet name.  The name of the test case should be the assertion
that is tested.  The test case should be a shell fragment that
returns successfully if the test case passes, and unsuccessfully
otherwise.  If the test case is known to fail, it should be marked
as such by including the string "XFAIL" in a comment.  If a
certain feature must be enabled for it to pass, it should indicate
that by including the string "UNSUPPORTED: " followed by the
feature name in a comment.

For the entire testsuite, the copyright is as follows:

Copyright (C) 2001 Matt Kraai

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
