X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-fpurge.c;h=770583f41c8f89d7953cd23bfde47975f363ca86;hb=91fd3b18b755b77c4bb3f7556ddedb055c16c834;hp=319a04042691fe8bb073934b51fbe59bfe132165;hpb=82381b9e5b37125305709d412d8322b35e5c4796;p=gnulib.git diff --git a/tests/test-fpurge.c b/tests/test-fpurge.c index 319a04042..770583f41 100644 --- a/tests/test-fpurge.c +++ b/tests/test-fpurge.c @@ -1,5 +1,5 @@ /* Test of fpurge() function. - Copyright (C) 2007-2009 Free Software Foundation, Inc. + Copyright (C) 2007-2010 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 @@ -18,22 +18,14 @@ #include +/* None of the files accessed by this test are large, so disable the + fseek link warning if we are not using the gnulib fseek module. */ +#define _GL_NO_LARGE_FILES #include -#include #include -#define ASSERT(expr) \ - do \ - { \ - if (!(expr)) \ - { \ - fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ - fflush (stderr); \ - abort (); \ - } \ - } \ - while (0) +#include "macros.h" #define TESTFILE "t-fpurge.tmp" @@ -49,54 +41,54 @@ main (void) /* Create a file with some contents. */ fp = fopen (TESTFILE, "w"); if (fp == NULL) - goto skip; + goto skip; if (fwrite ("foobarsh", 1, 8, fp) < 8) - goto skip; + goto skip; if (fclose (fp)) - goto skip; + goto skip; /* The file's contents is now "foobarsh". */ /* Open it in read-write mode. */ fp = fopen (TESTFILE, "r+"); if (fp == NULL) - goto skip; + goto skip; if (fseek (fp, 3, SEEK_CUR)) - goto skip; + goto skip; if (fwrite ("g", 1, 1, fp) < 1) - goto skip; + goto skip; if (fflush (fp)) - goto skip; + goto skip; if (fwrite ("bz", 1, 2, fp) < 2) - goto skip; + goto skip; /* Discard pending write. */ ASSERT (fpurge (fp) == 0); /* Verify that when discarding pending output, the file position is set - back to where it was before the write calls. */ + back to where it was before the write calls. */ if (check_filepos) - ASSERT (ftell (fp) == 4); + ASSERT (ftell (fp) == 4); ASSERT (fclose (fp) == 0); /* Open it in read-only mode. */ fp = fopen (TESTFILE, "r"); if (fp == NULL) - goto skip; + goto skip; /* Verify that the pending writes before the fpurge were really - discarded. */ + discarded. */ { - char buf[8]; - if (fread (buf, 1, 7, fp) < 7) - goto skip; - ASSERT (memcmp (buf, "foogars", 7) == 0); + char buf[8]; + if (fread (buf, 1, 7, fp) < 7) + goto skip; + ASSERT (memcmp (buf, "foogars", 7) == 0); } /* Discard the buffered 'h'. */ if (check_filepos) - ASSERT (ftell (fp) == 7); + ASSERT (ftell (fp) == 7); ASSERT (fpurge (fp) == 0); /* Verify that when discarding pending input, the file position is - advanced to match the end of the previously read input. */ + advanced to match the end of the previously read input. */ if (check_filepos) - ASSERT (ftell (fp) == 8); + ASSERT (ftell (fp) == 8); ASSERT (getc (fp) == EOF); ASSERT (fclose (fp) == 0); @@ -105,25 +97,27 @@ main (void) /* Ensure that purging a read does not corrupt subsequent writes. */ fp = fopen (TESTFILE, "r+"); if (fp == NULL) - goto skip; + goto skip; if (fseek (fp, -1, SEEK_END)) - goto skip; + goto skip; ASSERT (getc (fp) == 'h'); ASSERT (getc (fp) == EOF); if (check_filepos) - ASSERT (ftell (fp) == 8); + ASSERT (ftell (fp) == 8); ASSERT (fpurge (fp) == 0); if (check_filepos) - ASSERT (ftell (fp) == 8); + ASSERT (ftell (fp) == 8); ASSERT (putc ('!', fp) == '!'); + if (check_filepos) + ASSERT (ftell (fp) == 9); ASSERT (fclose (fp) == 0); fp = fopen (TESTFILE, "r"); if (fp == NULL) - goto skip; + goto skip; { - char buf[10]; - ASSERT (fread (buf, 1, 10, fp) == 9); - ASSERT (memcmp (buf, "foogarsh!", 9) == 0); + char buf[10]; + ASSERT (fread (buf, 1, 10, fp) == 9); + ASSERT (memcmp (buf, "foogarsh!", 9) == 0); } ASSERT (fclose (fp) == 0);