summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rw-r--r--float.c48
-rw-r--r--iso646.c29
-rw-r--r--limits.c39
-rw-r--r--main.c8
5 files changed, 124 insertions, 5 deletions
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 <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();
+}
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(); */