From 49dec86a5da0b71ac1b12edfafeb91e3d7eed7a9 Mon Sep 17 00:00:00 2001
From: oddcoder <ahmedsoliman@oddcoder.com>
Date: Fri, 22 May 2020 23:28:28 +0200
Subject: [PATCH] Unit test arbitrarily long ungetc()

---
 tests/Makefile                              |  1 +
 tests/expected/stdio/ungetc_multiple.stderr |  0
 tests/expected/stdio/ungetc_multiple.stdout |  1 +
 tests/stdio/ungetc_multiple.c               | 27 +++++++++++++++++++++
 4 files changed, 29 insertions(+)
 create mode 100644 tests/expected/stdio/ungetc_multiple.stderr
 create mode 100644 tests/expected/stdio/ungetc_multiple.stdout
 create mode 100644 tests/stdio/ungetc_multiple.c

diff --git a/tests/Makefile b/tests/Makefile
index a6f967a87..00facce3b 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -42,6 +42,7 @@ EXPECT_NAMES=\
 	stdio/setvbuf \
 	stdio/sprintf \
 	stdio/printf_space_pad \
+	stdio/ungetc_multiple \
 	stdlib/a64l \
 	stdlib/alloc \
 	stdlib/atof \
diff --git a/tests/expected/stdio/ungetc_multiple.stderr b/tests/expected/stdio/ungetc_multiple.stderr
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/expected/stdio/ungetc_multiple.stdout b/tests/expected/stdio/ungetc_multiple.stdout
new file mode 100644
index 000000000..3b18e512d
--- /dev/null
+++ b/tests/expected/stdio/ungetc_multiple.stdout
@@ -0,0 +1 @@
+hello world
diff --git a/tests/stdio/ungetc_multiple.c b/tests/stdio/ungetc_multiple.c
new file mode 100644
index 000000000..611430489
--- /dev/null
+++ b/tests/stdio/ungetc_multiple.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+int main() {
+  ungetc('\n', stdin);
+  ungetc('d', stdin);
+  ungetc('l', stdin);
+  ungetc('r', stdin);
+  ungetc('o', stdin);
+  ungetc('w', stdin);
+  ungetc(' ', stdin);
+  ungetc('o', stdin);
+  ungetc('l', stdin);
+  ungetc('l', stdin);
+  ungetc('e', stdin);
+  ungetc('h', stdin);
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+}
-- 
GitLab