msi: Only insert entries into listbox if property value matches.
[wine] / dlls / snmpapi / tests / util.c
1 /*
2  * Copyright 2007 Hans Leidekker
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #include <stdio.h>
20
21 #include <wine/test.h>
22
23 #include <windef.h>
24 #include <snmp.h>
25
26 static void test_SnmpUtilOidToA(void)
27 {
28     LPSTR ret;
29     static UINT ids1[] = { 1,3,6,1,4,1,311 };
30     static UINT ids2[] = {
31           1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
32           1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
33           1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
34           1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
35           1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
36           1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
37           1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
38           1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
39           1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 };
40     static UINT ids3[] = { 0xffffffff };
41     static AsnObjectIdentifier oid0 = { 0, ids1 };
42     static AsnObjectIdentifier oid1 = { 7, ids1 };
43     static AsnObjectIdentifier oid2 = { 256, ids2 };
44     static AsnObjectIdentifier oid3 = { 257, ids2 };
45     static AsnObjectIdentifier oid4 = { 258, ids2 };
46     static AsnObjectIdentifier oid5 = { 1, ids3 };
47     static const char expect0[] = "<null oid>";
48     static const char expect1[] = "1.3.6.1.4.1.311";
49     static const char expect2[] =
50         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
51         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
52         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
53         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
54         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
55         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
56         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
57         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1";
58     static const char expect3[] =
59         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
60         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
61         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
62         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
63         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
64         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
65         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
66         "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1";
67     static const char expect4[] = "-1";
68
69     ret = SnmpUtilOidToA(NULL);
70     ok(ret != NULL, "SnmpUtilOidToA failed\n");
71     ok(!strcmp(ret, expect0), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
72        ret, expect1);
73
74     ret = SnmpUtilOidToA(&oid0);
75     ok(ret != NULL, "SnmpUtilOidToA failed\n");
76     ok(!strcmp(ret, expect0), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
77        ret, expect0);
78
79     ret = SnmpUtilOidToA(&oid1);
80     ok(ret != NULL, "SnmpUtilOidToA failed\n");
81     ok(!strcmp(ret, expect1), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
82        ret, expect1);
83
84     ret = SnmpUtilOidToA(&oid2);
85     ok(ret != NULL, "SnmpUtilOidToA failed\n");
86     ok(!strcmp(ret, expect2), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
87        ret, expect2);
88
89     ret = SnmpUtilOidToA(&oid3);
90     ok(ret != NULL, "SnmpUtilOidToA failed\n");
91     ok(!strcmp(ret, expect3), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
92        ret, expect3);
93
94     ret = SnmpUtilOidToA(&oid4);
95     ok(ret != NULL, "SnmpUtilOidToA failed\n");
96     ok(!strcmp(ret, expect3), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
97        ret, expect3);
98
99     ret = SnmpUtilOidToA(&oid5);
100     ok(ret != NULL, "SnmpUtilOidToA failed\n");
101     ok(!strcmp(ret, expect4), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
102        ret, expect4);
103 }
104
105 static void test_SnmpUtilAsnAnyCpyFree(void)
106 {
107     INT ret;
108     static AsnAny dst, src = { ASN_INTEGER, { 1 } };
109
110     if (0) { /* these crash on XP */
111     ret = SnmpUtilAsnAnyCpy(NULL, NULL);
112     ok(!ret, "SnmpUtilAsnAnyCpy succeeded\n");
113
114     ret = SnmpUtilAsnAnyCpy(&dst, NULL);
115     ok(!ret, "SnmpUtilAsnAnyCpy succeeded\n");
116
117     ret = SnmpUtilAsnAnyCpy(NULL, &src);
118     ok(!ret, "SnmpUtilAsnAnyCpy succeeded\n");
119     }
120
121     ret = SnmpUtilAsnAnyCpy(&dst, &src);
122     ok(ret, "SnmpUtilAsnAnyCpy failed\n");
123     ok(!memcmp(&src, &dst, sizeof(AsnAny)), "SnmpUtilAsnAnyCpy failed\n");
124
125     if (0) { /* crashes on XP */
126     SnmpUtilAsnAnyFree(NULL);
127     }
128     SnmpUtilAsnAnyFree(&dst);
129     ok(dst.asnType == ASN_NULL, "SnmpUtilAsnAnyFree failed\n");
130     ok(dst.asnValue.number == 1, "SnmpUtilAsnAnyFree failed\n");
131 }
132
133 static void test_SnmpUtilOctetsCpyFree(void)
134 {
135     INT ret;
136     static BYTE stream[] = { '1', '2', '3', '4' };
137     static AsnOctetString dst, src = { stream, 4, TRUE };
138
139     ret = SnmpUtilOctetsCpy(NULL, NULL);
140     ok(!ret, "SnmpUtilOctetsCpy succeeded\n");
141
142     memset(&dst, 1, sizeof(AsnOctetString));
143     ret = SnmpUtilOctetsCpy(&dst, NULL);
144     ok(ret, "SnmpUtilOctetsCpy failed\n");
145     ok(dst.length == 0, "SnmpUtilOctetsCpy failed\n");
146     ok(dst.stream == NULL, "SnmpUtilOctetsCpy failed\n");
147     ok(dst.dynamic == FALSE, "SnmpUtilOctetsCpy failed\n");
148
149     ret = SnmpUtilOctetsCpy(NULL, &src);
150     ok(!ret, "SnmpUtilOctetsCpy succeeded\n");
151
152     memset(&dst, 0, sizeof(AsnOctetString));
153     ret = SnmpUtilOctetsCpy(&dst, &src);
154     ok(ret, "SnmpUtilOctetsCpy failed\n");
155     ok(src.length == dst.length, "SnmpUtilOctetsCpy failed\n");
156     ok(!memcmp(src.stream, dst.stream, dst.length), "SnmpUtilOctetsCpy failed\n");
157     ok(dst.dynamic == TRUE, "SnmpUtilOctetsCpy failed\n");
158
159     SnmpUtilOctetsFree(NULL);
160     SnmpUtilOctetsFree(&dst);
161     ok(dst.stream == NULL, "SnmpUtilOctetsFree failed\n");
162     ok(dst.length == 0, "SnmpUtilOctetsFree failed\n");
163     ok(dst.dynamic == FALSE, "SnmpUtilOctetsFree failed\n");
164 }
165
166 static void test_SnmpUtilOidCpyFree(void)
167 {
168     INT ret;
169     static UINT ids[] = { 1, 3, 6, 1, 4, 1, 311 };
170     static AsnObjectIdentifier dst, src = { sizeof(ids) / sizeof(ids[0]), ids };
171
172     ret = SnmpUtilOidCpy(NULL, NULL);
173     ok(!ret, "SnmpUtilOidCpy succeeded\n");
174
175     memset(&dst, 1, sizeof(AsnObjectIdentifier));
176     ret = SnmpUtilOidCpy(&dst, NULL);
177     ok(ret, "SnmpUtilOidCpy failed\n");
178     ok(dst.idLength == 0, "SnmpUtilOidCpy failed\n");
179     ok(dst.ids == NULL, "SnmpUtilOidCpy failed\n");
180
181     ret = SnmpUtilOidCpy(NULL, &src);
182     ok(!ret, "SnmpUtilOidCpy succeeded\n");
183
184     memset(&dst, 0, sizeof(AsnObjectIdentifier));
185     ret = SnmpUtilOidCpy(&dst, &src);
186     ok(ret, "SnmpUtilOidCpy failed\n");
187     ok(src.idLength == dst.idLength, "SnmpUtilOidCpy failed\n");
188     ok(!memcmp(src.ids, dst.ids, dst.idLength * sizeof(UINT)), "SnmpUtilOidCpy failed\n");
189
190     SnmpUtilOidFree(NULL);
191     SnmpUtilOidFree(&dst);
192     ok(dst.idLength == 0, "SnmpUtilOidFree failed\n");
193     ok(dst.ids == NULL, "SnmpUtilOidFree failed\n");
194 }
195
196 static void test_SnmpUtilOctetsNCmp(void)
197 {
198     INT ret;
199     static BYTE stream1[] = { '1', '2', '3', '4' };
200     static BYTE stream2[] = { '5', '6', '7', '8' };
201     static AsnOctetString octets1 = { stream1, 4, FALSE };
202     static AsnOctetString octets2 = { stream2, 4, FALSE };
203
204     ret = SnmpUtilOctetsNCmp(NULL, NULL, 0);
205     ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
206
207     ret = SnmpUtilOctetsNCmp(NULL, NULL, 1);
208     ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
209
210     ret = SnmpUtilOctetsNCmp(&octets1, NULL, 0);
211     ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
212
213     ret = SnmpUtilOctetsNCmp(&octets1, NULL, 1);
214     ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
215
216     ret = SnmpUtilOctetsNCmp(NULL, &octets2, 0);
217     ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
218
219     ret = SnmpUtilOctetsNCmp(NULL, &octets2, 1);
220     ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
221
222     ret = SnmpUtilOctetsNCmp(&octets1, &octets1, 0);
223     ok(!ret, "SnmpUtilOctetsNCmp failed\n");
224
225     ret = SnmpUtilOctetsNCmp(&octets1, &octets1, 4);
226     ok(!ret, "SnmpUtilOctetsNCmp failed\n");
227
228     ret = SnmpUtilOctetsNCmp(&octets1, &octets2, 4);
229     ok(ret == -4, "SnmpUtilOctetsNCmp failed\n");
230
231     ret = SnmpUtilOctetsNCmp(&octets2, &octets1, 4);
232     ok(ret == 4, "SnmpUtilOctetsNCmp failed\n");
233 }
234
235 static void test_SnmpUtilOctetsCmp(void)
236 {
237     INT ret;
238     static BYTE stream1[] = { '1', '2', '3' };
239     static BYTE stream2[] = { '1', '2', '3', '4' };
240     static AsnOctetString octets1 = { stream1, 3, FALSE };
241     static AsnOctetString octets2 = { stream2, 4, FALSE };
242
243     if (0) { /* these crash on XP */
244     ret = SnmpUtilOctetsCmp(NULL, NULL);
245     ok(!ret, "SnmpUtilOctetsCmp succeeded\n");
246
247     ret = SnmpUtilOctetsCmp(&octets1, NULL);
248     ok(!ret, "SnmpUtilOctetsCmp succeeded\n");
249
250     ret = SnmpUtilOctetsCmp(NULL, &octets2);
251     ok(!ret, "SnmpUtilOctetsCmp succeeded\n");
252     }
253
254     ret = SnmpUtilOctetsCmp(&octets2, &octets1);
255     ok(ret == 1, "SnmpUtilOctetsCmp failed\n");
256
257     ret = SnmpUtilOctetsCmp(&octets1, &octets2);
258     ok(ret == -1, "SnmpUtilOctetsCmp failed\n");
259 }
260
261 static void test_SnmpUtilOidNCmp(void)
262 {
263     INT ret;
264     static UINT ids1[] = { 1, 2, 3, 4 };
265     static UINT ids2[] = { 5, 6, 7, 8 };
266     static AsnObjectIdentifier oid1 = { 4, ids1 };
267     static AsnObjectIdentifier oid2 = { 4, ids2 };
268
269     ret = SnmpUtilOidNCmp(NULL, NULL, 0);
270     ok(!ret, "SnmpUtilOidNCmp succeeded\n");
271
272     ret = SnmpUtilOidNCmp(NULL, NULL, 1);
273     ok(!ret, "SnmpUtilOidNCmp succeeded\n");
274
275     ret = SnmpUtilOidNCmp(&oid1, NULL, 0);
276     ok(!ret, "SnmpUtilOidNCmp succeeded\n");
277
278     ret = SnmpUtilOidNCmp(&oid1, NULL, 1);
279     ok(!ret, "SnmpUtilOidNCmp succeeded\n");
280
281     ret = SnmpUtilOidNCmp(NULL, &oid2, 0);
282     ok(!ret, "SnmpUtilOidNCmp succeeded\n");
283
284     ret = SnmpUtilOidNCmp(NULL, &oid2, 1);
285     ok(!ret, "SnmpUtilOidNCmp succeeded\n");
286
287     ret = SnmpUtilOidNCmp(&oid1, &oid1, 0);
288     ok(!ret, "SnmpUtilOidNCmp failed\n");
289
290     ret = SnmpUtilOidNCmp(&oid1, &oid1, 4);
291     ok(!ret, "SnmpUtilOidNCmp failed\n");
292
293     ret = SnmpUtilOidNCmp(&oid1, &oid2, 4);
294     ok(ret == -1, "SnmpUtilOidNCmp failed: %d\n", ret);
295
296     ret = SnmpUtilOidNCmp(&oid2, &oid1, 4);
297     ok(ret == 1, "SnmpUtilOidNCmp failed: %d\n", ret);
298 }
299
300 static void test_SnmpUtilOidCmp(void)
301 {
302     INT ret;
303     static UINT ids1[] = { 1, 2, 3 };
304     static UINT ids2[] = { 1, 2, 3, 4 };
305     static AsnObjectIdentifier oid1 = { 3, ids1 };
306     static AsnObjectIdentifier oid2 = { 4, ids2 };
307
308     if (0) { /* these crash on XP */
309     ret = SnmpUtilOidCmp(NULL, NULL);
310     ok(!ret, "SnmpUtilOidCmp succeeded\n");
311
312     ret = SnmpUtilOidCmp(&oid1, NULL);
313     ok(!ret, "SnmpUtilOidCmp succeeded\n");
314
315     ret = SnmpUtilOidCmp(NULL, &oid2);
316     ok(!ret, "SnmpUtilOidCmp succeeded\n");
317     }
318
319     ret = SnmpUtilOidCmp(&oid2, &oid1);
320     ok(ret == 1, "SnmpUtilOidCmp failed\n");
321
322     ret = SnmpUtilOidCmp(&oid1, &oid2);
323     ok(ret == -1, "SnmpUtilOidCmp failed\n");
324 }
325
326 static void test_SnmpUtilOidAppend(void)
327 {
328     INT ret;
329     static UINT ids1[] = { 1, 2, 3 };
330     static UINT ids2[] = { 4, 5, 6 };
331     static AsnObjectIdentifier oid1 = { 3, ids1 };
332     static AsnObjectIdentifier oid2 = { 3, ids2 };
333
334     ret = SnmpUtilOidAppend(NULL, NULL);
335     ok(!ret, "SnmpUtilOidAppend succeeded\n");
336
337     ret = SnmpUtilOidAppend(&oid1, NULL);
338     ok(ret, "SnmpUtilOidAppend failed\n");
339
340     ret = SnmpUtilOidAppend(NULL, &oid2);
341     ok(!ret, "SnmpUtilOidAppend succeeded\n");
342
343     ret = SnmpUtilOidAppend(&oid1, &oid2);
344     ok(ret, "SnmpUtilOidAppend failed\n");
345     ok(oid1.idLength == 6, "SnmpUtilOidAppend failed\n");
346     ok(!memcmp(&oid1.ids[3], ids2, 3 * sizeof(UINT)),
347        "SnmpUtilOidAppend failed\n");
348 }
349
350 static void test_SnmpUtilVarBindCpyFree(void)
351 {
352     INT ret;
353     static UINT ids[] = { 1, 3, 6, 1, 4, 1, 311 };
354     static SnmpVarBind dst, src = { { 7, ids }, { ASN_INTEGER, { 1 } } };
355
356     ret = SnmpUtilVarBindCpy(NULL, NULL);
357     ok(!ret, "SnmpUtilVarBindCpy succeeded\n");
358
359     memset(&dst, 0, sizeof(SnmpVarBind));
360     ret = SnmpUtilVarBindCpy(&dst, NULL);
361     ok(ret, "SnmpUtilVarBindCpy failed\n");
362     ok(dst.name.idLength == 0, "SnmpUtilVarBindCpy failed\n");
363     ok(dst.name.ids == NULL, "SnmpUtilVarBindCpy failed\n");
364     ok(dst.value.asnType == ASN_NULL, "SnmpUtilVarBindCpy failed\n");
365     ok(dst.value.asnValue.number == 0, "SnmpUtilVarBindCpy failed\n");
366
367     ret = SnmpUtilVarBindCpy(NULL, &src);
368     ok(!ret, "SnmpUtilVarBindCpy succeeded\n");
369
370     memset(&dst, 0, sizeof(SnmpVarBind));
371     ret = SnmpUtilVarBindCpy(&dst, &src);
372     ok(ret, "SnmpUtilVarBindCpy failed\n");
373     ok(src.name.idLength == dst.name.idLength, "SnmpUtilVarBindCpy failed\n");
374     ok(!memcmp(src.name.ids, dst.name.ids, dst.name.idLength * sizeof(UINT)),
375        "SnmpUtilVarBindCpy failed\n");
376     ok(!memcmp(&src.value, &dst.value, sizeof(AsnObjectSyntax)),
377        "SnmpUtilVarBindCpy failed\n");
378
379     SnmpUtilVarBindFree(NULL);
380     SnmpUtilVarBindFree(&dst);
381     ok(dst.name.idLength == 0, "SnmpUtilVarBindFree failed\n");
382     ok(dst.name.ids == NULL, "SnmpUtilVarBindFree failed\n");
383     ok(dst.value.asnType == ASN_NULL, "SnmpUtilVarBindFree failed\n");
384     ok(dst.value.asnValue.number == 1, "SnmpUtilVarBindFree failed\n");
385 }
386
387 static void test_SnmpUtilVarBindListCpyFree(void)
388 {
389     INT ret;
390     static UINT ids[] = { 1, 3, 6, 1, 4, 1, 311 };
391     static SnmpVarBind src = { { 7, ids }, { ASN_INTEGER, { 1 } } };
392     static SnmpVarBindList dst_list, src_list = { &src, 1 };
393
394     if (0) { /* these crash on XP */
395     ret = SnmpUtilVarBindListCpy(NULL, NULL);
396     ok(!ret, "SnmpUtilVarBindCpy succeeded\n");
397
398     ret = SnmpUtilVarBindListCpy(NULL, &src_list);
399     ok(!ret, "SnmpUtilVarBindListCpy succeeded\n");
400     }
401
402     memset(&dst_list, 0xff, sizeof(SnmpVarBindList));
403     ret = SnmpUtilVarBindListCpy(&dst_list, NULL);
404     ok(ret, "SnmpUtilVarBindListCpy failed\n");
405     ok(dst_list.list == NULL, "SnmpUtilVarBindListCpy failed\n");
406     ok(dst_list.len == 0, "SnmpUtilVarBindListCpy failed\n");
407
408     ret = SnmpUtilVarBindListCpy(&dst_list, &src_list);
409     ok(ret, "SnmpUtilVarBindListCpy failed\n");
410     ok(src_list.len == dst_list.len, "SnmpUtilVarBindListCpy failed\n");
411     ok(src_list.list->name.idLength == dst_list.list->name.idLength,
412        "SnmpUtilVarBindListCpy failed\n");
413     ok(!memcmp(src_list.list->name.ids, dst_list.list->name.ids,
414                dst_list.list->name.idLength * sizeof(UINT)),
415        "SnmpUtilVarBindListCpy failed\n");
416     ok(!memcmp(&src_list.list->value, &dst_list.list->value, sizeof(AsnAny)),
417        "SnmpUtilVarBindListCpy failed\n");
418
419     if (0) { /* crashes on XP */
420     SnmpUtilVarBindListFree(NULL);
421     }
422     SnmpUtilVarBindListFree(&dst_list);
423     ok(dst_list.list == NULL, "SnmpUtilVarBindListFree failed\n");
424     ok(dst_list.len == 0, "SnmpUtilVarBindListFree failed\n");
425 }
426
427 START_TEST(util)
428 {
429     test_SnmpUtilOidToA();
430     test_SnmpUtilAsnAnyCpyFree();
431     test_SnmpUtilOctetsCpyFree();
432     test_SnmpUtilOidCpyFree();
433     test_SnmpUtilOctetsNCmp();
434     test_SnmpUtilOctetsCmp();
435     test_SnmpUtilOidCmp();
436     test_SnmpUtilOidNCmp();
437     test_SnmpUtilOidAppend();
438     test_SnmpUtilVarBindCpyFree();
439     test_SnmpUtilVarBindListCpyFree();
440 }