Added SILC Rand API, SILC Global Variables API and silcruntime.h.in
[runtime.git] / lib / silcutil / tests / test_silcglobal.c
1 /* Global storage tests */
2
3 #include "silcruntime.h"
4
5 int main(int argc, char **argv)
6 {
7   SilcBool success = FALSE;
8   unsigned char *vbuf, *vbuf2;
9   unsigned char init[20];
10
11   if (argc > 1 && !strcmp(argv[1], "-d")) {
12     silc_log_debug(TRUE);
13     silc_log_quick(TRUE);
14     silc_log_debug_hexdump(TRUE);
15     silc_log_set_debug_string("*global*");
16   }
17
18   SILC_LOG_DEBUG(("Set global var"));
19   if (!silc_global_set_var("vbuf", 10, NULL, FALSE))
20     goto err;
21
22   SILC_LOG_DEBUG(("Retrieve var"));
23   vbuf = silc_global_get_var("vbuf", FALSE);
24   if (!vbuf)
25     goto err;
26
27   SILC_LOG_DEBUG(("Change value"));
28   memset(vbuf, 'F', 10);
29
30   SILC_LOG_DEBUG(("Retrieve var"));
31   vbuf = silc_global_get_var("vbuf", FALSE);
32   if (!vbuf)
33     goto err;
34   if (vbuf[0] != 'F')
35     goto err;
36
37   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
38   vbuf = silc_global_get_var("vbuf2", FALSE);
39   if (vbuf)
40     goto err;
41   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
42   vbuf = silc_global_get_var("VBUF", FALSE);
43   if (vbuf)
44     goto err;
45   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
46   vbuf = silc_global_get_var("vbuf", TRUE);
47   if (vbuf)
48     goto err;
49
50   SILC_LOG_DEBUG(("Reset same var"));
51   if (!silc_global_set_var("vbuf", 20, NULL, FALSE))
52     goto err;
53   
54   SILC_LOG_DEBUG(("Retrieve var"));
55   vbuf = silc_global_get_var("vbuf", FALSE);
56   if (!vbuf)
57     goto err;
58
59   SILC_LOG_DEBUG(("Change value"));
60   memset(vbuf, 'F', 20);
61
62   SILC_LOG_DEBUG(("Retrieve var"));
63   vbuf = silc_global_get_var("vbuf", FALSE);
64   if (!vbuf)
65     goto err;
66   if (vbuf[19] != 'F')
67     goto err;
68
69   SILC_LOG_DEBUG(("Reset Tls var with initial value"));
70   memset(init, 'D', 20);
71   if (!silc_global_set_var("vbuf", 20, init, TRUE))
72     goto err;
73   
74   SILC_LOG_DEBUG(("Retrieve var"));
75   vbuf2 = silc_global_get_var("vbuf", TRUE);
76   if (vbuf == vbuf2)
77     goto err;
78   if (!vbuf2)
79     goto err;
80   if (vbuf2[19] != 'D')
81     goto err;
82
83   SILC_LOG_DEBUG(("Change value"));
84   memset(vbuf2, 'T', 20);
85
86   SILC_LOG_DEBUG(("Retrieve Tls var"));
87   vbuf = silc_global_get_var("vbuf", TRUE);
88   if (!vbuf)
89     goto err;
90   if (vbuf[0] != 'T')
91     goto err;
92  
93   SILC_LOG_DEBUG(("Retrieve global var"));
94   vbuf = silc_global_get_var("vbuf", FALSE);
95   if (!vbuf)
96     goto err;
97   if (vbuf[19] != 'F')
98     goto err;
99
100   SILC_LOG_DEBUG(("Delete global var"));
101   silc_global_del_var("vbuf", FALSE);
102   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
103   vbuf = silc_global_get_var("vbuf", FALSE);
104   if (vbuf)
105     goto err;
106
107   SILC_LOG_DEBUG(("Delete Tls var"));
108   silc_global_del_var("vbuf", TRUE);
109   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
110   vbuf = silc_global_get_var("vbuf", TRUE);
111   if (vbuf)
112     goto err;
113
114   success = TRUE;
115
116  err:
117   SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
118   fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");
119
120   return !success;
121 }