# RCOMP test code

Test procedures can be run from MNT TEST. This invokes TEST.CMD in the test code directory. The procedure takes a parameter ALL to run all of the tests or a number to run a specific test. TEST HELP says what each test does briefly. Here is a more complete explanation.

## Tests

### Test 1

This performs various compilations of resource files and checks to see if the results are the same as in previous versions. Unfortunately, because the comparison utilities don't return a flag, results have to be inspected by eye. The test procedure tells you which files to inspect.

Note that some compiler warnings about deprecated non-unicode character values will be output during this test.

### Test 2

This compiles a test source file containing deliberate errors. Because the compiler usually stops when it encounters an error, this is done by repeatedly compiling the same source with different preprocessor flags set to enable the offending text. This is driven by a file called TEST2.DAT which contains the flags and a brief description of their effects.

Unfortunately (again), the error messages from the compiler can't be easily redirected for automated testing so they have to be inspected by eye. The output is adjusted to keep this uncluttered on the screen.

The current set of errors is as follows:

STUPID
  Tries to define an unknown character set. This just generates a warning mesage.
ERROR_INVALID_MEMBER
  A resource member keyword is mis-spelled. This gives a wonderful "Label not found" error.
MAIN_SYNTAX_ERROR_1
  STRUCT is mis-spelled as STRICT, giving a "Syntax error".
H_SYNTAX_ERROR_1
  As above but in an include file, so you can see that the filename where the error occurs is reported correctly.
ERROR_MISSING_STRUCT
  Leave out a struct definition. This gives another "label not found" message.