X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Ftest-freadptr.c;h=a46d65d3bb7139f6989ebd778a83fdbf94f949dc;hb=4097b52187106b6a2940d28968cfecd4e53f9b4e;hp=5c69bbe8fde2be6c770481ca5f3719ade8d55a70;hpb=5a79e1d1718961fa0fc9bee70062614fcc8ec7d9;p=gnulib.git diff --git a/tests/test-freadptr.c b/tests/test-freadptr.c index 5c69bbe8f..a46d65d3b 100644 --- a/tests/test-freadptr.c +++ b/tests/test-freadptr.c @@ -25,14 +25,13 @@ #include #include -#include "freadahead.h" - #define ASSERT(expr) \ do \ { \ if (!(expr)) \ { \ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ + fflush (stderr); \ abort (); \ } \ } \ @@ -46,80 +45,60 @@ main (int argc, char **argv) ASSERT (fread (buf, 1, nbytes, stdin) == nbytes); if (lseek (0, 0, SEEK_CUR) == nbytes) - /* An unbuffered stdio, such as BeOS or on uClibc compiled without - __STDIO_BUFFERS. Or stdin is a pipe. */ - ASSERT (freadahead (stdin) == 0); + { + /* An unbuffered stdio, such as BeOS or on uClibc compiled without + __STDIO_BUFFERS. Or stdin is a pipe. */ + size_t size; + ASSERT (freadptr (stdin, &size) == NULL); + } else { /* Normal buffered stdio. */ const char stdin_contents[] = "#!/bin/sh\n\n./test-freadptr${EXEEXT} 5 < \"$srcdir/test-freadptr.sh\" || exit 1\ncat \"$srcdir/test-freadptr.sh\" | ./test-freadptr${EXEEXT} 5 || exit 1\nexit 0\n"; const char *expected = stdin_contents + nbytes; - size_t available; + size_t available1; size_t available2; size_t available3; /* Test normal behaviour. */ - available = freadahead (stdin); - ASSERT (available != 0); - ASSERT (available <= strlen (expected)); { - const char *ptr = freadptr (stdin); + const char *ptr = freadptr (stdin, &available1); ASSERT (ptr != NULL); - ASSERT (memcmp (ptr, expected, available) == 0); + ASSERT (available1 != 0); + ASSERT (available1 <= strlen (expected)); + ASSERT (memcmp (ptr, expected, available1) == 0); } /* Test behaviour after normal ungetc. */ ungetc (fgetc (stdin), stdin); - available2 = freadahead (stdin); - ASSERT (/* available2 == available - 1 || */ available2 == available); -#if 0 - if (available2 == available - 1) - { - ASSERT (freadptr (stdin) == NULL); - } - else -#endif - { - const char *ptr = freadptr (stdin); - - ASSERT (ptr != NULL); - ASSERT (memcmp (ptr, expected, available) == 0); - } + { + const char *ptr = freadptr (stdin, &available2); + + if (ptr != NULL) + { + ASSERT (available2 == available1); + ASSERT (memcmp (ptr, expected, available2) == 0); + } + } /* Test behaviour after arbitrary ungetc. */ fgetc (stdin); ungetc ('@', stdin); - available3 = freadahead (stdin); - ASSERT (available3 == 0 || available3 == 1 || /* available3 == available - 1 || */ available3 == available); - if (available3 == 0) - ; - else if (available3 == 1) - { - const char *ptr = freadptr (stdin); - - if (ptr != NULL) - { - ASSERT (ptr[0] == '@'); - } - } -#if 0 - else if (available3 == available - 1) - { - ASSERT (freadptr (stdin) == NULL); - } -#endif - else - { - const char *ptr = freadptr (stdin); - - if (ptr != NULL) - { - ASSERT (ptr[0] == '@'); - ASSERT (memcmp (ptr + 1, expected + 1, available - 1) == 0); - } - } + { + const char *ptr = freadptr (stdin, &available3); + + if (ptr != NULL) + { + ASSERT (available3 == 1 || available3 == available1); + ASSERT (ptr[0] == '@'); + if (available3 > 1) + { + ASSERT (memcmp (ptr + 1, expected + 1, available3 - 1) == 0); + } + } + } } return 0;