From 4db9f0f865c205cdcbbb184e4e530c3f1dbaa263 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Sun, 19 Nov 2017 19:09:52 +0000 Subject: [PATCH] add fgetwc regression test --- src/regression/fgetwc-buffering.c | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/regression/fgetwc-buffering.c diff --git a/src/regression/fgetwc-buffering.c b/src/regression/fgetwc-buffering.c new file mode 100644 index 0000000..a73ad54 --- /dev/null +++ b/src/regression/fgetwc-buffering.c @@ -0,0 +1,39 @@ +// decode across buffer boundary +#include +#include +#include +#include +#include +#include +#include "test.h" + +#define A(c) do { if (!(c)) t_error(#c" failed\n"); } while(0) + +int main() +{ + t_setutf8(); + + int p[2]; + A(pipe(p) == 0); + A(write(p[1], "x\340\240", 3) == 3); + A(dup2(p[0], 0) == 0); + wint_t wc; + wc = fgetwc(stdin); + A(wc == 'x'); + A(write(p[1], "\200", 1) == 1); + close(p[1]); + + errno = 0; + wc = fgetwc(stdin); + if (wc != 0x800) + t_error("wanted 0x800, got 0x%x\n", (unsigned)wc); + + wc = fgetwc(stdin); + if (wc != WEOF) + t_error("wanted WEOF, got 0x%x\n", (unsigned)wc); + if (errno != 0) + t_error("wanted errno==0, got %d (%s)\n", errno, strerror(errno)); + A(feof(stdin)!=0); + A(ferror(stdin)==0); + return t_status; +} -- 2.20.1