Test Cases

The boxes sources have a low-tech test suite in the test subdirectory. Travis CI will execute it in order to make sure that a change did not break the program.

InvocationĀ 

Start the entire suite by running make && make test from the top level directory.

Run an individual test by calling ./testrunner.sh testcase.txt from the test directory.

TestĀ Case Format

Each test case is a single file within the test subdirectory. It must follow this naming convention:

nnn_description.txt

where nnn is a three-digit number which uniquely identifies the test case. description is any short text that describes what the test case does. It must not contain spaces; use underscores instead. The file extension is always .txt.

A test case that tests a successful invocation of boxes looks like this:

:DESC
Tests invoking boxes with a fixed result box size.

:ARGS
-s 10x4
:INPUT
foo
:OUTPUT-FILTER
:EXPECTED
/********/
/* foo  */
/*      */
/********/
:EOF

Sections may be empty, e.g. if there are no arguments or there is no input. The :DESC section is optional, so it is valid if the test case starts with an :ARGS section. The order of sections is fixed.

A test case that makes sure boxes fails under certain conditions looks like this:

:DESC
Tests that the right error message is shown when the boxes
config file cannot be found.

:ARGS
-f nonexistent
:INPUT
:OUTPUT-FILTER
:EXPECTED-ERROR 1
boxes: Couldn't open config file 'nonexistent' for input.
:EOF

Note that you write :EXPECTED-ERROR instead of just :EXPECTED, and the expected return code is given after a space (in this example, it is 1).

The :OUTPUT-FILTER section can be used to give a sed script which is run on the actual output before comparing it to the expected output (example). This way, differences in output that occur because of platform differences can be filtered out. The general advice is to leave this section empty unless you are facing a situation where there is no other solution.