diff options
author | Jakob Kaivo <jkk@ung.org> | 2019-03-01 19:30:30 -0500 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2019-03-01 19:30:30 -0500 |
commit | 8396c02590a6a0d34d0ba667c5e5cff4860d1ebc (patch) | |
tree | 656562ee65309d548c57dc420d49e46e31ebddc1 | |
parent | 4db28a13a8bbc2eabe69f2b86eda392f3bd72274 (diff) |
basic tests for <limits.h>, <float.h>, and <iso646.h>
-rw-r--r-- | Makefile | 5 | ||||
-rw-r--r-- | float.c | 48 | ||||
-rw-r--r-- | iso646.c | 29 | ||||
-rw-r--r-- | limits.c | 39 | ||||
-rw-r--r-- | main.c | 8 |
5 files changed, 124 insertions, 5 deletions
@@ -5,7 +5,7 @@ include config.mk CFLAGS=-g -I$(INCLUDEDIR) -nostdinc -fno-builtin LDFLAGS=-L$(LIBDIR) $(LIBS) -TESTOBJS=main.o test.o assert.o ctype.o locale.o errno.o time.o signal.o +TESTOBJS=main.o test.o assert.o ctype.o locale.o errno.o time.o signal.o limits.o float.o iso646.o .SUFFIXES: .defs .d @@ -17,6 +17,9 @@ testlibc: $(TESTOBJS) $(LIBDIR)/libc.a assert.o: assert.c test.h ctype.o: ctype.c test.h +limits.o: limits.c test.h +float.o: float.c test.h +iso646.o: iso646.c test.h locale.o: locale.c locale.d test.h errno.o: errno.c test.h time.o: time.c test.h @@ -0,0 +1,48 @@ +#include <float.h> +#include "test.h" + +void test_float_h(void) +{ + testing_header("float.h"); + + test_min(DBL_DIG, 10); + test_defined(DBL_MANT_DIG); + test_min(DBL_MAX_10_EXP, 37); + test_defined(DBL_MAX_EXP); + test_min(DBL_MIN_10_EXP, -37); + test_defined(DBL_MIN_EXP); + + test_min(FLT_DIG, 6); + test_defined(FLT_MANT_DIG); + test_min(FLT_MAX_10_EXP, 37); + test_defined(FLT_MAX_EXP); + test_min(FLT_MIN_10_EXP, -37); + test_defined(FLT_MIN_EXP); + test_min(FLT_RADIX, 2); + + test_min(LDBL_DIG, 6); + test_defined(LDBL_MANT_DIG); + test_min(LDBL_MAX_10_EXP, 37); + test_defined(LDBL_MAX_EXP); + test_min(LDBL_MIN_10_EXP, -37); + test_defined(LDBL_MIN_EXP); + + test_min(DBL_MAX, 1e+37); + test_min(FLT_MAX, 1e+37); + test_min(LDBL_MAX, 1e+37); + + test_max(DBL_EPSILON, 1e-9); + test_max(DBL_MIN, 1e-37); + test_max(FLT_EPSILON, 1e-5); + test_max(FLT_MIN, 1e-37); + test_max(LDBL_EPSILON, 1e-9); + test_max(LDBL_MIN, 1e-37); + + #if defined __STDC_VERSION__ && 201112L <= __STDC_VERSION__ + test_min(DBL_DECIMAL_DIG, 10); + test_min(FLT_DECIMAL_DIG, 6); + test_min(LDBL_DECIMAL_DIG, 6); + #endif + + testing_end(); +} diff --git a/iso646.c b/iso646.c new file mode 100644 index 0000000..384c2bf --- /dev/null +++ b/iso646.c @@ -0,0 +1,29 @@ +#if defined __STDC_VERSION__ +#include <iso646.h> +#include "test.h" + +void test_iso646_h(void) +{ + int i = 1; + testing_header("iso646.h"); + + test_true(i and 1); + test_true(i and_eq 1); + test_true(i bitand 1); + test_true(i bitor 1); + test_true(compl i); + test_false(not i); + test_true(i not_eq 0); + test_true(0 or i); + test_true(i or_eq 1); + test_true(i xor 0); + test_true(i xor_eq 0); + + testing_end(); +} + +#else +void test_iso646_h(void) +{ +} +#endif diff --git a/limits.c b/limits.c new file mode 100644 index 0000000..d02935f --- /dev/null +++ b/limits.c @@ -0,0 +1,39 @@ +#include <limits.h> +#include "test.h" + +void test_limits_h(void) +{ + testing_header("limits.h"); + + test_min(CHAR_BIT, 8); + + test_min(SCHAR_MIN, -127); + test_min(SCHAR_MAX, 127); + + test_min(UCHAR_MAX, 255); + test_true(CHAR_MIN == SCHAR_MIN || CHAR_MIN == 0); + test_true(CHAR_MAX == UCHAR_MAX || CHAR_MAX == SCHAR_MAX); + + test_min(MB_LEN_MAX, 1); + + test_min(SHRT_MIN, -32767); + test_min(SHRT_MAX, 32767); + test_min(USHRT_MAX, 65535u); + + test_min(INT_MIN, -32767); + test_min(INT_MAX, 32767); + test_min(UINT_MAX, 65535u); + + test_min(LONG_MIN, -2147483647l); + test_min(LONG_MAX, 2147483647l); + test_min(ULONG_MAX, 4294967295ul); + + #if defined __STDC_VERSION__ && 199901L <= __STDC_VERSION__ + test_min(LLONG_MIN, -9223372036854775807ll); + test_min(LLONG_MAX, 9223372036854775807ll); + test_min(ULLONG_MAX, 18446744073709551615ull); + #endif + + + testing_end(); +} @@ -9,7 +9,7 @@ void test_errno_h(void); void test_fenv_h(void); void test_float_h(void); void test_inttypes_h(void); -void test_iso646(void); +void test_iso646_h(void); void test_limits_h(void); void test_locale_h(void); void test_math_h(void); @@ -44,10 +44,10 @@ int main(int argc, char *argv[]) test_ctype_h(); test_errno_h(); /* test_fenv_h(); */ - /* test_float_h(); */ + test_float_h(); /* test_inttypes_h(); */ - /* test_iso646(); */ - /* test_limits_h(); */ + test_iso646_h(); + test_limits_h(); test_locale_h(); /* test_math_h(); */ /* test_setjmp_h(); */ |