X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-freadptr.c;h=faa243b9ae6515b0ca42e8e7e5395dc1c73b6501;hb=4d0c5cc2198e6e0680d403cd4048cdc0d78cff26;hp=5c69bbe8fde2be6c770481ca5f3719ade8d55a70;hpb=5a79e1d1718961fa0fc9bee70062614fcc8ec7d9;p=gnulib.git diff --git a/tests/test-freadptr.c b/tests/test-freadptr.c index 5c69bbe8f..faa243b9a 100644 --- a/tests/test-freadptr.c +++ b/tests/test-freadptr.c @@ -1,5 +1,5 @@ /* Test of freadptr() function. - Copyright (C) 2007-2008 Free Software Foundation, Inc. + Copyright (C) 2007-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,23 +20,11 @@ #include "freadptr.h" -#include #include #include #include -#include "freadahead.h" - -#define ASSERT(expr) \ - do \ - { \ - if (!(expr)) \ - { \ - fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ - abort (); \ - } \ - } \ - while (0) +#include "macros.h" int main (int argc, char **argv) @@ -46,80 +34,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"; + "#!/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 (ptr != NULL); + 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;