summaryrefslogtreecommitdiff
path: root/tests/libc
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-06-10 21:29:21 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-06-10 21:29:21 +0200
commit7deaa5e3a148c143b1f9dd0f485b0200890ba87f (patch)
treeb2a7bd22d6e0e2a8c8b8e00a0a9634872db5e315 /tests/libc
parentd6d1bdfefafff50b7b6d15d218c0a188570be541 (diff)
downloadabaos-7deaa5e3a148c143b1f9dd0f485b0200890ba87f.tar.gz
abaos-7deaa5e3a148c143b1f9dd0f485b0200890ba87f.tar.bz2
also moved tests into tests/libc
Diffstat (limited to 'tests/libc')
-rw-r--r--tests/libc/Makefile31
-rw-r--r--tests/libc/test_itoa.c34
-rw-r--r--tests/libc/test_strlcpy.c15
3 files changed, 80 insertions, 0 deletions
diff --git a/tests/libc/Makefile b/tests/libc/Makefile
new file mode 100644
index 0000000..6b91c9b
--- /dev/null
+++ b/tests/libc/Makefile
@@ -0,0 +1,31 @@
+CC := gcc
+CFLAGS := -std=c99 -m32 -ffreestanding -O0 -g -Wall -Werror
+INCLUDES = -I../src
+LD := ld
+
+all: test
+
+test_strlcpy: test_strlcpy.o ../src/string.o
+ $(CC) -o test_strlcpy test_strlcpy.o ../src/string.o
+
+test_strlcpy.o: test_strlcpy.c
+ $(CC) $(CFLAGS) $(INCLUDES) -c -o test_strlcpy.o test_strlcpy.c
+
+test_itoa: test_itoa.o ../src/stdlib.o ../src/string.o
+ $(CC) -o test_itoa test_itoa.o ../src/stdlib.o ../src/string.o
+
+test_itoa.o: test_itoa.c ../src/stdlib.o
+ $(CC) $(CFLAGS) $(INCLUDES) -c -o test_itoa.o test_itoa.c
+
+../src/string.o: ../src/string.c
+ $(CC) $(CFLAGS) -c -o ../src/string.o ../src/string.c
+
+../src/stdlib.o: ../src/stdlib.c
+ $(CC) $(CFLAGS) -c -o ../src/stdlib.o ../src/stdlib.c
+
+test: test_strlcpy test_itoa
+ ./test_strlcpy
+ ./test_itoa
+
+clean:
+ -rm -f test_strlcpy test_itoa *.o
diff --git a/tests/libc/test_itoa.c b/tests/libc/test_itoa.c
new file mode 100644
index 0000000..837b77a
--- /dev/null
+++ b/tests/libc/test_itoa.c
@@ -0,0 +1,34 @@
+#include "stdlib.h"
+#include "string.h"
+#include "limits.h"
+
+int main( void )
+{
+ char *res;
+ char buf[12];
+
+ // simple conversion without sign
+ res = itoa( 568876, buf, 10 );
+ if( strcmp( buf, "568876" ) ) return 1;
+
+ // test if the returned pointer points to the buffer
+ if( strcmp( res, buf ) ) return 1;
+
+ // conversion with sign
+ res = itoa( -568876, buf, 10 );
+ if( strcmp( buf, "-568876" ) ) return 1;
+
+ // convert upper limit
+ res = itoa( INT_MAX, buf, 10 );
+ if( strcmp( buf, "2147483647" ) ) return 1;
+
+ // convert lower limit
+ res = itoa( INT_MIN+1, buf, 10 );
+ if( strcmp( buf, "-2147483647" ) ) return 1;
+
+ // convert to hex
+ res = itoa( 568876, buf, 16 );
+ if( strcmp( buf, "8AE2C" ) ) return 1;
+
+ return 0;
+}
diff --git a/tests/libc/test_strlcpy.c b/tests/libc/test_strlcpy.c
new file mode 100644
index 0000000..a23a5bc
--- /dev/null
+++ b/tests/libc/test_strlcpy.c
@@ -0,0 +1,15 @@
+#include "string.h"
+
+int main( void )
+{
+ char *s = "test_string";
+ char d[8];
+ size_t n;
+
+ // copy into too small string
+ n = strlcpy( d, s, 4 );
+ if( n != 11 ) return 1;
+ if( strcmp( d, "tes" ) ) return 1;
+
+ return 0;
+}