Reliability in the face of complexity is the real challenge of software development. I discuss this in this paper.
Download and explode the test cases
The current version of the test suite can be downloaded from here in unix and here in windows format. Explode this file into its own directory, perhaps one called tests. Individual test cases can be studied to see how to set up the code.
The readme_tests.htm file describes several Perl scripts that are included in the documentation.
The "assert" commands within the test suite
The code uses extensive self-checking during a calculation to insure that the results are valid. All of the test cases include assert commands in the input stream. These have nothing to do with the simulation or the astrophysics, but instead provide a way for the code to do extensive automatic self-checks. The Perl script tests_remove_asserts.pl will remove all the asserts if you wish to reuse these scripts for other purposes.
A large code must be completely checked every time anything is changed. The assert commands tell the code what answer to expect, based either on analytical or previous results. They allow the code to confirm that it has found the correct answer, and a distinctive string is printed if the right answer is not obtained. The Perl script checkall.pl will examine all output files to search for failed asserts, which indicated a problem.
The asserts should not be included in actual calculations. They are only here for verification.
Run the test cases
The test suite includes Perl scripts to run all the test cases and then check for problems. These are files that have names *.pl.
The runall.pl script will run all the input files. You will need to edit runall.pl so that the string "$exe" points to your executable for Cloudy. This test suite takes about seven hours on my 2GHz MHz pc, so you might want to do this overnight.
Check the results
If anything goes wrong the code will announce this at the end of the calculation by printing a line that includes the string "botched asserts". If the code crashes then the normal end-of-calculation string will not be printed.
The test distribution includes the Perl script checkall.pl that will check for problems once the test cases have been computed. Run this script and notice what it says.
The tests cases atlas.in costar.in costarhalo.in rauch.in and werner.in require the compiled stellar atmosphere files. These are not expected to execute properly if you choose not to set up the stellar atmospheres.
Test cases output
These files contain the results of the test suite. Results are available for
the following platforms,
Note that the code that generated this output did not have the hot fixes included.
Next step, apply any hot fixes.