comparison packages/language/c/libc/stdlib/current/tests/srand.c @ 115:6ed91473a1cd ecos-sw-2000-08-21

Merge from eCos master repository on 2000-08-21-22:40:54-BST
author jlarmour
date Fri, 25 Aug 2000 17:32:38 +0000
parents
children e0c0827131d1
comparison
equal deleted inserted replaced
114:5ad2b71d525e 115:6ed91473a1cd
1 //=================================================================
2 //
3 // srand.c
4 //
5 // Testcase for C library srand()
6 //
7 //=================================================================
8 //####COPYRIGHTBEGIN####
9 //
10 // -------------------------------------------
11 // The contents of this file are subject to the Red Hat eCos Public License
12 // Version 1.1 (the "License"); you may not use this file except in
13 // compliance with the License. You may obtain a copy of the License at
14 // http://www.redhat.com/
15 //
16 // Software distributed under the License is distributed on an "AS IS"
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
18 // License for the specific language governing rights and limitations under
19 // the License.
20 //
21 // The Original Code is eCos - Embedded Configurable Operating System,
22 // released September 30, 1998.
23 //
24 // The Initial Developer of the Original Code is Red Hat.
25 // Portions created by Red Hat are
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
27 // All Rights Reserved.
28 // -------------------------------------------
29 //
30 //####COPYRIGHTEND####
31 //=================================================================
32 //#####DESCRIPTIONBEGIN####
33 //
34 // Author(s): ctarpy, jlarmour
35 // Contributors:
36 // Date: 2000-04-30
37 // Description: Contains testcode for C library srand() function
38 //
39 //
40 //####DESCRIPTIONEND####
41
42 // INCLUDES
43
44 #include <stdlib.h>
45 #include <cyg/infra/testcase.h>
46
47
48 // CONSTANTS
49
50 // Max cross correlation value of two sequences of
51 // different seed
52 #define X_CORREL 10
53
54 // size of arrays to use for testing
55 #define TEST_SIZE 1024
56
57
58 // FUNCTIONS
59
60 static void
61 test( CYG_ADDRWORD data )
62 {
63 int ctr;
64 static int array_1[TEST_SIZE];
65 static int array_2[TEST_SIZE];
66 static int array_3[TEST_SIZE];
67 int hits;
68 int fail;
69
70
71 srand(3);
72 for (ctr=0; ctr<TEST_SIZE; ++ctr)
73 array_1[ctr] = rand();
74
75 srand(9);
76 for (ctr=0; ctr<TEST_SIZE; ++ctr)
77 array_2[ctr] = rand();
78
79 srand(3);
80 for (ctr=0; ctr<TEST_SIZE; ++ctr)
81 array_3[ctr] = rand();
82
83 // Make sure arrays 1 and 3 are the same
84 fail = 0;
85 for (ctr=0; ctr<TEST_SIZE; ++ctr) {
86 if (array_1[ctr] != array_3[ctr])
87 ++fail;
88 } // for
89
90 CYG_TEST_PASS_FAIL( fail == 0, "resetting the seed to the same value");
91
92 // Check sequences of different seeds are different
93 hits = 0;
94 for (ctr=0; ctr<TEST_SIZE; ++ctr) {
95 if (array_1[ctr] == array_2[ctr])
96 ++hits;
97 } // for
98
99 CYG_TEST_PASS_FAIL(hits < X_CORREL,
100 "random sequence for different seeds is different");
101
102 CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for "
103 "C library srand() function");
104 } // test()
105
106 int
107 main(int argc, char *argv[])
108 {
109 CYG_TEST_INIT();
110
111 CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C library "
112 "srand() function");
113
114 test(0);
115
116 CYG_TEST_NA("Testing is not applicable to this configuration");
117 } // main()
118
119
120
121 // EOF srand.c