From 8396c02590a6a0d34d0ba667c5e5cff4860d1ebc Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Fri, 1 Mar 2019 19:30:30 -0500 Subject: basic tests for , , and --- Makefile | 5 ++++- float.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ iso646.c | 29 +++++++++++++++++++++++++++++ limits.c | 39 +++++++++++++++++++++++++++++++++++++++ main.c | 8 ++++---- 5 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 float.c create mode 100644 iso646.c create mode 100644 limits.c diff --git a/Makefile b/Makefile index 3176f97..34d6f4b 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/float.c b/float.c new file mode 100644 index 0000000..e93c3c9 --- /dev/null +++ b/float.c @@ -0,0 +1,48 @@ +#include +#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 +#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 +#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(); +} diff --git a/main.c b/main.c index 55fcfcc..42e8793 100644 --- a/main.c +++ b/main.c @@ -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(); */ -- cgit v1.2.1