annotate tests/test-random_r.c @ 12559:c2cbabec01dd

update nearly all FSF copyright year lists to include 2010 Use the same procedure as for 2009, outlined in http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/20081
author Jim Meyering <meyering@redhat.com>
date Fri, 01 Jan 2010 10:31:12 +0100
parents a48d3d749ca5
children 97fc9a21a8fb
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.
12559
c2cbabec01dd update nearly all FSF copyright year lists to include 2010
Jim Meyering <meyering@redhat.com>
parents: 12496
diff changeset
2 Copyright (C) 2008-2010 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 }