= Testing = == Regression Testing == The {{{war}}} test driver automates regression testing. {{{ $ make war }}} or {{{ $ bin/war test }}} This tool descends into the given directory, and runs any tests it finds. * For subdirectories containing a {{{Main.ds}}} file, it builds and executes that program. The resulting binary is named {{{Main.bin}}} and placed in the same directory as the source. If there is also a {{{Main.stdout}}} file, then checks the program's output against this expected output. If there is any difference it prompts the user whether to stop testing, or update the expected output. * For subdirectories that do not contain a {{{Main.ds}}}, it simply compiles all the source files there. * If a subdirectory contains a {{{Module.error.check}}} file, where {{{Module}}} is some arbitrary module name, then compilation is expected to fail with the error message given by that check file. [[br]] == Demos == The programs in `test/93-Graphics` can open up X windows and display pretty pictures. When run with no arguments they dump their final frame as a PPM image to stdout. When run with "-x" they open up an X window an display the animation in real-time. {{{ $ bin/war test/93-Graphics +compway opt -O $ test/93-Graphics/Styrene/Main.bin -x }}} You can also compile and run demos individually with something like: {{{ $ bin/ddc -O -make demo/Graphics/Styrene/Main.ds -o styrene $ ./styrene -x }}} Note that DDC's {{{-make}}} flag will rebuild any module needed by the program being compiled, including modules in the base libraries. This can be useful when working on the libraries, or on DDC's {{{-make}}} support. For example, we can clean out all the binaries in the {{{library}}} and {{{demo}}} directories with: {{{ $ make cleanLibrary }}} We can then rebuild the whole {{{styrene}}} program with: {{{ $ bin/ddc -O -make demo/Graphics/Styrene/Main.ds -o styrene }}}