Standard C Library Tests
From Open Watcom
The following table summarizes the results of tests provided with the Dinkumware C library. These tests are designed to test conformance with the C standard and are intended to exercise the runtime library, not the compiler itself (except indirectly). Only ISO C functionality is exercised by the tests.
All tests were run on OS/2. Results are either "pass" for tests that passed, "fail" for tests that ran but failed to finish successfully, and "build" for tests that failed to build. The latter case is often not an error -- for instance compilers claiming conformance to C90 cannot be expected to support features specific to C95 or C99.
| Test | Header | Watcom C 10.6 | Watcom C 11.0c | Open Watcom 1.4 | Borland C++ 2.0 | IBM VAC++ 3.08 | IBM VAC++ 3.6 | GCC 3.2.2/libc05 | Open Watcom pre-1.5 |
| C90 Tests | |||||||||
| tassert | assert.h | pass | pass | pass | pass | pass | pass | pass | pass |
| tctype | ctype.h | pass | pass | pass | pass | pass | pass | fail | pass |
| terrno | errno.h | build (1) | pass | pass | build (1) | pass | pass | pass | pass |
| tfloat | float.h | fail (2) | fail (2) | fail (2) | pass | pass | pass | pass | pass |
| tlimits | limits.h | pass | pass | pass | pass | pass | pass | pass | pass |
| tlocale | locale.h | pass | pass | pass | pass | pass | fail | fail | pass |
| tmath1 | math.h | pass | fail | pass | pass | pass | pass | pass | pass |
| tmath2 | math.h | pass | pass | pass | pass | pass | pass | pass | pass |
| tsetjmp | setjmp.h | pass | pass | pass | pass | pass | pass | pass | pass |
| tsignal | signal.h | fail (3) | fail (3) | pass | pass | pass | pass | pass | pass |
| tstdarg | stdarg.h | pass | pass | pass | pass | pass | pass | pass | pass |
| tstddef | stddef.h | pass | pass | pass | pass | pass | pass | pass | pass |
| tstdio1 | stdio.h | fail (4) | fail (4) | fail (4) | pass | pass | pass | fail | fail (4) |
| tstdio2 | stdio.h | pass | pass | pass | pass | pass | fail | pass | pass |
| tstdlib | stdlib.h | pass | pass | pass | pass | pass | pass | fail | pass |
| tstring | string.h | pass | pass | pass | pass | pass | pass | fail | pass |
| ttime | time.h | fail (5) | fail (5) | fail (5) | fail (5) | fail (5) | pass | fail (5) | pass |
| C95 Tests | |||||||||
| tiso646 | iso646.h | build | pass | pass | build | build | pass | pass | pass |
| twchar1 | wchar.h | build | build | build | build | build | pass | build | fail (4) |
| twchar2 | wchar.h | build | build | build | build | build | pass | build | pass |
| twchar3 | wchar.h | build | build | build | build | build | fail | build | pass |
| twchar4 | wchar.h | build | build | build | build | build | pass | build | pass |
| twchar5 | wchar.h | build | fail (4) | fail (4) | build | fail (5) | pass | build | pass |
| twctype | wctype.h | build | build | build | build | build | pass | build | pass |
| C99 Tests | |||||||||
| tinttypes | inttypes.h | build | build | build | build | build | build | build | pass |
| tstdbool | stdbool.h | build | build | pass | build | build | build | pass | pass |
| tstdint | stdint.h | build | build | build | build | build | build | build | pass |
Notes:
- Strictly speaking, the test is incorrect. It expects
EILSEQto be defined, but that was not part of original ANSI C. - Failure is caused by incorrect ("too accurate") conversion of
FLT_MINto binary double. - The
SIGFPEsignal has incorrect default handling. - Failure is caused by
long doublehandling by the runtime not matching compiler behaviour. - Surprisingly many runtime libraries have problems with the
%Uspecifier ofstrftime().

