SILC Runtime Toolkit 1.2 Beta 1
[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   SilcUInt32 gint, *gintptr;
11
12   if (argc > 1 && !strcmp(argv[1], "-d")) {
13     silc_log_debug(TRUE);
14     silc_log_quick(TRUE);
15     silc_log_debug_hexdump(TRUE);
16     silc_log_set_debug_string("*global*");
17   }
18
19   SILC_LOG_DEBUG(("Set global var"));
20   gint = 100;
21   if (!silc_global_set_var("gint", 4, &gint, FALSE))
22     goto err;
23
24   SILC_LOG_DEBUG(("Retrieve var"));
25   gintptr = silc_global_get_var("gint", FALSE);
26   if (!gintptr)
27     goto err;
28   if (*gintptr != 100)
29     goto err;
30
31   SILC_LOG_DEBUG(("Set global var"));
32   if (!silc_global_set_var("vbuf", 10, NULL, FALSE))
33     goto err;
34
35   SILC_LOG_DEBUG(("Retrieve var"));
36   vbuf = silc_global_get_var("vbuf", FALSE);
37   if (!vbuf)
38     goto err;
39
40   SILC_LOG_DEBUG(("Change value"));
41   memset(vbuf, 'F', 10);
42
43   SILC_LOG_DEBUG(("Retrieve var"));
44   vbuf = silc_global_get_var("vbuf", FALSE);
45   if (!vbuf)
46     goto err;
47   if (vbuf[0] != 'F')
48     goto err;
49
50   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
51   vbuf = silc_global_get_var("vbuf2", FALSE);
52   if (vbuf)
53     goto err;
54   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
55   vbuf = silc_global_get_var("VBUF", FALSE);
56   if (vbuf)
57     goto err;
58   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
59   vbuf = silc_global_get_var("vbuf", TRUE);
60   if (vbuf)
61     goto err;
62
63   SILC_LOG_DEBUG(("Reset same var"));
64   if (!silc_global_set_var("vbuf", 20, NULL, FALSE))
65     goto err;
66   
67   SILC_LOG_DEBUG(("Retrieve var"));
68   vbuf = silc_global_get_var("vbuf", FALSE);
69   if (!vbuf)
70     goto err;
71
72   SILC_LOG_DEBUG(("Change value"));
73   memset(vbuf, 'F', 20);
74
75   SILC_LOG_DEBUG(("Retrieve var"));
76   vbuf = silc_global_get_var("vbuf", FALSE);
77   if (!vbuf)
78     goto err;
79   if (vbuf[19] != 'F')
80     goto err;
81
82   SILC_LOG_DEBUG(("Reset Tls var with initial value"));
83   memset(init, 'D', 20);
84   if (!silc_global_set_var("vbuf", 20, init, TRUE))
85     goto err;
86   
87   SILC_LOG_DEBUG(("Retrieve var"));
88   vbuf2 = silc_global_get_var("vbuf", TRUE);
89   if (vbuf == vbuf2)
90     goto err;
91   if (!vbuf2)
92     goto err;
93   if (vbuf2[19] != 'D')
94     goto err;
95
96   SILC_LOG_DEBUG(("Change value"));
97   memset(vbuf2, 'T', 20);
98
99   SILC_LOG_DEBUG(("Retrieve Tls var"));
100   vbuf = silc_global_get_var("vbuf", TRUE);
101   if (!vbuf)
102     goto err;
103   if (vbuf[0] != 'T')
104     goto err;
105  
106   SILC_LOG_DEBUG(("Retrieve global var"));
107   vbuf = silc_global_get_var("vbuf", FALSE);
108   if (!vbuf)
109     goto err;
110   if (vbuf[19] != 'F')
111     goto err;
112
113   SILC_LOG_DEBUG(("Delete global var"));
114   silc_global_del_var("vbuf", FALSE);
115   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
116   vbuf = silc_global_get_var("vbuf", FALSE);
117   if (vbuf)
118     goto err;
119
120   SILC_LOG_DEBUG(("Delete Tls var"));
121   silc_global_del_var("vbuf", TRUE);
122   SILC_LOG_DEBUG(("Retrieve var (must not find)"));
123   vbuf = silc_global_get_var("vbuf", TRUE);
124   if (vbuf)
125     goto err;
126
127   success = TRUE;
128
129  err:
130   SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
131   fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");
132
133   return !success;
134 }