Standard C Library Tests

From Open Watcom

Jump to: navigation, search

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:

  1. Strictly speaking, the test is incorrect. It expects EILSEQ to be defined, but that was not part of original ANSI C.
  2. Failure is caused by incorrect ("too accurate") conversion of FLT_MIN to binary double.
  3. The SIGFPE signal has incorrect default handling.
  4. Failure is caused by long double handling by the runtime not matching compiler behaviour.
  5. Surprisingly many runtime libraries have problems with the %U specifier of strftime().
Personal tools