diff options
author | Jakob Kaivo <jkk@ung.org> | 2019-03-01 21:36:22 -0500 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2019-03-01 21:36:22 -0500 |
commit | 306613c5a17842fc6967f9a9a3722a63767c3b75 (patch) | |
tree | bf74e7e66e8e6167292dd92feb2dd1d6cee4ba85 | |
parent | 3289aef6dd90453f46f0ba3102ae184734374dc7 (diff) |
skeleton tests for all C99 headers
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | fenv.c | 19 | ||||
-rw-r--r-- | inttypes.c | 26 | ||||
-rw-r--r-- | main.c | 14 | ||||
-rw-r--r-- | stdint.c | 44 | ||||
-rw-r--r-- | tgmath.c | 18 | ||||
-rw-r--r-- | wchar.c | 27 | ||||
-rw-r--r-- | wctype.c | 22 |
8 files changed, 171 insertions, 7 deletions
@@ -2,14 +2,18 @@ include config.mk +CC=c99 CFLAGS=-g -I$(INCLUDEDIR) -nostdinc -fno-builtin LDFLAGS=-L$(LIBDIR) $(LIBS) TESTOBJS=main.o \ assert.o \ + complex.o \ ctype.o \ errno.o \ + fenv.o \ float.o \ + inttypes.o \ iso646.o \ limits.o \ locale.o \ @@ -19,10 +23,14 @@ TESTOBJS=main.o \ stdarg.o \ stdbool.o \ stddef.o \ + stdint.o \ stdio.o \ stdlib.o \ string.o \ + tgmath.o \ time.o \ + wchar.o \ + wctype.o \ test.o testlibc: $(TESTOBJS) $(LIBDIR)/libc.a @@ -0,0 +1,19 @@ +#if defined __STDC_VERSION__ && 199901L <= __STDC_VERSION__ +#include <fenv.h> +#include "test.h" + +void test_fenv_h(void) +{ + fenv_t fenv; + fexcept_t fexcept; + + testing_header("fenv.h"); + + testing_end(); +} + +#else +void test_fenv_h(void) +{ +} +#endif diff --git a/inttypes.c b/inttypes.c new file mode 100644 index 0000000..0d88d9b --- /dev/null +++ b/inttypes.c @@ -0,0 +1,26 @@ +#if defined __STDC_VERSION__ && 199901L <= __STDC_VERSION__ +#include <wchar.h> +#include <inttypes.h> +#include "test.h" + +void test_inttypes_h(void) +{ + imaxdiv_t imaxdiv; + char *endptr; + + testing_header("inttypes.h"); + + test_true(imaxabs(-1) == 1); + + intmax_t im = strtoimax("100000000q", &endptr, 0); + test_true(im == 100000000); + test_true(*endptr == 'q'); + + testing_end(); +} + +#else +void test_inttypes_h(void) +{ +} +#endif @@ -40,12 +40,12 @@ int main(int argc, char *argv[]) } } - /* test_complex_h(); */ + test_complex_h(); test_ctype_h(); test_errno_h(); - /* test_fenv_h(); */ + test_fenv_h(); test_float_h(); - /* test_inttypes_h(); */ + test_inttypes_h(); test_iso646_h(); test_limits_h(); test_locale_h(); @@ -57,17 +57,17 @@ int main(int argc, char *argv[]) /* test_stdatomic_h(); */ test_stdbool_h(); test_stddef_h(); - /* test_stdint_h(); */ + test_stdint_h(); test_stdio_h(); test_stdlib_h(); /* test_stdnoreturn_h(); */ test_string_h(); - /* test_tgmath_h(); */ + test_tgmath_h(); /* test_threads_h(); */ test_time_h(); /* test_uchar_h(); */ - /* test_wchar_h(); */ - /* test_wctype_h(); */ + test_wchar_h(); + test_wctype_h(); printf("Total: %u passed, %u failed\n", total_passed, total_failed); return 0; diff --git a/stdint.c b/stdint.c new file mode 100644 index 0000000..6214bdd --- /dev/null +++ b/stdint.c @@ -0,0 +1,44 @@ +#if defined __STDC_VERSION__ && 199901L <= __STDC_VERSION__ +#include <stdint.h> +#include "test.h" + +void test_stdint_h(void) +{ + intptr_t intptr; + uintptr_t uintptr; + intmax_t intmax; + uintmax_t uintmax; + + testing_header("inttypes.h"); + + test_min(INTPTR_MIN, 0); + test_min(INTPTR_MAX, 0); + test_min(UINTPTR_MAX, 0); + + test_min(INTMAX_MIN, 0); + test_min(INTMAX_MAX, 0); + test_min(UINTMAX_MAX, 0); + + test_min(PTRDIFF_MIN, 0); + test_min(PTRDIFF_MAX, 0); + test_min(PTRDIFF_MAX, 0); + + test_min(SIG_ATOMIC_MIN, 0); + test_min(SIG_ATOMIC_MAX, 0); + + test_min(SIZE_MAX, 0); + + test_min(WCHAR_MIN, 0); + test_min(WCHAR_MAX, 0); + + test_min(WINT_MIN, 0); + test_min(WINT_MAX, 0); + + testing_end(); +} + +#else +void test_stdint_h(void) +{ +} +#endif diff --git a/tgmath.c b/tgmath.c new file mode 100644 index 0000000..2f4e2d8 --- /dev/null +++ b/tgmath.c @@ -0,0 +1,18 @@ +#if defined __STDC_VERSION__ && 199901L <= __STDC_VERSION__ +#include <tgmath.h> +#include "test.h" + +void test_tgmath_h(void) +{ + testing_header("tgmath.h"); + + /* I'm not really sure how to test this accurately in C alone */ + + testing_end(); +} + +#else +void test_tgmath_h(void) +{ +} +#endif @@ -0,0 +1,27 @@ +#if defined __STDC_VERSION__ +#include <wchar.h> +#include "test.h" + +void test_wchar_h(void) +{ + wchar_t wchar; + size_t size; + mbstate_t mbstate; + wint_t wint; + struct tm *tm; + + testing_header("wchar.h"); + + test_true(NULL == 0); + test_min(WCHAR_MIN, 0); + test_min(WCHAR_MAX, 0); + test_defined(WEOF); + + testing_end(); +} + +#else +void test_wchar_h(void) +{ +} +#endif diff --git a/wctype.c b/wctype.c new file mode 100644 index 0000000..69cef8b --- /dev/null +++ b/wctype.c @@ -0,0 +1,22 @@ +#if defined __STDC_VERSION__ +#include <wctype.h> +#include "test.h" + +void test_wctype_h(void) +{ + wint_t wint; + wctrans_t wctrans; + wctype_t wctype; + + testing_header("wctype.h"); + + test_defined(WEOF); + + testing_end(); +} + +#else +void test_wctype_h(void) +{ +} +#endif |