annotate tests/test-fread.c @ 15887:89c762414427

New module 'atanf'. * lib/math.in.h (atanf): New declaration. * lib/atanf.c: New file. * m4/atanf.m4: New file. * m4/math_h.m4 (gl_MATH_H): Test whether atanf is declared. (gl_MATH_H_DEFAULTS): Initialize GNULIB_ATANF, HAVE_ATANF. * modules/math (Makefile.am): Substitute GNULIB_ATANF, HAVE_ATANF. * modules/atanf: New file. * tests/test-math-c++.cc: Check the declaration of atanf. * doc/posix-functions/atanf.texi: Mention the new module.
author Bruno Haible <bruno@clisp.org>
date Sat, 08 Oct 2011 23:55:44 +0200
parents 22a143e3638f
children 8250f2777afc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15772
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
1 /* Test of fread() function.
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
2 Copyright (C) 2011 Free Software Foundation, Inc.
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
3
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
6 the Free Software Foundation; either version 3, or (at your option)
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
7 any later version.
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
8
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
12 GNU General Public License for more details.
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
13
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
15 along with this program; if not, write to the Free Software Foundation,
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
17
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
18 #include <config.h>
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
19
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
20 #include <stdio.h>
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
21
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
22 #include "signature.h"
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
23 SIGNATURE_CHECK (fread, size_t, (void *, size_t, size_t, FILE *));
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
24
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
25 #include <errno.h>
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
26 #include <fcntl.h>
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
27 #include <unistd.h>
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
28
15795
dd52b68a488b fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents: 15772
diff changeset
29 #include "msvc-inval.h"
dd52b68a488b fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents: 15772
diff changeset
30
15772
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
31 #include "macros.h"
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
32
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
33 int
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
34 main (int argc, char **argv)
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
35 {
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
36 const char *filename = "test-fread.txt";
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
37
15795
dd52b68a488b fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents: 15772
diff changeset
38 /* We don't have an fread() function that installs an invalid parameter
dd52b68a488b fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents: 15772
diff changeset
39 handler so far. So install that handler here, explicitly. */
15796
22a143e3638f fgetc, fputc, fread, fwrite tests: Fix link error.
Bruno Haible <bruno@clisp.org>
parents: 15795
diff changeset
40 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
22a143e3638f fgetc, fputc, fread, fwrite tests: Fix link error.
Bruno Haible <bruno@clisp.org>
parents: 15795
diff changeset
41 && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
15795
dd52b68a488b fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents: 15772
diff changeset
42 gl_msvc_inval_ensure_handler ();
dd52b68a488b fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents: 15772
diff changeset
43 #endif
dd52b68a488b fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents: 15772
diff changeset
44
15772
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
45 /* Prepare a file. */
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
46 {
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
47 const char text[] = "hello world";
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
48 int fd = open (filename, O_RDWR | O_CREAT | O_TRUNC, 0600);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
49 ASSERT (fd >= 0);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
50 ASSERT (write (fd, text, sizeof (text)) == sizeof (text));
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
51 ASSERT (close (fd) == 0);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
52 }
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
53
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
54 /* Test that fread() sets errno if someone else closes the stream
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
55 fd behind the back of stdio. */
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
56 {
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
57 FILE *fp = fopen (filename, "r");
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
58 char buf[5];
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
59 ASSERT (fp != NULL);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
60 ASSERT (close (fileno (fp)) == 0);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
61 errno = 0;
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
62 ASSERT (fread (buf, 1, sizeof (buf), fp) == 0);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
63 ASSERT (errno == EBADF);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
64 ASSERT (ferror (fp));
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
65 fclose (fp);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
66 }
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
67
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
68 /* Test that fread() sets errno if the stream was constructed with
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
69 an invalid file descriptor. */
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
70 {
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
71 FILE *fp = fdopen (-1, "r");
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
72 if (fp != NULL)
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
73 {
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
74 char buf[1];
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
75 errno = 0;
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
76 ASSERT (fread (buf, 1, 1, fp) == 0);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
77 ASSERT (errno == EBADF);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
78 ASSERT (ferror (fp));
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
79 fclose (fp);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
80 }
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
81 }
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
82 {
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
83 FILE *fp = fdopen (99, "r");
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
84 if (fp != NULL)
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
85 {
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
86 char buf[1];
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
87 errno = 0;
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
88 ASSERT (fread (buf, 1, 1, fp) == 0);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
89 ASSERT (errno == EBADF);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
90 ASSERT (ferror (fp));
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
91 fclose (fp);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
92 }
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
93 }
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
94
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
95 /* Clean up. */
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
96 unlink (filename);
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
97
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
98 return 0;
9af89e5674f6 Tests for function fread().
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
99 }