Browse Source

Added some tests for stdio

Tom Almeida 7 years ago
parent
commit
b0492eba84
7 changed files with 45 additions and 0 deletions
  1. 3 0
      tests/.gitignore
  2. 4 0
      tests/Makefile
  3. 12 0
      tests/getc_unget.c
  4. 11 0
      tests/stdio/all.c
  5. 11 0
      tests/stdio/fwrite.c
  6. 1 0
      tests/stdio/fwrite.out
  7. 3 0
      tests/stdio/stdio.in

+ 3 - 0
tests/.gitignore

@@ -15,6 +15,7 @@
 /fsync
 /ftruncate
 /getid
+/getc_unget
 /link
 /math
 /mem
@@ -27,6 +28,8 @@
 /sprintf
 /stdlib/strtol
 /stdlib/a64l
+/stdio/fwrite
+/stdio/all
 /string/strncmp
 /string/strcspn
 /string/strchr

+ 4 - 0
tests/Makefile

@@ -12,6 +12,8 @@ EXPECT_BINS=\
 	fcntl \
 	fsync \
 	ftruncate \
+	getid \
+	getc_unget \
 	link \
 	math \
 	mem \
@@ -20,6 +22,8 @@ EXPECT_BINS=\
 	rmdir \
 	sleep \
 	sprintf \
+	stdio/fwrite \
+	stdio/all \
 	stdlib/strtol \
 	stdlib/a64l \
 	string/strncmp \

+ 12 - 0
tests/getc_unget.c

@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int main(int argc, char ** argv) {
+	ungetc('h', stdin);
+	char c;
+	if ((c = getchar()) == 'h') {
+		printf("Worked!\n");
+		return 0;
+	}
+	printf("failed :( %c\n", c);
+	return 0;
+}

+ 11 - 0
tests/stdio/all.c

@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char ** argv) {
+	FILE *f = fopen("stdio/stdio.in", "r");
+	printf("%c\n", fgetc(f));
+	ungetc('H', f);
+	char *in = malloc(30);
+	printf("%s\n", fgets(in, 30, f));
+	return 0;
+}

+ 11 - 0
tests/stdio/fwrite.c

@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+int main(int argc, char ** argv) {
+	FILE *f = fopen("stdio/fwrite.out", "w");
+	char *in = "Hello World!";
+	fputs(in, f); // calls fwrite, helpers::fwritex, internal::to_write and internal::stdio_write
+	fclose(f);
+	return 0;
+}

+ 1 - 0
tests/stdio/fwrite.out

@@ -0,0 +1 @@
+Hello World!

+ 3 - 0
tests/stdio/stdio.in

@@ -0,0 +1,3 @@
+Hello World!
+
+Line 2