annotate tests/test-random_r.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 97fc9a21a8fb
children 8250f2777afc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10704
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
1 /* Test random_r.
14079
97fc9a21a8fb maint: update almost all copyright ranges to include 2011
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
2 Copyright (C) 2008-2011 Free Software Foundation, Inc.
10704
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
3
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
4 This program is free software: you can redistribute it and/or modify
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
6 the Free Software Foundation; either version 3 of the License, or
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
7 (at your option) any later version.
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
8
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
12 GNU General Public License for more details.
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
13
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
16
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
17 #include <config.h>
12487
8ba9831d54bf Include header file being tested immediately after config.h.
Bruno Haible <bruno@clisp.org>
parents: 12421
diff changeset
18
10704
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
19 #include <stdlib.h>
12487
8ba9831d54bf Include header file being tested immediately after config.h.
Bruno Haible <bruno@clisp.org>
parents: 12421
diff changeset
20
12489
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12487
diff changeset
21 #include "signature.h"
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12487
diff changeset
22 SIGNATURE_CHECK (srandom_r, int, (unsigned int, struct random_data *));
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12487
diff changeset
23 SIGNATURE_CHECK (initstate_r, int, (unsigned int, char *, size_t,
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12487
diff changeset
24 struct random_data *));
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12487
diff changeset
25 SIGNATURE_CHECK (setstate_r, int, (char *, struct random_data *));
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12487
diff changeset
26 SIGNATURE_CHECK (random_r, int, (struct random_data *, int32_t *));
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12487
diff changeset
27
10704
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
28 #include <time.h>
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
29
12496
a48d3d749ca5 Refactor common macros used in tests.
Bruno Haible <bruno@clisp.org>
parents: 12489
diff changeset
30 #include "macros.h"
10704
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
31
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
32 int
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
33 main ()
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
34 {
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
35 struct random_data rand_state;
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
36 char buf[128];
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
37 unsigned int i;
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
38 unsigned int n_big = 0;
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
39
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
40 rand_state.state = NULL;
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
41 if (initstate_r (time (NULL), buf, sizeof buf, &rand_state))
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
42 return 1;
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
43 for (i = 0; i < 1000; i++)
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
44 {
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
45 int32_t r;
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
46 ASSERT (random_r (&rand_state, &r) == 0);
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
47 ASSERT (0 <= r);
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
48 if (RAND_MAX / 2 < r)
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10704
diff changeset
49 ++n_big;
10704
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
50 }
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
51
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
52 /* Fail if none of the numbers were larger than RAND_MAX / 2. */
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
53 return !n_big;
c1911eda16bd random_r: new module
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
54 }