Added SILC Rand API, SILC Global Variables API and silcruntime.h.in
[runtime.git] / lib / silcutil / tests / test_silcrand.c
1 /* PRNG tests */
2
3 #include "silcruntime.h"
4
5 int main(int argc, char **argv)
6 {
7   SilcBool success = FALSE;
8   SilcUInt32 num, seen;
9   SilcUInt64 lnum;
10   int i;
11
12   silc_runtime_init();
13
14   if (argc > 1 && !strcmp(argv[1], "-d")) {
15     silc_log_debug(TRUE);
16     silc_log_quick(TRUE);
17     silc_log_debug_hexdump(TRUE);
18     silc_log_set_debug_string("*rand*");
19   }
20
21   num = silc_rand();
22   SILC_LOG_DEBUG(("Number: %lu", num));
23
24   SILC_LOG_DEBUG(("Seed RNG"));
25   silc_rand_seed(1);
26
27   for (i = 0; i < 1000; i++) {
28     num = silc_rand();
29     SILC_LOG_DEBUG(("Number: %lu", num));
30   }
31
32   seen = silc_rand();
33   for (i = 0; i < 10000000; i++) {
34     num = silc_rand();
35     if (num == seen)
36       goto err;
37   }
38
39   for (i = 0; i < 1000; i++) {
40     if (!(i % 100))
41       silc_rand_seed((SilcUInt32)lnum);
42     lnum = silc_rand64();
43     SILC_LOG_DEBUG(("Number: %p", lnum));
44   }
45
46   success = TRUE;
47
48  err:
49   SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
50   fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");
51
52   silc_runtime_uninit();
53
54   return !success;
55 }