Annotation of gpl/axl/test/test_01.c, revision 1.1.1.1
1.1 misho 1: /**
2: * LibAxl: Another XML library (regression test)
3: * Copyright (C) 2006 Advanced Software Production Line, S.L.
4: */
5: #include <axl.h>
6: #include <axl_ns.h>
7: #include <axl_babel.h>
8:
9: #define test_41_iso_8859_1_value "!\"#$%'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
10:
11: #define test_41_iso_8859_2_value "!\"#$%'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~Ą˘Ł¤ĽŚ§¨ŠŞŤŹŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ"
12:
13: #define test_41_iso_8859_3_value "!\"#$%'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~Ħ˘£¤Ĥ§¨İŞĞĴŻ°ħ²³´µĥ·¸ışğĵ½żÀÁÂÄĊĈÇÈÉÊËÌÍÎÏÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâäċĉçèéêëìíîïñòóôġö÷ĝùúûüŭŝ˙"
14:
15: #define test_41_iso_8859_4_value "#$%'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~ĄĸŖ¤ĨĻ§¨ŠĒĢŦŽ¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"
16:
17: #define test_41_iso_8859_5_value "#$%'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~ЁЂЃЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"
18:
19: #define test_41_iso_8859_6_value "!\"#$%&'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~¤،؛؟ءآأؤإئابةتثجحخدذرزسشصضطظعغـفقكلمنهوىيًٌٍَُِّْ"
20:
21: #define test_41_iso_8859_7_value "!\"#$%'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~‘’£€₯¦§¨©ͺ«¬―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ"
22:
23: #define test_41_iso_8859_8_value "!\"#$%'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~¢£¤¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾‗אבגדהוזחטיךכלםמןנסעףפץצקרשת"
24:
25: #define test_41_iso_8859_9_value "!\"#$%'()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
26:
27: #define test_41_iso_8859_15_value "Esto es una prueba: camión, españa, y la tabla de caráteres!\"#$%()*+,-./0123456789:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
28:
29: /**
30: * @brief Check that xml node attributes can't be added twice
31: */
32: axl_bool test_45 (axlError ** error)
33: {
34: axlAttrCursor * cursor;
35: axlDoc * doc;
36: axlNode * node;
37: int count;
38:
39: doc = axl_doc_parse ("<root value='test1' />", 24, NULL);
40: if (doc == NULL) {
41: printf ("Expected to find proper document parsing but found NULL\n");
42: return axl_false;
43: } /* end if */
44:
45: /* get root node */
46: node = axl_doc_get_root (doc);
47:
48: /* get attribute value */
49: if (! HAS_ATTR (node, "value")) {
50: printf ("Expected to find attribute value but not found..\n");
51: return axl_false;
52: } /* end if */
53:
54: /* set new attribute */
55: axl_node_set_attribute (node, "value", "test2");
56:
57: /* check now many attributes we have */
58: cursor = axl_node_attr_cursor_new (node);
59: count = 0;
60: while (axl_node_attr_cursor_has_item (cursor)) {
61:
62: count++;
63:
64: /* next attribute */
65: axl_node_attr_cursor_next (cursor);
66: }
67: axl_node_attr_cursor_free (cursor);
68:
69: /* check count here */
70: if (count != 1) {
71: printf ("Error, expected to find 1 attribute but found: %d\n", count);
72: return axl_false;
73: }
74:
75: if (! HAS_ATTR_VALUE (node, "value", "test1")) {
76: printf ("Error, expected to find updated value=test1 but found %s..\n", ATTR_VALUE (node, "value"));
77: return axl_false;
78: }
79:
80: axl_doc_free (doc);
81:
82: return axl_true;
83: }
84:
85: /**
86: * @brief Check and fix DTD bug
87: */
88: axl_bool test_44 (axlError ** error)
89: {
90:
91: axlDoc * doc;
92: axlDtd * dtd;
93:
94: /* parse the document found */
95: doc = axl_doc_parse_from_file ("test_44.xml", error);
96: if (doc == NULL)
97: return axl_false;
98:
99:
100: dtd = axl_dtd_parse_from_file ("test_44.dtd", error);
101: if (dtd == NULL)
102: return axl_false;
103:
104: /* now validate the document */
105: if (! axl_dtd_validate (doc, dtd, error)) {
106: return axl_false;
107: }
108:
109: /* release memory used by the parser */
110: axl_doc_free (doc);
111:
112: /* parse the document found */
113: doc = axl_doc_parse_from_file ("test_44_b.xml", error);
114: if (doc == NULL)
115: return axl_false;
116:
117: /* now validate the document */
118: if (! axl_dtd_validate (doc, dtd, error)) {
119: return axl_false;
120: }
121:
122: /* release memory used by the DTD element */
123: axl_dtd_free (dtd);
124:
125: /* release memory used by the parser */
126: axl_doc_free (doc);
127:
128: return axl_true;
129:
130: }
131:
132:
133: /**
134: * @brief Check a memory leak while operating with root nodes.
135: */
136: axl_bool test_43 (axlError ** error)
137: {
138: axlDoc * doc = axl_doc_parse("<example />", -1, NULL);
139: axlNode * root = axl_doc_get_root(doc);
140:
141: axl_node_set_name (root, "my_name");
142:
143: axl_doc_free(doc);
144: return axl_true;
145: }
146:
147: /**
148: * @brief Storing arbitrary binary content inside CDATA declaration
149: * including ']]>'.
150: *
151: * @param error The optional axlError to be used to report erros.
152: *
153: * @return axl_true tests are ok, otherwise axl_false is returned.
154: */
155: axl_bool test_42 (axlError ** error)
156: {
157: axlDoc * doc;
158: axlNode * node;
159: char * content;
160: int size;
161:
162: /* parse example */
163: doc = axl_doc_parse_from_file ("test_42.xml", error);
164: if (doc == NULL)
165: return axl_false;
166:
167: node = axl_doc_get_root (doc);
168: content = axl_node_get_content_trans (node, NULL);
169:
170: /* check content */
171: if (! axl_cmp ("this is an example ]]> more content", content)) {
172: printf ("Expected to find: '%s' but found '%s'\n",
173: "this is an example ]]> more content", content);
174: axl_error_report (error, -1, "Expected to find a particular content but different value was found (1)");
175: return axl_false;
176: }
177:
178: axl_free (content);
179:
180: /* free document */
181: axl_doc_free (doc);
182:
183: /* parse example */
184: doc = axl_doc_parse_from_file ("test_42a.xml", error);
185: if (doc == NULL)
186: return axl_false;
187:
188: node = axl_doc_get_root (doc);
189: content = axl_node_get_content_trans (node, NULL);
190:
191: /* check content */
192: if (! axl_cmp ("this is an example ]]> more content ]]> second piece", content)) {
193: printf ("Expected to find: '%s' but found '%s'\n",
194: "this is an example ]]> more content ]]> second piece", content);
195: axl_error_report (error, -1, "Expected to find a particular content but different value was found (2)");
196: return axl_false;
197: }
198:
199: axl_free (content);
200:
201: /* free document */
202: axl_doc_free (doc);
203:
204: doc = axl_doc_parse ("<body />", 8, NULL);
205: node = axl_doc_get_root (doc);
206:
207: /* set CDATA content */
208: axl_node_set_cdata_content (node, "This is a test ]]> with not valid content <![CDATA[..]]>", 56);
209:
210: /* dump content */
211: if (! axl_doc_dump (doc, &content, &size)) {
212: axl_error_report (error, -1, "Failed to perform dump operation after CDATA content configuration..");
213: return axl_false;
214: }
215:
216: /* check dumped content */
217: if (! axl_cmp ("<?xml version='1.0' encoding='utf-8' ?><body><![CDATA[This is a test ]]>]]><![CDATA[ with not valid content <![CDATA[..]]>]]><![CDATA[]]></body>",
218: content)) {
219: printf ("Content found: '%s'\n", content);
220: printf ("Content expected: '%s'\n",
221: "<?xml version='1.0' ?><body><![CDATA[This is a test ]]>]]><![CDATA[ with not valid content <![CDATA[..]]>]]><![CDATA[]]></body>");
222: axl_error_report (error, -1, "Expected to find a different value for xml dump content");
223: return axl_false;
224: } /* end if */
225:
226: /* free content */
227: axl_free (content);
228:
229: /* now dump the content into a document */
230: if (! axl_doc_dump_to_file (doc, "test_42c.xml")) {
231: axl_error_report (error, -1, "Expected proper dump operation to file but it failed");
232: return axl_false;
233: } /* end if */
234:
235: /* free doc */
236: axl_doc_free (doc);
237:
238: /* open the document */
239: doc = axl_doc_parse_from_file ("test_42c.xml", error);
240: if (doc == NULL) {
241: printf ("Expected to open dumped document for CDATA check..\n");
242: return axl_false;
243: }
244:
245: /* get document root */
246: node = axl_doc_get_root (doc);
247: content = axl_node_get_content_trans (node, &size);
248:
249: if (! axl_cmp ("This is a test ]]> with not valid content <![CDATA[..]]>", content)) {
250: printf ("Content found: '%s'\n", content);
251: printf ("Content expected: '%s'\n", "This is a test ]]> with not valid content <![CDATA[..]]>");
252: axl_error_report (error, -1, "Expected to find different content in node found inside document dumped..");
253: return axl_false;
254: } /* end if */
255:
256: /* free content */
257: axl_free (content);
258:
259: /* free doc reference */
260: axl_doc_free (doc);
261:
262: doc = axl_doc_parse_from_file ("test_42d.xml", error);
263: if (doc == NULL) {
264: printf ("Expected to properly open test document test_42d.xml..\n");
265: return axl_false;
266: } /* end if */
267:
268: /* dump document */
269: if (! axl_doc_dump (doc, &content, &size)) {
270: printf ("Failed to dump document test_42d.xml..\n");
271: return axl_false;
272: } /* end if */
273:
274: /* free document */
275: axl_doc_free (doc);
276:
277: /* now create a document holding the content dumped */
278: doc = axl_doc_parse ("<body />", 8, error);
279: if (doc == NULL) {
280: printf ("Expected to find proper document parsing for <body />..\n");
281: return axl_false;
282: }
283:
284: /* set content */
285: node = axl_doc_get_root (doc);
286: axl_node_set_cdata_content (node, content, size);
287:
288: /* free content */
289: axl_free (content);
290:
291: /* now dump content created */
292: if (! axl_doc_dump (doc, &content, &size)) {
293: printf ("Failed to dump document test_42d.xml..\n");
294: return axl_false;
295: } /* end if */
296:
297: /* check content */
298: if (! axl_cmp (content,
299: "<?xml version='1.0' encoding='utf-8' ?><body><![CDATA[<?xml version='1.0' encoding='utf-8' ?><content><full-name><![CDATA[some data]]>]]><![CDATA[</full-name><nick><![CDATA[some data]]>]]><![CDATA[</nick><value><![CDATA[some data]]>]]><![CDATA[</value></content>]]></body>")) {
300: axl_error_report (error, -1, "Expected to find different value after dump operation..\n");
301: return axl_false;
302: }
303:
304: axl_free (content);
305: axl_doc_free (doc);
306:
307:
308: return axl_true;
309: }
310:
311: /**
312: * @brief Extended encoding support.
313: *
314: * @param error The optional axlError to be used to report erros.
315: *
316: * @return axl_true tests are ok, otherwise axl_false is returned.
317: */
318: axl_bool test_41 (axlError ** error)
319: {
320: axlDoc * doc;
321: axlNode * node;
322: int index;
323:
324: /* configure babel translate functions */
325: printf ("Test 41: init babel..\n");
326: if (! axl_babel_init (error))
327: return axl_false;
328:
329: /* check utf 8 */
330: printf ("Test 41: checking utf-8 engine..\n");
331: if (! axl_babel_check_utf8_content (test_41_iso_8859_15_value, strlen (test_41_iso_8859_15_value), &index)) {
332: printf ("ERROR: utf-8 content error found at index=%d..\n", index);
333: axl_error_new (-1, "Expected to find proper utf-8 content but it wasn't found", NULL, error);
334: return axl_false;
335: }
336:
337: /*** UTF-8 support */
338: /* test utf-8 encoding */
339: printf ("Test 41: test utf-8 support..\n");
340: doc = axl_doc_parse_from_file ("test_41.utf-8.xml", error);
341: if (doc == NULL)
342: return axl_false;
343:
344: /* find info node */
345: node = axl_doc_get_root (doc);
346: if (! NODE_CMP_NAME (node, "encodings")) {
347: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
348: return axl_false;
349: }
350:
351: axl_doc_free (doc);
352:
353: /* check unicode file without xml header */
354: printf ("Test 41: test utf-8 content without xml header..\n");
355: doc = axl_doc_parse_from_file ("test_41.utf-8.withoutheader.xml", error);
356: if (doc == NULL)
357: return axl_false;
358:
359: if (! axl_cmp (axl_doc_get_encoding (doc), "utf-8")) {
360: axl_error_new (-1, "Expected to find utf-8 content declaration but it wasn't found", NULL, error);
361: return axl_false;
362: }
363: axl_doc_free (doc);
364:
365: /* check unicode file without xml header */
366: printf ("Test 41: test wrong xml utf-8 content without xml header..\n");
367: doc = axl_doc_parse_from_file ("test_41.utf-8.wrongwithoutheader.xml", NULL);
368: if (doc != NULL)
369: return axl_false;
370:
371: /* test utf-8 encoding (wrong test) */
372: printf ("Test 41: test wrong utf-8 content..\n");
373: doc = axl_doc_parse_from_file ("test_41.utf-8.wrong.xml", error);
374: if (doc != NULL)
375: return axl_false;
376:
377: /* check unicode file without declaration */
378: printf ("Test 41: test utf-8 content without decleration..\n");
379: doc = axl_doc_parse_from_file ("test_41.utf-8.withoutencoding.xml", error);
380: if (doc == NULL)
381: return axl_false;
382:
383: if (! axl_cmp (axl_doc_get_encoding (doc), "utf-8")) {
384: axl_error_new (-1, "Expected to find utf-8 content declaration but it wasn't found", NULL, error);
385: return axl_false;
386: }
387: axl_doc_free (doc);
388:
389: /* check large unicode file without declearation */
390: printf ("Test 41: test large utf-8 content without decleration..\n");
391: doc = axl_doc_parse_from_file ("large.xml", error);
392: if (doc == NULL)
393: return axl_false;
394:
395: if (! axl_cmp (axl_doc_get_encoding (doc), "utf-8")) {
396: axl_error_new (-1, "Expected to find utf-8 content declaration but it wasn't found", NULL, error);
397: return axl_false;
398: }
399: axl_doc_free (doc);
400:
401: /*** ISO-8859-15 SUPPORT ***/
402: /* test iso-8859-15 encoding */
403: printf ("Test 41: test iso-8859-15..\n");
404: doc = axl_doc_parse_from_file ("test_41.iso-8859-15.xml", error);
405: if (doc == NULL)
406: return axl_false;
407:
408: /* find info node */
409: node = axl_doc_get_root (doc);
410: if (! NODE_CMP_NAME (node, "info")) {
411: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
412: return axl_false;
413: }
414:
415: /* check node content */
416: if (! axl_cmp (test_41_iso_8859_15_value,
417: axl_node_get_content (node, NULL))) {
418: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
419: (int) strlen (test_41_iso_8859_15_value), test_41_iso_8859_15_value,
420: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
421: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
422: return axl_false;
423: }
424:
425: /* free document */
426: axl_doc_free (doc);
427:
428: /*** ISO-8859-15 LARGE FILE ***/
429: printf ("Test 41: test iso-8859-15 large..\n");
430: /* now parse a large document that would require
431: * prebuffering */
432: doc = axl_doc_parse_from_file ("test_41.iso-8859-15.2.xml", error);
433: if (doc == NULL)
434: return axl_false;
435:
436: /* find info node */
437: node = axl_doc_get_root (doc);
438: if (! NODE_CMP_NAME (node, "info")) {
439: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
440: return axl_false;
441: }
442:
443: /* check utf-8 format */
444: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
445: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
446: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
447: return axl_false;
448: }
449:
450: if (strlen (axl_node_get_content (node, NULL)) != 26642) {
451: printf ("ERROR: expected content lenght %d but found %d\n",
452: (int) strlen (axl_node_get_content (node, NULL)), 26642);
453: }
454:
455: /* free document */
456: axl_doc_free (doc);
457:
458: /*** ISO-8859-1 support ***/
459: printf ("Test 41: test iso-8859-1..\n");
460: /* now parse a large document that would require
461: * prebuffering */
462: doc = axl_doc_parse_from_file ("test_41.iso-8859-1.xml", error);
463: if (doc == NULL)
464: return axl_false;
465:
466: /* find info node */
467: node = axl_doc_get_root (doc);
468: if (! NODE_CMP_NAME (node, "info")) {
469: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
470: return axl_false;
471: }
472:
473: /* check utf-8 format */
474: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
475: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
476: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
477: return axl_false;
478: }
479:
480: if (! axl_cmp (test_41_iso_8859_1_value,
481: axl_node_get_content (node, NULL))) {
482: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
483: (int) strlen (test_41_iso_8859_1_value), test_41_iso_8859_1_value,
484: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
485: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
486: return axl_false;
487: }
488:
489: /* free document */
490: axl_doc_free (doc);
491:
492: /*** ISO-8859-2 support ***/
493: printf ("Test 41: test iso-8859-2..\n");
494: /* now parse a large document that would require
495: * prebuffering */
496: doc = axl_doc_parse_from_file ("test_41.iso-8859-2.xml", error);
497: if (doc == NULL)
498: return axl_false;
499:
500: /* find info node */
501: node = axl_doc_get_root (doc);
502: if (! NODE_CMP_NAME (node, "info")) {
503: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
504: return axl_false;
505: }
506:
507: /* check utf-8 format */
508: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
509: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
510: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
511: return axl_false;
512: }
513:
514: if (! axl_cmp (test_41_iso_8859_2_value,
515: axl_node_get_content (node, NULL))) {
516: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
517: (int) strlen (test_41_iso_8859_2_value), test_41_iso_8859_2_value,
518: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
519: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
520: return axl_false;
521: }
522:
523: /* free document */
524: axl_doc_free (doc);
525:
526: /*** ISO-8859-3 support ***/
527: printf ("Test 41: test iso-8859-3..\n");
528: /* now parse a large document that would require
529: * prebuffering */
530: doc = axl_doc_parse_from_file ("test_41.iso-8859-3.xml", error);
531: if (doc == NULL)
532: return axl_false;
533:
534: /* find info node */
535: node = axl_doc_get_root (doc);
536: if (! NODE_CMP_NAME (node, "info")) {
537: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
538: return axl_false;
539: }
540:
541: /* check utf-8 format */
542: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
543: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
544: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
545: return axl_false;
546: }
547:
548: if (! axl_cmp (test_41_iso_8859_3_value,
549: axl_node_get_content (node, NULL))) {
550: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
551: (int) strlen (test_41_iso_8859_3_value), test_41_iso_8859_3_value,
552: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
553: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
554: return axl_false;
555: }
556:
557: /* free document */
558: axl_doc_free (doc);
559:
560: /*** ISO-8859-4 support ***/
561: printf ("Test 41: test iso-8859-4..\n");
562: /* now parse a large document that would require
563: * prebuffering */
564: doc = axl_doc_parse_from_file ("test_41.iso-8859-4.xml", error);
565: if (doc == NULL)
566: return axl_false;
567:
568: /* find info node */
569: node = axl_doc_get_root (doc);
570: if (! NODE_CMP_NAME (node, "info")) {
571: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
572: return axl_false;
573: }
574:
575: /* check utf-8 format */
576: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
577: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
578: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
579: return axl_false;
580: }
581:
582: if (! axl_cmp (test_41_iso_8859_4_value,
583: axl_node_get_content (node, NULL))) {
584: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
585: (int) strlen (test_41_iso_8859_4_value), test_41_iso_8859_4_value,
586: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
587: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
588: return axl_false;
589: }
590:
591: /* free document */
592: axl_doc_free (doc);
593:
594: /*** ISO-8859-5 support ***/
595: printf ("Test 41: test iso-8859-5..\n");
596: /* now parse a large document that would require
597: * prebuffering */
598: doc = axl_doc_parse_from_file ("test_41.iso-8859-5.xml", error);
599: if (doc == NULL)
600: return axl_false;
601:
602: /* find info node */
603: node = axl_doc_get_root (doc);
604: if (! NODE_CMP_NAME (node, "info")) {
605: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
606: return axl_false;
607: }
608:
609: /* check utf-8 format */
610: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
611: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
612: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
613: return axl_false;
614: }
615:
616: if (! axl_cmp (test_41_iso_8859_5_value,
617: axl_node_get_content (node, NULL))) {
618: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
619: (int) strlen (test_41_iso_8859_5_value), test_41_iso_8859_5_value,
620: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
621: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
622: return axl_false;
623: }
624:
625: /* free document */
626: axl_doc_free (doc);
627:
628: /*** ISO-8859-6 support ***/
629: printf ("Test 41: test iso-8859-6..\n");
630: /* now parse a large document that would require
631: * prebuffering */
632: doc = axl_doc_parse_from_file ("test_41.iso-8859-6.xml", error);
633: if (doc == NULL)
634: return axl_false;
635:
636: /* find info node */
637: node = axl_doc_get_root (doc);
638: if (! NODE_CMP_NAME (node, "info")) {
639: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
640: return axl_false;
641: }
642:
643: /* check utf-8 format */
644: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
645: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
646: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
647: return axl_false;
648: }
649:
650: if (! axl_cmp (test_41_iso_8859_6_value,
651: axl_node_get_content (node, NULL))) {
652: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
653: (int) strlen (test_41_iso_8859_6_value), test_41_iso_8859_6_value,
654: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
655: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
656: return axl_false;
657: }
658:
659: /* free document */
660: axl_doc_free (doc);
661:
662: /*** ISO-8859-7 support ***/
663: printf ("Test 41: test iso-8859-7..\n");
664: /* now parse a large document that would require
665: * prebuffering */
666: doc = axl_doc_parse_from_file ("test_41.iso-8859-7.xml", error);
667: if (doc == NULL)
668: return axl_false;
669:
670: /* find info node */
671: node = axl_doc_get_root (doc);
672: if (! NODE_CMP_NAME (node, "info")) {
673: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
674: return axl_false;
675: }
676:
677: /* check utf-8 format */
678: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
679: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
680: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
681: return axl_false;
682: }
683:
684: if (! axl_cmp (test_41_iso_8859_7_value,
685: axl_node_get_content (node, NULL))) {
686: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
687: (int) strlen (test_41_iso_8859_7_value), test_41_iso_8859_7_value,
688: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
689: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
690: return axl_false;
691: }
692:
693: /* free document */
694: axl_doc_free (doc);
695:
696: /*** ISO-8859-8 support ***/
697: printf ("Test 41: test iso-8859-8..\n");
698: /* now parse a large document that would require
699: * prebuffering */
700: doc = axl_doc_parse_from_file ("test_41.iso-8859-8.xml", error);
701: if (doc == NULL)
702: return axl_false;
703:
704: /* find info node */
705: node = axl_doc_get_root (doc);
706: if (! NODE_CMP_NAME (node, "info")) {
707: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
708: return axl_false;
709: }
710:
711: /* check utf-8 format */
712: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
713: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
714: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
715: return axl_false;
716: }
717:
718: if (! axl_cmp (test_41_iso_8859_8_value,
719: axl_node_get_content (node, NULL))) {
720: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
721: (int) strlen (test_41_iso_8859_8_value), test_41_iso_8859_8_value,
722: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
723: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
724: return axl_false;
725: }
726:
727: /* free document */
728: axl_doc_free (doc);
729:
730: /*** ISO-8859-9 support ***/
731: printf ("Test 41: test iso-8859-9..\n");
732: /* now parse a large document that would require
733: * prebuffering */
734: doc = axl_doc_parse_from_file ("test_41.iso-8859-9.xml", error);
735: if (doc == NULL)
736: return axl_false;
737:
738: /* find info node */
739: node = axl_doc_get_root (doc);
740: if (! NODE_CMP_NAME (node, "info")) {
741: axl_error_new (-1, "Expected to find root node called <info> but it wasn't found", NULL, error);
742: return axl_false;
743: }
744:
745: /* check utf-8 format */
746: if (! axl_babel_check_utf8_content (axl_node_get_content (node, NULL), -1, &index)) {
747: printf ("ERROR: found utf-8 content error at index=%d..\n", index);
748: axl_error_new (-1, "Expected to find proper utf-8 content but a failure was found", NULL, error);
749: return axl_false;
750: }
751:
752: if (! axl_cmp (test_41_iso_8859_9_value,
753: axl_node_get_content (node, NULL))) {
754: printf ("Found diferences at node content: (size: %d)'%s' != (size: %d) '%s'..\n",
755: (int) strlen (test_41_iso_8859_9_value), test_41_iso_8859_9_value,
756: (int) strlen (axl_node_get_content (node, NULL)), axl_node_get_content (node, NULL));
757: axl_error_new (-1, "Found diferences at node content..\n", NULL, error);
758: return axl_false;
759: }
760:
761: /* free document */
762: axl_doc_free (doc);
763: return axl_true;
764:
765:
766:
767: /* test utf-16 encoding */
768: doc = axl_doc_parse_from_file ("test_41.utf-16.xml", error);
769: if (doc == NULL)
770: return axl_false;
771:
772: /* check document content to ensure values */
773:
774: /* free document */
775: axl_free (doc);
776:
777: /* finish babel */
778: axl_babel_finish ();
779:
780: return axl_true;
781: }
782:
783: /**
784: * @brief Avoid including recursively white spaces content into dumped
785: * documents.
786: *
787: * @param error The optional axlError to be used to report erros.
788: *
789: * @return axl_true tests are ok, otherwise axl_false is returned.
790: */
791: axl_bool test_40 (axlError ** error)
792: {
793: axlDoc * doc = axl_doc_parse_from_file ("test_40.xml", error);
794: axlDoc * doc2;
795: axlNode * node;
796: axlItem * item;
797: char * content;
798: char * content2;
799:
800: if (doc == NULL)
801: return axl_false;
802:
803: /* now dump the document */
804: if (! axl_doc_dump_pretty_to_file (doc, "test_40.xml.test", 8))
805: return axl_false;
806:
807: /* now parse dumped document */
808: doc2 = axl_doc_parse_from_file ("test_40.xml.test", error);
809: if (doc2 == NULL)
810: return axl_false;
811:
812: /* check comment content */
813: node = axl_doc_get_root (doc2);
814:
815: item = axl_item_get_first_child (node);
816:
817: content = axl_item_get_content (item, NULL);
818: if (content == NULL) {
819: axl_error_new (-1, "Expected to find content defined for first axl item found inside test_40.xml", NULL, error);
820: return axl_false;
821: }
822:
823: node = axl_doc_get_root (doc);
824: item = axl_item_get_first_child (node);
825: content2 = axl_item_get_content (item, NULL);
826: if (content2 == NULL) {
827: axl_error_new (-1, "Expected to find content defined for first axl item found inside test_40.xml.test", NULL, error);
828: return axl_false;
829: }
830:
831:
832: /* check content */
833: if (! axl_cmp (content, content2)) {
834: printf ("Failed, expected equal content, but found differences: (%d)'%s' != (%d)'%s'\n",
835: (int) strlen (content), content, (int) strlen (content2), content2);
836: axl_error_new (-1, "Failed, expected equal content, but found differences", NULL, error);
837: return axl_false;
838: }
839:
840: axl_doc_free (doc);
841: axl_doc_free (doc2);
842:
843: return axl_true;
844: }
845:
846: /* include inline dtd definition (test_39) */
847: #include <channel.dtd.h>
848: #include <fact.dtd.h>
849: #include <xml-rpc.dtd.h>
850: #include <tls.dtd.h>
851:
852: /**
853: * @brief Check DTD validation error found.
854: *
855: * @param error The optional axlError to be used to report erros.
856: *
857: * @return axl_true if the validity test is passed, otherwise axl_false is
858: * returned.
859: */
860: axl_bool test_39 (axlError ** error)
861: {
862: axlDtd * dtd;
863: axlDtd * dtd2;
864:
865: /* check channel.dtd */
866: dtd = axl_dtd_parse (CHANNEL_DTD, -1, error);
867: if (dtd == NULL) {
868: return axl_false;
869: }
870:
871: dtd2 = axl_dtd_parse_from_file ("channel.dtd", error);
872: if (dtd2 == NULL)
873: return axl_false;
874:
875: /* check if both dtds are equal */
876: if (! axl_dtd_are_equal (dtd, dtd2)) {
877: axl_error_new (-1, "Expected to find equal dtd definitions, but axl_dtd_are_equal failed", NULL, error);
878: return axl_false;
879: }
880:
881: /* free dtd and doc */
882: axl_dtd_free (dtd);
883: axl_dtd_free (dtd2);
884:
885: /* check channel.dtd */
886: dtd = axl_dtd_parse (FACT_DTD, -1, error);
887: if (dtd == NULL) {
888: return axl_false;
889: }
890:
891: dtd2 = axl_dtd_parse_from_file ("fact.dtd", error);
892: if (dtd2 == NULL)
893: return axl_false;
894:
895: /* check if both dtds are equal */
896: if (! axl_dtd_are_equal (dtd, dtd2)) {
897: axl_error_new (-1, "Expected to find equal dtd definitions, but axl_dtd_are_equal failed", NULL, error);
898: return axl_false;
899: }
900:
901: /* free dtd and doc */
902: axl_dtd_free (dtd);
903: axl_dtd_free (dtd2);
904:
905: /* check channel.dtd */
906: dtd = axl_dtd_parse (XML_RPC_DTD, -1, error);
907: if (dtd == NULL) {
908: return axl_false;
909: }
910:
911: dtd2 = axl_dtd_parse_from_file ("xml-rpc.dtd", error);
912: if (dtd2 == NULL)
913: return axl_false;
914:
915: /* check if both dtds are equal */
916: if (! axl_dtd_are_equal (dtd, dtd2)) {
917: axl_error_new (-1, "Expected to find equal dtd definitions, but axl_dtd_are_equal failed", NULL, error);
918: return axl_false;
919: }
920:
921: /* free dtd and doc */
922: axl_dtd_free (dtd);
923: axl_dtd_free (dtd2);
924:
925: /* check channel.dtd */
926: dtd = axl_dtd_parse (TLS_DTD, -1, error);
927: if (dtd == NULL) {
928: return axl_false;
929: }
930:
931: dtd2 = axl_dtd_parse_from_file ("tls.dtd", error);
932: if (dtd2 == NULL)
933: return axl_false;
934:
935: /* check if both dtds are equal */
936: if (! axl_dtd_are_equal (dtd, dtd2)) {
937: axl_error_new (-1, "Expected to find equal dtd definitions, but axl_dtd_are_equal failed", NULL, error);
938: return axl_false;
939: }
940:
941: /* free dtd and doc */
942: axl_dtd_free (dtd);
943: axl_dtd_free (dtd2);
944:
945: return axl_true;
946: }
947:
948:
949: /**
950: * @brief Check DTD validation error found.
951: *
952: * @param error The optional axlError to be used to report erros.
953: *
954: * @return axl_true if the validity test is passed, otherwise axl_false is
955: * returned.
956: */
957: axl_bool test_38 (axlError ** error)
958: {
959: axlDtd * dtd;
960: axlDoc * doc;
961:
962: dtd = axl_dtd_parse_from_file ("test_38.dtd", error);
963: if (dtd == NULL)
964: return axl_false;
965:
966: doc = axl_doc_parse_from_file ("test_38.xml", error);
967: if (doc == NULL)
968: return axl_false;
969:
970: /* validate */
971: if (! axl_dtd_validate (doc, dtd, error)) {
972: axl_error_new (-1, "Expected to find proper a validation for the test (IDREF references)", NULL, error);
973: return axl_false;
974: }
975:
976: /* free dtd and doc */
977: axl_dtd_free (dtd);
978: axl_doc_free (doc);
979:
980: return axl_true;
981: }
982:
983: /**
984: * @brief Check if it is possible to dettach the root node.
985: *
986: * @param error The optional axlError to be used to report erros.
987: *
988: * @return axl_true if the validity test is passed, otherwise axl_false is
989: * returned.
990: */
991: axl_bool test_37 (axlError ** error)
992: {
993:
994: axlDoc * doc;
995: axlDoc * doc2;
996: axlNode * root;
997:
998: /* parse file */
999: doc = axl_doc_parse ("<child> This is content, more content </child>", -1, error);
1000: if (doc == NULL)
1001: return axl_false;
1002:
1003: doc2 = axl_doc_parse ("<child />", -1, error);
1004: if (doc2 == NULL)
1005: return axl_false;
1006:
1007: /* clear content */
1008: root = axl_doc_get_root (doc);
1009: axl_node_set_is_empty (root, axl_true);
1010:
1011: if (! axl_doc_are_equal (doc, doc2)) {
1012: axl_error_new (-1, "Expected equal documents, not found", NULL, error);
1013: return axl_false;
1014: }
1015:
1016: axl_doc_free (doc);
1017: axl_doc_free (doc2);
1018:
1019: return axl_true;
1020: }
1021:
1022: /**
1023: * @brief Check if it is possible to dettach the root node.
1024: *
1025: * @param error The optional axlError to be used to report erros.
1026: *
1027: * @return axl_true if the validity test is passed, otherwise axl_false is
1028: * returned.
1029: */
1030: axl_bool test_36 (axlError ** error)
1031: {
1032: /* parse the document */
1033: axlDoc * doc = axl_doc_parse_from_file ("test_35.xml", error);
1034: axlNode * root;
1035:
1036: /* check returned document */
1037: if (doc == NULL)
1038: return axl_false;
1039:
1040: /* now get the root node and detach it */
1041: root = axl_doc_get_root (doc);
1042: axl_node_deattach (root);
1043:
1044: /* free the node */
1045: axl_node_free (root);
1046:
1047: /* free the document */
1048: axl_doc_free (doc);
1049:
1050: root = axl_node_parse_strings (error,
1051: "<child>",
1052: " <widget class=\"GtkLabel\" id=\"label4\">",
1053: " <property name=\"visible\">True</property>",
1054: " <property name=\"label\" translatable=\"yes\"><b>1. Seleccione el sistema:</b></property>",
1055: " <property name=\"use_underline\">False</property>",
1056: " <property name=\"use_markup\">True</property>",
1057: " <property name=\"justify\">GTK_JUSTIFY_LEFT</property>",
1058: " <property name=\"wrap\">False</property>",
1059: " <property name=\"selectable\">False</property>",
1060: " <property name=\"xalign\">0</property>",
1061: " <property name=\"yalign\">0.5</property>",
1062: " <property name=\"xpad\">0</property>",
1063: " <property name=\"ypad\">0</property>",
1064: " <property name=\"ellipsize\">PANGO_ELLIPSIZE_NONE</property>",
1065: " <property name=\"width_chars\">-1</property>",
1066: " <property name=\"single_line_mode\">False</property>",
1067: " <property name=\"angle\">0</property>",
1068: " </widget>",
1069: " <packing>",
1070: " <property name=\"padding\">0</property>",
1071: " <property name=\"expand\">False</property>",
1072: " <property name=\"fill\">False</property>",
1073: " </packing>",
1074: "</child>",
1075: NULL);
1076: if (root == NULL) {
1077: printf ("Error: unable to parse content..\n");
1078: return axl_false;
1079: }
1080:
1081: axl_node_free (root);
1082:
1083: /* create the node using the parse api */
1084: root = axl_node_parse (error, "<child><widget class=\"GtkLabel\" id=\"label4\"/></child>");
1085: if (root == NULL) {
1086: printf ("Error: unable to parse content..\n");
1087: return axl_false;
1088: }
1089:
1090: axl_node_free (root);
1091:
1092:
1093: return axl_true;
1094:
1095: }
1096:
1097: /**
1098: * @brief Checks a bug while opening a document.
1099: *
1100: * @param error The optional axlError to be used to report erros.
1101: *
1102: * @return axl_true if the validity test is passed, otherwise axl_false is
1103: * returned.
1104: */
1105: axl_bool test_35 (axlError ** error)
1106: {
1107: /* parse the document */
1108: axlDoc * doc = axl_doc_parse_from_file ("test_35.xml", error);
1109:
1110: if (doc == NULL)
1111: return axl_false;
1112:
1113: /* free the document */
1114: axl_doc_free (doc);
1115:
1116: return axl_true;
1117:
1118: }
1119:
1120: /**
1121: * @brief Checks a bug while triming strings.
1122: *
1123: * @param error The optional axlError to be used to report erros.
1124: *
1125: * @return axl_true if the validity test is passed, otherwise axl_false is
1126: * returned.
1127: */
1128: axl_bool test_34 (axlError ** error)
1129: {
1130: char * string = axl_strdup (" ");
1131:
1132: axl_stream_trim (string);
1133: if (strlen (string) != 0) {
1134: axl_error_new (-1, "Expected to find empty string after trim operation, but not found", NULL, error);
1135: return axl_false;
1136: }
1137:
1138: axl_free (string);
1139:
1140: /* more length */
1141: string = axl_strdup (" ");
1142:
1143: axl_stream_trim (string);
1144: if (strlen (string) != 0) {
1145: axl_error_new (-1, "Expected to find empty string after trim operation, but not found", NULL, error);
1146: return axl_false;
1147: }
1148:
1149: axl_free (string);
1150:
1151: /* more length with one byte */
1152: string = axl_strdup (" a ");
1153:
1154: axl_stream_trim (string);
1155: if (strlen (string) != 1) {
1156: axl_error_new (-1, "Expected to find one byte length string after trim operation, but not found", NULL, error);
1157: return axl_false;
1158: }
1159:
1160: axl_free (string);
1161:
1162: return axl_true;
1163: }
1164:
1165: /**
1166: * @brief Checks a recursive root node configuration.
1167: *
1168: * @param error The optional axlError to be used to report erros.
1169: *
1170: * @return axl_true if the validity test is passed, otherwise axl_false is
1171: * returned.
1172: */
1173: axl_bool test_33 (axlError ** error)
1174: {
1175: axlDoc * doc;
1176: axlNode * node;
1177: axlNode * temp;
1178: int iterator;
1179:
1180: /* create an empty document */
1181: doc = axl_doc_create (NULL, NULL, axl_true);
1182:
1183: /* set the root node */
1184: node = axl_node_create ("test");
1185: axl_doc_set_root (doc, node);
1186:
1187: /* create a root node */
1188: iterator = 0;
1189: while (iterator < 2) {
1190: /* get current root */
1191: temp = axl_doc_get_root (doc);
1192:
1193: /* create a new root */
1194: node = axl_node_create ("test");
1195:
1196: /* configure the new root */
1197: axl_doc_set_root (doc, node);
1198:
1199: /* configure the child */
1200: axl_node_set_child (node, temp);
1201:
1202: /* next iterator */
1203: iterator++;
1204: }
1205:
1206: /* free */
1207: axl_doc_free (doc);
1208:
1209: return axl_true;
1210: }
1211:
1212: /**
1213: * @brief Test DTD attribute declaration support <!ATTLIST > using IDREF
1214: * declarations.
1215: *
1216: * @param error The optional axlError to be used to report errors.
1217: *
1218: * @return axl_true if the validity test is passed, axl_false if not.
1219: */
1220: axl_bool test_32 (axlError ** error) {
1221:
1222: axlDtd * dtd;
1223: axlDoc * doc;
1224:
1225: dtd = axl_dtd_parse_from_file ("test_32.dtd", error);
1226: if (dtd == NULL)
1227: return axl_false;
1228:
1229: doc = axl_doc_parse_from_file ("test_32.xml", error);
1230: if (doc == NULL)
1231: return axl_false;
1232:
1233: /* validate */
1234: if (! axl_dtd_validate (doc, dtd, error)) {
1235: axl_error_new (-1, "Expected to find a validation error for the test (IDREF references)", NULL, error);
1236: return axl_false;
1237: }
1238:
1239: /* free dtd and doc */
1240: axl_dtd_free (dtd);
1241: axl_doc_free (doc);
1242:
1243: return axl_true;
1244: }
1245:
1246: /**
1247: * @brief Test DTD attribute declaration support <!ATTLIST > using ID
1248: * declarations.
1249: *
1250: * @param error The optional axlError to be used to report errors.
1251: *
1252: * @return axl_true if the validity test is passed, axl_false if not.
1253: */
1254: axl_bool test_31 (axlError ** error) {
1255:
1256: axlDtd * dtd;
1257: axlDoc * doc;
1258:
1259: dtd = axl_dtd_parse_from_file ("test_31.dtd", error);
1260: if (dtd == NULL)
1261: return axl_false;
1262:
1263: doc = axl_doc_parse_from_file ("test_31.xml", error);
1264: if (doc == NULL)
1265: return axl_false;
1266:
1267: /* validate */
1268: if (! axl_dtd_validate (doc, dtd, error)) {
1269: axl_error_new (-1, "Expected to find a validation error for the test (unique ID)", NULL, error);
1270: return axl_false;
1271: }
1272:
1273: /* free dtd and doc */
1274: axl_dtd_free (dtd);
1275: axl_doc_free (doc);
1276:
1277: dtd = axl_dtd_parse_from_file ("test_31a.dtd", error);
1278: if (dtd != NULL) {
1279: axl_error_new (-1, "Expected to find a error due to double declaration for an ID attribute, but DTD was loaded ok", NULL, error);
1280: axl_dtd_free (dtd);
1281: return axl_false;
1282: }
1283: axl_error_free (*error);
1284: *error = NULL;
1285:
1286: return axl_true;
1287: }
1288:
1289:
1290: /**
1291: * @brief Test DTD attribute declaration support <!ATTLIST >
1292: *
1293: * @param error The optional axlError to be used to report errors.
1294: *
1295: * @return axl_true if the validity test is passed, axl_false if not.
1296: */
1297: axl_bool test_30 (axlError ** error) {
1298:
1299: axlDtd * dtd;
1300: axlDtdAttribute * attr;
1301: axlDoc * doc;
1302:
1303: dtd = axl_dtd_parse_from_file ("test_30.dtd", error);
1304: if (dtd == NULL)
1305: return axl_false;
1306:
1307: /* get the declarations found */
1308: attr = axl_dtd_get_attr (dtd, "node");
1309: if (attr == NULL) {
1310: axl_error_new (-1, "expected to find attribute declaration, but not found", NULL, error);
1311: return axl_false;
1312: } /* end if */
1313:
1314: /* get the declarations found */
1315: attr = axl_dtd_get_attr (dtd, "node1");
1316: if (attr != NULL) {
1317: axl_error_new (-1, "expected to NOT find attribute declaration, but not found", NULL, error);
1318: return axl_false;
1319: } /* end if */
1320:
1321: /* check the number of contraints */
1322: if (axl_dtd_get_attr_contraints (dtd, "node") != 3) {
1323: axl_error_new (-1, "expected to find 2 contraints for the <node>, but not found", NULL, error);
1324: return axl_false;
1325: } /* end if */
1326:
1327: doc = axl_doc_parse_from_file ("test_30.xml", error);
1328: if (doc == NULL) {
1329: axl_error_new (-1, "unable to parse file to check attribute validation", NULL, error);
1330: return axl_false;
1331: }
1332:
1333: /* validate */
1334: if (! axl_dtd_validate (doc, dtd, error))
1335: return axl_false;
1336:
1337: axl_doc_free (doc);
1338:
1339: doc = axl_doc_parse_from_file ("test_30a.xml", error);
1340: if (doc == NULL) {
1341: axl_error_new (-1, "unable to parse file to check attribute validation", NULL, error);
1342: return axl_false;
1343: }
1344:
1345: /* validate */
1346: if (axl_dtd_validate (doc, dtd, error)) {
1347: axl_error_new (-1, "Expected to find non-proper validation for enum value (2), inside attlist declaration", NULL, error);
1348: return axl_false;
1349: }
1350: axl_error_free (*error);
1351:
1352: axl_dtd_free (dtd);
1353:
1354: dtd = axl_dtd_parse_from_file ("test_30b.dtd", error);
1355: if (dtd == NULL)
1356: return axl_false;
1357:
1358:
1359: /* validate */
1360: if (axl_dtd_validate (doc, dtd, error)) {
1361: axl_error_new (-1, "Expected to find non-proper validation for required value, inside attlist declaration", NULL, error);
1362: return axl_false;
1363: }
1364: axl_error_free (*error);
1365:
1366: axl_doc_free (doc);
1367:
1368: doc = axl_doc_parse_from_file ("test_30b.xml", error);
1369: if (doc == NULL) {
1370: axl_error_new (-1, "unable to parse file to check attribute validation", NULL, error);
1371: return axl_false;
1372: }
1373:
1374: /* validate */
1375: if (! axl_dtd_validate (doc, dtd, error)) {
1376: axl_error_new (-1, "Expected to FIND proper validation for required value, inside attlist declaration", NULL, error);
1377: return axl_false;
1378: }
1379:
1380: axl_doc_free (doc);
1381: axl_dtd_free (dtd);
1382: return axl_true;
1383: }
1384:
1385: #ifdef AXL_NS_SUPPORT
1386:
1387: #define HTML_NS "http://www.w3.org/1999/xhtml"
1388: #define BOOK_NS "urn:loc.gov:books"
1389: #define ISBN_NS "urn:ISBN:0-395-36341-6"
1390:
1391: /**
1392: * @brief Test namespace defaulting support from axl ns library.
1393: *
1394: * @param error The optional axlError to be used to report errors.
1395: *
1396: * @return axl_true if the validity test is passed, axl_false if not.
1397: */
1398: axl_bool test_29 (axlError ** error)
1399: {
1400: axlDoc * doc;
1401: axlNode * node;
1402:
1403: /* parse namespace file */
1404: doc = axl_doc_parse_from_file ("test_29.xml", error);
1405: if (doc == NULL)
1406: return axl_false;
1407:
1408: /* call to validate namespace */
1409: if (! axl_ns_doc_validate (doc, error))
1410: return axl_false;
1411:
1412: /* get root document */
1413: node = axl_doc_get_root (doc);
1414:
1415: /* find number inside isbn namespace */
1416: node = axl_ns_node_find_called (node, HTML_NS, "p");
1417: if (node == NULL || ! axl_ns_node_cmp (node, HTML_NS, "p")) {
1418: axl_error_new (-1, "Expected to find xhtml p node, but it wasn't found", NULL, error);
1419: return axl_false;
1420: } /* end if */
1421:
1422: /* get root document */
1423: node = axl_doc_get_root (doc);
1424:
1425: /* find number inside isbn namespace */
1426: node = axl_ns_node_get_child_called (node, ISBN_NS, "number");
1427: if (node == NULL || ! axl_ns_node_cmp (node, ISBN_NS, "number")) {
1428: axl_error_new (-1, "Expected to find isbn number node, but it wasn't found", NULL, error);
1429: return axl_false;
1430: } /* end if */
1431:
1432: /* find number inside isbn namespace */
1433: node = axl_ns_node_get_next_called (node, ISBN_NS, "test");
1434: if (node == NULL || ! axl_ns_node_cmp (node, ISBN_NS, "test")) {
1435: axl_error_new (-1, "Expected to find isbn test node, but it wasn't found", NULL, error);
1436: return axl_false;
1437: } /* end if */
1438:
1439:
1440: /* free document */
1441: axl_doc_free (doc);
1442:
1443: return axl_true;
1444: }
1445:
1446: /**
1447: * @brief Test namespace defaulting support from axl ns library.
1448: *
1449: * @param error The optional axlError to be used to report errors.
1450: *
1451: * @return axl_true if the validity test is passed, axl_false if not.
1452: */
1453: axl_bool test_28 (axlError ** error)
1454: {
1455: axlDoc * doc;
1456: axlNode * node;
1457:
1458: /* parse namespace file */
1459: doc = axl_doc_parse_from_file ("test_28.xml", error);
1460: if (doc == NULL)
1461: return axl_false;
1462:
1463: /* call to validate namespace */
1464: if (! axl_ns_doc_validate (doc, error))
1465: return axl_false;
1466:
1467: /* get root document */
1468: node = axl_doc_get_root (doc);
1469:
1470: /* get following node */
1471: node = axl_node_get_first_child (node);
1472:
1473: /* check default namespace */
1474: if (! axl_ns_node_cmp (node, HTML_NS, "table")) {
1475: axl_error_new (-1, "expected to find a valid ns-node-cmp, but it wasn't found", NULL, error);
1476: return axl_false;
1477: }
1478:
1479: /* get the following */
1480: node = axl_node_get_first_child (node);
1481:
1482: /* check default namespace */
1483: if (! axl_ns_node_cmp (node, HTML_NS, "th")) {
1484: axl_error_new (-1, "expected to find a valid ns-node-cmp, but it wasn't found", NULL, error);
1485: return axl_false;
1486: }
1487:
1488: axl_doc_free (doc);
1489:
1490: return axl_true;
1491: }
1492:
1493: /**
1494: * @brief Test namespace support from axl ns library.
1495: *
1496: * @param error The optional axlError to be used to report errors.
1497: *
1498: * @return axl_true if the validity test is passed, axl_false if not.
1499: */
1500: axl_bool test_27 (axlError ** error)
1501: {
1502: axlDoc * doc;
1503: axlNode * node;
1504:
1505: /* parse namespace file */
1506: doc = axl_doc_parse_from_file ("test_27.xml", error);
1507: if (doc == NULL)
1508: return axl_false;
1509:
1510: /* call to validate namespace */
1511: if (! axl_ns_doc_validate (doc, error))
1512: return axl_false;
1513:
1514: /* get root document */
1515: node = axl_doc_get_root (doc);
1516:
1517: if (! axl_ns_node_cmp (node, BOOK_NS, "book")) {
1518: axl_error_new (-1, "expected to find a valid ns-node-cmp, but it wasn't found", NULL, error);
1519: return axl_false;
1520: }
1521:
1522: /* get first child */
1523: node = axl_node_get_first_child (node);
1524:
1525: if (! axl_ns_node_cmp (node, BOOK_NS, "title")) {
1526: axl_error_new (-1, "expected to find a failure validating with ns-node-cmp, but it wasn't found", NULL, error);
1527: return axl_false;
1528: }
1529:
1530: node = axl_node_get_next (node);
1531: if (axl_ns_node_cmp (node, BOOK_NS, "number")) {
1532: axl_error_new (-1, "expected to find a failure validating with ns-node-cmp, but it wasn't found", NULL, error);
1533: return axl_false;
1534: }
1535:
1536: /* get next */
1537: if (! axl_ns_node_cmp (node, ISBN_NS, "number")) {
1538: axl_error_new (-1, "expected to find a valid ns-node-cmp, but it wasn't found", NULL, error);
1539: return axl_false;
1540: }
1541:
1542: axl_doc_free (doc);
1543:
1544: return axl_true;
1545: }
1546:
1547:
1548: /**
1549: * @brief Test namespace support from axl ns library.
1550: *
1551: * @param error The optional axlError to be used to report errors.
1552: *
1553: * @return axl_true if the validity test is passed, axl_false if not.
1554: */
1555: axl_bool test_26 (axlError ** error)
1556: {
1557: axlDoc * doc;
1558:
1559: /* parse namespace file */
1560: doc = axl_doc_parse_from_file ("test_26.xml", error);
1561: if (doc == NULL)
1562: return axl_false;
1563:
1564: /* call to validate namespace */
1565: if (! axl_ns_doc_validate (doc, error))
1566: return axl_false;
1567:
1568: axl_doc_free (doc);
1569:
1570: /* parse a namespace file that do not follow rules (node) */
1571: doc = axl_doc_parse_from_file ("test_26b.xml", error);
1572: if (doc == NULL)
1573: return axl_false;
1574:
1575: /* call to validate namespace */
1576: if (axl_ns_doc_validate (doc, error)) {
1577: axl_error_new (-1, "Expected to find ns validation error, but not found (test_26b)", NULL, error);
1578: return axl_false;
1579: }
1580: axl_error_free (*error);
1581:
1582: axl_doc_free (doc);
1583:
1584: /* parse a namespace file that do not follow rules (attribute) */
1585: doc = axl_doc_parse_from_file ("test_26c.xml", error);
1586: if (doc == NULL)
1587: return axl_false;
1588:
1589: /* call to validate namespace */
1590: if (axl_ns_doc_validate (doc, error)) {
1591: axl_error_new (-1, "Expected to find ns validation error, but not found (test_26c)", NULL, error);
1592: return axl_false;
1593: }
1594: axl_error_free (*error);
1595:
1596: axl_doc_free (doc);
1597:
1598: return axl_true;
1599: }
1600:
1601: #endif /* end #ifdef AXL_NS_SUPPORT */
1602:
1603: /**
1604: * @brief Test Axl Item API while performing lookups.
1605: *
1606: * @param error The optional axlError to be used to report errors.
1607: *
1608: * @return axl_true if the validity test is passed, axl_false if not.
1609: */
1610: axl_bool test_25 (axlError ** error) {
1611:
1612: axlDoc * doc;
1613: axlNode * root;
1614: axlNode * node;
1615:
1616: /* load the document */
1617: doc = axl_doc_parse_from_file ("test_23.xml", error);
1618: if (doc == NULL)
1619: return axl_false;
1620:
1621: /* get root node */
1622: root = axl_doc_get_root (doc);
1623:
1624: /* lookup a node */
1625: node = axl_node_find_called (root, "child3");
1626:
1627: if (! NODE_CMP_NAME (node, "child3")) {
1628: axl_error_new (-1, "Expected to find <child3> node but it wasn't found", NULL, error);
1629: return axl_false;
1630: }
1631:
1632: /* lookup a node */
1633: node = axl_node_find_called (root, "strong");
1634:
1635: if (! NODE_CMP_NAME (node, "strong")) {
1636: axl_error_new (-1, "Expected to find <strong> node but it wasn't found", NULL, error);
1637: return axl_false;
1638: }
1639:
1640: if (! axl_cmp (axl_node_get_content (node, NULL), "this content goes\n bold")) {
1641: axl_error_new (-1, "Expected to find <strong> node content, but it wasn't found", NULL, error);
1642: return axl_false;
1643: }
1644:
1645: /* lookup a node */
1646: node = axl_node_find_called (root, "strong1");
1647: if (node != NULL) {
1648: axl_error_new (-1, "Expected to not find node content, but it wasn't found", NULL, error);
1649: return axl_false;
1650: }
1651:
1652: /* free the document */
1653: axl_doc_free (doc);
1654:
1655: return axl_true;
1656: }
1657:
1658:
1659: /**
1660: * @brief Test Axl Item API while replacing nodes and adding content
1661: * on a particular position.
1662: *
1663: * @param error The optional axlError to be used to report errors.
1664: *
1665: * @return axl_true if the validity test is passed, axl_false if not.
1666: */
1667: axl_bool test_24 (axlError ** error) {
1668: if (! axl_node_has_invalid_chars ("MEDIR PIEZAS S/MUESTREO EN MAQUINA DE VISION SIN CONTACTO\n\
1669: \n\
1670: LOTES<10 UDS. 100%PIEZAS\n\
1671: 10 UDS.<LOTES<20 UDS. 10+20% (SOBRE 10 PIEZAS)\n\
1672: LOTES>20 UDS 12+10% (SOBRE 20 PIEZAS) \n\
1673: \n\
1674: ¡ATENCION!!!!\n\
1675: MANIPULAR PIEZAS CON GUANTES DE LATEX EVITANDO CONTAMINAR LAS PIEZAS", -1, NULL)) {
1676: axl_error_new (-1, "Expected to find invalid characters, but it wasn't found", NULL, error);
1677: return axl_false;
1678: }
1679:
1680: if (axl_node_has_invalid_chars ("MEDIR PIEZAS S/MUESTREO EN MAQUINA DE VISION SIN CONTACTO\n\
1681: \n\
1682: LOTES 10 UDS. 100%PIEZAS\n\
1683: 10 UDS. LOTES 20 UDS. 10+20% (SOBRE 10 PIEZAS)\n\
1684: LOTES20 UDS 12+10% (SOBRE 20 PIEZAS) \n\
1685: \n\
1686: ¡ATENCION!!!!\n\
1687: MANIPULAR PIEZAS CON GUANTES DE LATEX EVITANDO CONTAMINAR LAS PIEZAS", -1, NULL)) {
1688: axl_error_new (-1, "Expected to find valid characters, but it wasn't found", NULL, error);
1689: return axl_false;
1690: }
1691:
1692: return axl_true;
1693: }
1694:
1695: /**
1696: * @brief Test Axl Item API while replacing nodes and adding content
1697: * on a particular position.
1698: *
1699: * @param error The optional axlError to be used to report errors.
1700: *
1701: * @return axl_true if the validity test is passed, axl_false if not.
1702: */
1703: axl_bool test_23 (axlError ** error)
1704: {
1705: axlDoc * doc;
1706: axlDoc * doc2;
1707: axlNode * node;
1708: axlItem * item;
1709:
1710: /* load the document */
1711: doc = axl_doc_parse_from_file ("test_23.xml", error);
1712: if (doc == NULL)
1713: return axl_false;
1714:
1715: /* get the child1 node */
1716: node = axl_doc_get (doc, "/document/childs/child3a");
1717: if (node == NULL) {
1718: axl_error_new (-1, "Unable to get child3a node under /document/child3a", NULL, error);
1719: return axl_false;
1720: }
1721:
1722: if (! NODE_CMP_NAME (node, "child3a")) {
1723: axl_error_new (-1, "Found node that wasn't expected", NULL, error);
1724: return axl_false;
1725: }
1726:
1727: if (! axl_node_is_empty (node)) {
1728: axl_error_new (-1, "Expected to find child3a node to be empty, but it wasn't found", NULL, error);
1729: return axl_false;
1730: }
1731:
1732: /* get the child1 node */
1733: node = axl_doc_get (doc, "/document/childs/child1");
1734: if (node == NULL) {
1735: axl_error_new (-1, "Unable to get child1 node under /document/childs", NULL, error);
1736: return axl_false;
1737: }
1738:
1739: if (! NODE_CMP_NAME (node, "child1")) {
1740: axl_error_new (-1, "Found node that wasn't expected", NULL, error);
1741: return axl_false;
1742: }
1743:
1744: /* create content */
1745: item = axl_item_new (ITEM_CONTENT, "This is a test");
1746:
1747: /* replace the node */
1748: axl_item_replace (axl_item_node_holder (node), item, axl_true);
1749:
1750: /* now parse the reference xml document */
1751: doc2 = axl_doc_parse_from_file ("test_23b.xml", error);
1752: if (doc2 == NULL)
1753: return axl_false;
1754:
1755: /* check that both documents are equal */
1756: if (! axl_doc_are_equal_trimmed (doc, doc2)) {
1757: axl_error_new (-1, "Expected to find equal documents, but it wasn't found", NULL, error);
1758: return axl_false;
1759: }
1760:
1761: /* free the document */
1762: axl_doc_free (doc);
1763:
1764: /* load the document */
1765: doc = axl_doc_parse_from_file ("test_23.xml", error);
1766: if (doc == NULL)
1767: return axl_false;
1768:
1769: /* check that both documents aren't equal using strict comparation */
1770: if (axl_doc_are_equal (doc, doc2)) {
1771: axl_error_new (-1, "Expected to find documents not equal, but it wasn't found", NULL, error);
1772: return axl_false;
1773: }
1774:
1775: /* free the document */
1776: axl_doc_free (doc);
1777: axl_doc_free (doc2);
1778:
1779: /* test ok */
1780: return axl_true;
1781: }
1782:
1783: /**
1784: * @brief Test xml attribute support.
1785: *
1786: * @param error The optional axlError to be used to report errors.
1787: *
1788: * @return axl_true if the validity test is passed, axl_false if not.
1789: */
1790: axl_bool test_22 (axlError ** error)
1791: {
1792: axlDoc * doc;
1793: axlNode * node;
1794: const char * value;
1795: axlAttrCursor * cursor;
1796:
1797:
1798: /* create a document */
1799: doc = axl_doc_create (NULL, NULL, axl_false);
1800:
1801: node = axl_node_create ("root-node");
1802: axl_doc_set_root (doc, node);
1803:
1804: /* check for attributes */
1805: if (axl_node_has_attribute (node, "attribute-not-found")) {
1806: axl_error_new (-1, "Found an attribute requested, which doesn't exists", NULL, error);
1807: return axl_false;
1808: }
1809:
1810: /* get attribute */
1811: value = axl_node_get_attribute_value (node, "attribute-not-found");
1812: if (value != NULL) {
1813: axl_error_new (-1, "Found an attribute requested, which doesn't exists", NULL, error);
1814: return axl_false;
1815: }
1816:
1817: /* store an attriburte */
1818: axl_node_set_attribute (node, "attribute1", "value1");
1819:
1820: /* check for attributes */
1821: if (! axl_node_has_attribute (node, "attribute1")) {
1822: axl_error_new (-1, "Not found an attribute requested, which should exists", NULL, error);
1823: return axl_false;
1824: }
1825:
1826: /* get attribute */
1827: value = axl_node_get_attribute_value (node, "attribute1");
1828: if (! axl_cmp (value, "value1")) {
1829: axl_error_new (-1, "Not found an attribute requested, which should exists", NULL, error);
1830: return axl_false;
1831: }
1832:
1833: /* store more attributes to check function with hashes */
1834: axl_node_set_attribute (node, "attribute2", "value2");
1835: axl_node_set_attribute (node, "attribute3", "value3");
1836: axl_node_set_attribute (node, "attribute4", "value4");
1837: axl_node_set_attribute (node, "attribute5", "value5");
1838: axl_node_set_attribute (node, "attribute6", "value6");
1839:
1840: /* check axl attribute iteration API */
1841: cursor = axl_node_attr_cursor_new (node);
1842: while (axl_node_attr_cursor_has_item (cursor)) {
1843:
1844: if (axl_cmp ("attribute2", axl_node_attr_cursor_get_key (cursor)) &&
1845: ! axl_cmp ("value2", axl_node_attr_cursor_get_value (cursor))) {
1846: axl_error_new (-1, "Found that the value associated to 'attribute2' isn't 'value2'", NULL, error);
1847: return axl_false;
1848: } /* end if */
1849:
1850: if (axl_cmp ("attribute3", axl_node_attr_cursor_get_key (cursor)) &&
1851: ! axl_cmp ("value3", axl_node_attr_cursor_get_value (cursor))) {
1852: axl_error_new (-1, "Found that the value associated to 'attribute3' isn't 'value3'", NULL, error);
1853: return axl_false;
1854: } /* end if */
1855:
1856: if (axl_cmp ("attribute4", axl_node_attr_cursor_get_key (cursor)) &&
1857: ! axl_cmp ("value4", axl_node_attr_cursor_get_value (cursor))) {
1858: axl_error_new (-1, "Found that the value associated to 'attribute4' isn't 'value4'", NULL, error);
1859: return axl_false;
1860: } /* end if */
1861:
1862: if (axl_cmp ("attribute5", axl_node_attr_cursor_get_key (cursor)) &&
1863: ! axl_cmp ("value5", axl_node_attr_cursor_get_value (cursor))) {
1864: axl_error_new (-1, "Found that the value associated to 'attribute5' isn't 'value5'", NULL, error);
1865: return axl_false;
1866: } /* end if */
1867:
1868: if (axl_cmp ("attribute6", axl_node_attr_cursor_get_key (cursor)) &&
1869: ! axl_cmp ("value6", axl_node_attr_cursor_get_value (cursor))) {
1870: axl_error_new (-1, "Found that the value associated to 'attribute6' isn't 'value6'", NULL, error);
1871: return axl_false;
1872: } /* end if */
1873:
1874: /* go next */
1875: axl_node_attr_cursor_next (cursor);
1876:
1877: } /* end if */
1878:
1879: axl_node_attr_cursor_free (cursor);
1880:
1881:
1882: axl_node_set_attribute (node, "attribute7", "value7");
1883: axl_node_set_attribute (node, "attribute8", "value8");
1884: axl_node_set_attribute (node, "attribute9", "value9");
1885: axl_node_set_attribute (node, "attribute10", "value10");
1886: axl_node_set_attribute (node, "attribute11", "value11");
1887:
1888: /* check that an attribute doesn't exists */
1889: if (axl_node_has_attribute (node, "attribute-not-found")) {
1890: axl_error_new (-1, "Found an attribute requested, which doesn't exists", NULL, error);
1891: return axl_false;
1892: }
1893:
1894: /* get attribute */
1895: value = axl_node_get_attribute_value (node, "attribute-not-found");
1896: if (value != NULL) {
1897: axl_error_new (-1, "Found an attribute requested, which doesn't exists", NULL, error);
1898: return axl_false;
1899: }
1900:
1901: /* check for attributes */
1902: if (! axl_node_has_attribute (node, "attribute2")) {
1903: axl_error_new (-1, "Not found an attribute requested, which should exists(2)", NULL, error);
1904: return axl_false;
1905: }
1906:
1907: /* get attribute */
1908: value = axl_node_get_attribute_value (node, "attribute2");
1909: if (! axl_cmp (value, "value2")) {
1910: printf ("value2 != %s\n", value);
1911: axl_error_new (-1, "Not found an attribute requested, which should exists(value2)", NULL, error);
1912: return axl_false;
1913: }
1914:
1915: /* check for attributes */
1916: if (! axl_node_has_attribute (node, "attribute3")) {
1917: axl_error_new (-1, "Not found an attribute requested, which should exists(3)", NULL, error);
1918: return axl_false;
1919: }
1920:
1921: /* get attribute */
1922: value = axl_node_get_attribute_value (node, "attribute3");
1923: if (! axl_cmp (value, "value3")) {
1924: axl_error_new (-1, "Not found an attribute requested, which should exists (value3)", NULL, error);
1925: return axl_false;
1926: }
1927:
1928: /* check for attributes */
1929: if (! axl_node_has_attribute (node, "attribute4")) {
1930: axl_error_new (-1, "Not found an attribute requested, which should exists (value4)", NULL, error);
1931: return axl_false;
1932: }
1933:
1934: /* get attribute */
1935: value = axl_node_get_attribute_value (node, "attribute4");
1936: if (! axl_cmp (value, "value4")) {
1937: axl_error_new (-1, "Not found an attribute requested, which should exists (value4)", NULL, error);
1938: return axl_false;
1939: }
1940:
1941: /* check for attributes */
1942: if (! axl_node_has_attribute (node, "attribute5")) {
1943: axl_error_new (-1, "Not found an attribute requested, which should exists (value5)", NULL, error);
1944: return axl_false;
1945: }
1946:
1947: /* get attribute */
1948: value = axl_node_get_attribute_value (node, "attribute5");
1949: if (! axl_cmp (value, "value5")) {
1950: axl_error_new (-1, "Not found an attribute requested, which should exists (value5)", NULL, error);
1951: return axl_false;
1952: }
1953:
1954: /* check for attributes */
1955: if (! axl_node_has_attribute (node, "attribute6")) {
1956: axl_error_new (-1, "Not found an attribute requested, which should exists (value6)", NULL, error);
1957: return axl_false;
1958: }
1959:
1960: /* get attribute */
1961: value = axl_node_get_attribute_value (node, "attribute6");
1962: if (! axl_cmp (value, "value6")) {
1963: axl_error_new (-1, "Not found an attribute requested, which should exists (value6)", NULL, error);
1964: return axl_false;
1965: }
1966:
1967: /* check for attributes */
1968: if (! axl_node_has_attribute (node, "attribute7")) {
1969: axl_error_new (-1, "Not found an attribute requested, which should exists (value7)", NULL, error);
1970: return axl_false;
1971: }
1972:
1973: /* get attribute */
1974: value = axl_node_get_attribute_value (node, "attribute7");
1975: if (! axl_cmp (value, "value7")) {
1976: axl_error_new (-1, "Not found an attribute requested, which should exists (value7)", NULL, error);
1977: return axl_false;
1978: }
1979:
1980: /* check for attributes */
1981: if (! axl_node_has_attribute (node, "attribute8")) {
1982: axl_error_new (-1, "Not found an attribute requested, which should exists (value8)", NULL, error);
1983: return axl_false;
1984: }
1985:
1986: /* get attribute */
1987: value = axl_node_get_attribute_value (node, "attribute8");
1988: if (! axl_cmp (value, "value8")) {
1989: axl_error_new (-1, "Not found an attribute requested, which should exists (value8)", NULL, error);
1990: return axl_false;
1991: }
1992:
1993: /* check for attributes */
1994: if (! axl_node_has_attribute (node, "attribute9")) {
1995: axl_error_new (-1, "Not found an attribute requested, which should exists (value9)", NULL, error);
1996: return axl_false;
1997: }
1998:
1999: /* get attribute */
2000: value = axl_node_get_attribute_value (node, "attribute9");
2001: if (! axl_cmp (value, "value9")) {
2002: axl_error_new (-1, "Not found an attribute requested, which should exists (value9)", NULL, error);
2003: return axl_false;
2004: }
2005:
2006: /* check for attributes */
2007: if (! axl_node_has_attribute (node, "attribute10")) {
2008: axl_error_new (-1, "Not found an attribute requested, which should exists (value10)", NULL, error);
2009: return axl_false;
2010: }
2011:
2012: /* get attribute */
2013: value = axl_node_get_attribute_value (node, "attribute10");
2014: if (! axl_cmp (value, "value10")) {
2015: axl_error_new (-1, "Not found an attribute value requested, which should exists (value10)", NULL, error);
2016: return axl_false;
2017: }
2018:
2019: /* check for attributes */
2020: if (! axl_node_has_attribute (node, "attribute11")) {
2021: axl_error_new (-1, "Not found an attribute requested, which should exists (value11)", NULL, error);
2022: return axl_false;
2023: }
2024:
2025: /* get attribute */
2026: value = axl_node_get_attribute_value (node, "attribute11");
2027: if (! axl_cmp (value, "value11")) {
2028: axl_error_new (-1, "Not found an attribute requested, which should exists (value11)", NULL, error);
2029: return axl_false;
2030: }
2031:
2032: /* check axl attribute iteration API */
2033: cursor = axl_node_attr_cursor_new (node);
2034: while (axl_node_attr_cursor_has_item (cursor)) {
2035:
2036: if (axl_cmp ("attribute2", axl_node_attr_cursor_get_key (cursor)) &&
2037: ! axl_cmp ("value2", axl_node_attr_cursor_get_value (cursor))) {
2038: axl_error_new (-1, "Found that the value associated to 'attribute2' isn't 'value2'", NULL, error);
2039: return axl_false;
2040: } /* end if */
2041:
2042: if (axl_cmp ("attribute3", axl_node_attr_cursor_get_key (cursor)) &&
2043: ! axl_cmp ("value3", axl_node_attr_cursor_get_value (cursor))) {
2044: axl_error_new (-1, "Found that the value associated to 'attribute3' isn't 'value3'", NULL, error);
2045: return axl_false;
2046: } /* end if */
2047:
2048: if (axl_cmp ("attribute4", axl_node_attr_cursor_get_key (cursor)) &&
2049: ! axl_cmp ("value4", axl_node_attr_cursor_get_value (cursor))) {
2050: axl_error_new (-1, "Found that the value associated to 'attribute4' isn't 'value4'", NULL, error);
2051: return axl_false;
2052: } /* end if */
2053:
2054: if (axl_cmp ("attribute5", axl_node_attr_cursor_get_key (cursor)) &&
2055: ! axl_cmp ("value5", axl_node_attr_cursor_get_value (cursor))) {
2056: axl_error_new (-1, "Found that the value associated to 'attribute5' isn't 'value5'", NULL, error);
2057: return axl_false;
2058: } /* end if */
2059:
2060: if (axl_cmp ("attribute6", axl_node_attr_cursor_get_key (cursor)) &&
2061: ! axl_cmp ("value6", axl_node_attr_cursor_get_value (cursor))) {
2062: axl_error_new (-1, "Found that the value associated to 'attribute6' isn't 'value6'", NULL, error);
2063: return axl_false;
2064: } /* end if */
2065:
2066: if (axl_cmp ("attribute7", axl_node_attr_cursor_get_key (cursor)) &&
2067: ! axl_cmp ("value7", axl_node_attr_cursor_get_value (cursor))) {
2068: axl_error_new (-1, "Found that the value associated to 'attribute7' isn't 'value7'", NULL, error);
2069: return axl_false;
2070: } /* end if */
2071:
2072: if (axl_cmp ("attribute8", axl_node_attr_cursor_get_key (cursor)) &&
2073: ! axl_cmp ("value8", axl_node_attr_cursor_get_value (cursor))) {
2074: axl_error_new (-1, "Found that the value associated to 'attribute8' isn't 'value8'", NULL, error);
2075: return axl_false;
2076: } /* end if */
2077:
2078: if (axl_cmp ("attribute9", axl_node_attr_cursor_get_key (cursor)) &&
2079: ! axl_cmp ("value9", axl_node_attr_cursor_get_value (cursor))) {
2080: axl_error_new (-1, "Found that the value associated to 'attribute9' isn't 'value9'", NULL, error);
2081: return axl_false;
2082: } /* end if */
2083:
2084: if (axl_cmp ("attribute10", axl_node_attr_cursor_get_key (cursor)) &&
2085: ! axl_cmp ("value10", axl_node_attr_cursor_get_value (cursor))) {
2086: axl_error_new (-1, "Found that the value associated to 'attribute10' isn't 'value10'", NULL, error);
2087: return axl_false;
2088: } /* end if */
2089:
2090: if (axl_cmp ("attribute11", axl_node_attr_cursor_get_key (cursor)) &&
2091: ! axl_cmp ("value11", axl_node_attr_cursor_get_value (cursor))) {
2092: axl_error_new (-1, "Found that the value associated to 'attribute11' isn't 'value11'", NULL, error);
2093: return axl_false;
2094: } /* end if */
2095:
2096: /* go next */
2097: axl_node_attr_cursor_next (cursor);
2098:
2099: } /* end if */
2100:
2101: axl_node_attr_cursor_free (cursor);
2102:
2103: /* remove attributes */
2104: if (axl_node_num_attributes (node) != 11) {
2105: axl_error_new (-1, "Expected to find 11 attributes", NULL, error);
2106: return axl_false;
2107: }
2108: axl_node_remove_attribute (node, "attribute1");
2109:
2110: if (axl_node_num_attributes (node) != 10) {
2111: axl_error_new (-1, "Expected to find 10 attributes", NULL, error);
2112: return axl_false;
2113: }
2114:
2115: if (axl_node_has_attribute (node, "attribute1")) {
2116: axl_error_new (-1, "Found that attribute1 should not appear, but it was found", NULL, error);
2117: return axl_false;
2118: } /* end if */
2119:
2120: node = axl_node_create ("test");
2121: axl_node_set_attribute (node, "test", "test");
2122:
2123: if (axl_node_num_attributes (node) != 1) {
2124: axl_error_new (-1, "Expected to find 1 attributes", NULL, error);
2125: return axl_false;
2126: }
2127:
2128: axl_node_remove_attribute (node, "test");
2129:
2130: if (axl_node_num_attributes (node) != 0) {
2131: axl_error_new (-1, "Expected to find 1 attributes", NULL, error);
2132: return axl_false;
2133: }
2134:
2135: axl_node_set_attribute (node, "test1", "test");
2136: axl_node_set_attribute (node, "test2", "test");
2137: axl_node_set_attribute (node, "test3", "test");
2138:
2139: if (axl_node_num_attributes (node) != 3) {
2140: axl_error_new (-1, "Expected to find 3 attributes", NULL, error);
2141: return axl_false;
2142: }
2143:
2144: axl_node_remove_attribute (node, "test1");
2145: axl_node_remove_attribute (node, "test2");
2146: axl_node_remove_attribute (node, "test3");
2147:
2148: if (axl_node_num_attributes (node) != 0) {
2149: axl_error_new (-1, "Expected to find 0 attributes", NULL, error);
2150: return axl_false;
2151: }
2152:
2153: axl_node_free (node);
2154:
2155: /* free document */
2156: axl_doc_free (doc);
2157:
2158: /* check to parse a document with */
2159: doc = axl_doc_parse_from_file ("test_22.xml", NULL);
2160: if (doc != NULL) {
2161: axl_error_report (error, -1, "Expected to find a failure while reading an xml document with duplicated attributes");
2162: return axl_false;
2163: } /* end if */
2164:
2165:
2166: /* check for empty attributes ( ='value') */
2167: doc = axl_doc_parse_from_file ("test_22b.xml", NULL);
2168: if (doc != NULL) {
2169: axl_error_report (error, -1, "Expected to find a failure while loading a document with empty attributes");
2170: return axl_false;
2171: }
2172:
2173: /* check for empty values associated to
2174: * attributes ( value=' this value ' ) */
2175: doc = axl_doc_parse_from_file ("test_22c.xml", NULL);
2176: if (doc != NULL) {
2177: axl_error_report (error, -1, "Expected to find a failure while loading a document with empty attributes values");
2178: return axl_false;
2179: } /* end if */
2180:
2181: doc = axl_doc_create (NULL, NULL, axl_true);
2182: node = axl_node_create ("test");
2183: axl_doc_set_root (doc, node);
2184:
2185: /* configure attributes */
2186: axl_node_set_attribute (node, "", "a value");
2187:
2188: /* configure attribute */
2189: axl_node_set_attribute (node, "", "");
2190:
2191: /* configure attribute */
2192: axl_node_set_attribute (node, "", "another value");
2193:
2194: if (! axl_doc_dump_pretty_to_file (doc, "test_22-test.xml", 4)) {
2195: axl_error_report (error, -1, "Expected to find proper dump after wrong attribute configuration..");
2196: return axl_false;
2197: } /* end if */
2198:
2199: axl_doc_free (doc);
2200:
2201: /* check for empty values associated to
2202: * attributes ( value=' this value ' ) */
2203: doc = axl_doc_parse_from_file ("test_22-test.xml", NULL);
2204: if (doc == NULL) {
2205: axl_error_report (error, -1, "Expected to find proper document loading after wrong attribute configuration.");
2206: return axl_false;
2207: } /* end if */
2208:
2209: /* free documnent */
2210: axl_doc_free (doc);
2211:
2212: return axl_true;
2213: }
2214:
2215: /**
2216: * @brief Test mixed content documents support (TEST NOT FINISHED).
2217: *
2218: * @param error The optional axlError to be used to report errors.
2219: *
2220: * @return axl_true if the validity test is passed, axl_false if not.
2221: */
2222: axl_bool test_21 (axlError ** error)
2223: {
2224: axlDoc * doc;
2225: axlNode * node;
2226: axlItem * item;
2227: char * content;
2228: int content_size;
2229:
2230: /* load the document */
2231: doc = axl_doc_parse_from_file ("test_21.xml", error);
2232: if (doc == NULL)
2233: return axl_false;
2234:
2235: /* get the root node */
2236: node = axl_doc_get_root (doc);
2237:
2238: /* check document content */
2239: if (! NODE_CMP_NAME (node, "document")) {
2240: axl_error_new (-1, "Expected to find root node=<document> but it wasn't found", NULL, error);
2241: return axl_false;
2242: }
2243:
2244: /* iterate root childs */
2245: item = axl_item_get_first_child (node);
2246:
2247: if (axl_item_get_type (item) != ITEM_CONTENT) {
2248: axl_error_new (-1, "Expected to find content but it wasn't found", NULL, error);
2249: return axl_false;
2250: }
2251:
2252: /* get the content */
2253: content = axl_item_get_content (item, &content_size);
2254: if (! axl_cmp (content, "\n Some content inside the document ")) {
2255: axl_error_new (-1, "Expected to find content but it wasn't found", NULL, error);
2256: return axl_false;
2257: }
2258:
2259: /* get tne the item */
2260: item = axl_item_get_next (item);
2261: if (axl_item_get_type (item) != ITEM_NODE) {
2262: axl_error_new (-1, "Expected to find a node but it wasn't found", NULL, error);
2263: return axl_false;
2264: }
2265:
2266: /* get the node */
2267: node = axl_item_get_data (item);
2268:
2269: /* check document content */
2270: if (! NODE_CMP_NAME (node, "strong")) {
2271: axl_error_new (-1, "Expected to find root node=<strong> but it wasn't found", NULL, error);
2272: return axl_false;
2273: }
2274:
2275: /* get the first child of <strong> */
2276: item = axl_item_get_first_child (node);
2277:
2278: if (axl_item_get_type (item) != ITEM_CONTENT) {
2279: axl_error_new (-1, "Expected to find content inside strong but it wasn't found", NULL, error);
2280: return axl_false;
2281: }
2282:
2283: /* get the content */
2284: content = axl_item_get_content (item, &content_size);
2285: if (! axl_cmp (content, "this content goes\n bold")) {
2286: axl_error_new (-1, "Expected to find content but it wasn't found", NULL, error);
2287: return axl_false;
2288: }
2289:
2290: /* now get the next item following the <strong> node */
2291: item = axl_item_node_next (node);
2292:
2293: if (item == NULL) {
2294: axl_error_new (-1, "Expected to find content following <strong> but a null item reference was found", NULL, error);
2295: return axl_false;
2296: }
2297:
2298: /* check to be it a content */
2299: if (axl_item_get_type (item) != ITEM_CONTENT) {
2300: axl_error_new (-1, "Expected to find content following <strong> node but it wasn't found", NULL, error);
2301: return axl_false;
2302: }
2303:
2304: /* get the content */
2305: content = axl_item_get_content (item, &content_size);
2306: if (! axl_cmp (content, " more data stored directly inside the document node.\n\n ")) {
2307: axl_error_new (-1, "Expected to find content but it wasn't found", NULL, error);
2308: return axl_false;
2309: }
2310:
2311: /* get the next item */
2312: item = axl_item_get_next (item);
2313: if (axl_item_get_type (item) != ITEM_NODE) {
2314: axl_error_new (-1, "Expected to find a node but it wasn't found", NULL, error);
2315: return axl_false;
2316: }
2317:
2318: /* get the node */
2319: node = axl_item_get_data (item);
2320:
2321: /* check document content */
2322: if (! NODE_CMP_NAME (node, "childs")) {
2323: axl_error_new (-1, "Expected to find root node=<strong> but it wasn't found", NULL, error);
2324: return axl_false;
2325: }
2326:
2327: /* get the first item */
2328: item = axl_item_get_first_child (node);
2329: if (axl_item_get_type (item) != ITEM_COMMENT) {
2330: axl_error_new (-1, "Expected to find content inside strong but it wasn't found", NULL, error);
2331: return axl_false;
2332: }
2333:
2334: /* get the content */
2335: content = axl_item_get_content (item, &content_size);
2336: if (! axl_cmp (content, " here goes a comment before text block ")) {
2337: axl_error_new (-1, "Expected to find a comment, child of <childs>, but it wasn't found", NULL, error);
2338: return axl_false;
2339: }
2340:
2341: /* get next item */
2342: item = axl_item_get_next (item);
2343:
2344: /* check to be it a content */
2345: if (axl_item_get_type (item) != ITEM_CONTENT) {
2346: axl_error_new (-1, "Expected to find content following <childs> node comment but it wasn't found", NULL, error);
2347: return axl_false;
2348: }
2349:
2350: /* get the content */
2351: content = axl_item_get_content (item, &content_size);
2352: if (! axl_cmp (content, "More text after child declaration.\n ")) {
2353: axl_error_new (-1, "Expected to find a content inside <childs> node, but it wasn't found", NULL, error);
2354: return axl_false;
2355: }
2356:
2357: /* get next item */
2358: item = axl_item_get_next (item);
2359:
2360: /* get the node */
2361: node = axl_item_get_data (item);
2362:
2363: /* check document content */
2364: if (! NODE_CMP_NAME (node, "child1")) {
2365: axl_error_new (-1, "Expected to find root node=<strong> but it wasn't found", NULL, error);
2366: return axl_false;
2367: }
2368:
2369:
2370: /* free axl document */
2371: axl_doc_free (doc);
2372:
2373: return axl_true;
2374: }
2375:
2376: /**
2377: * @brief Test entity support (basic entity support).
2378: *
2379: * @param error The optional axlError to be used to report errors.
2380: *
2381: * @return axl_true if the validity test is passed, axl_false if not.
2382: */
2383: axl_bool test_20b (axlError ** error)
2384: {
2385: axlNode * node;
2386:
2387: axlNode * aux;
2388: axlNode * aux2;
2389:
2390: axlNode * child1;
2391: axlNode * root;
2392:
2393: axlDoc * doc;
2394: axlDoc * doc2;
2395: axlDoc * doc3;
2396:
2397:
2398: int iterator = 0;
2399: int sum = 0;
2400:
2401: /* load the document */
2402: doc = axl_doc_parse_from_file ("test_20.xml", error);
2403: if (doc == NULL)
2404: return axl_false;
2405:
2406: /* load reference */
2407: doc2 = axl_doc_parse_from_file ("test_20a.xml", error);
2408: if (doc2 == NULL)
2409: return axl_false;
2410:
2411: while (iterator < 10) {
2412:
2413: /* get document root */
2414: root = axl_doc_get_root (doc);
2415:
2416: /* copy and release */
2417: node = axl_node_copy (root, axl_true, axl_true);
2418:
2419: /* get the child1 reference */
2420: child1 = axl_node_get_first_child (node);
2421:
2422: /* get child2 refrence */
2423: aux = axl_node_get_first_child (child1);
2424: while (aux != NULL) {
2425:
2426: sum = axl_node_get_child_num (child1);
2427:
2428: /* get the next child before deattaching the
2429: * node */
2430: aux2 = axl_node_get_next (aux);
2431:
2432: /* dettach the node from the <child1> parent
2433: * and attach it to the document */
2434: axl_node_deattach (aux);
2435:
2436: if ((sum - 1) != (axl_node_get_child_num (child1))) {
2437: /* after doing the deattach process,
2438: * the copy node doesn't have the
2439: * expected child number */
2440: axl_error_new (-1, "After doing the deattach process, the copy node doesn't have the expected child number", NULL, error);
2441: return axl_false;
2442: }
2443:
2444: /* set the node to the document root */
2445: axl_node_set_child (node, aux);
2446:
2447: if (! NODE_CMP_NAME (axl_node_get_parent (aux), "document")) {
2448:
2449: axl_error_new (-1, "Expected to find a parent not found", NULL, error);
2450: return axl_false;
2451: }
2452:
2453: /* get the next child */
2454: aux = aux2;
2455:
2456: } /* end while */
2457:
2458: /* remove the child1 node */
2459: aux = axl_node_get_first_child (node);
2460: axl_node_remove (aux, axl_true);
2461:
2462: /* create the document holding the result */
2463: doc3 = axl_doc_create (NULL, NULL, axl_false);
2464: axl_doc_set_root (doc3, node);
2465:
2466: /* compare the document */
2467: if (!axl_doc_are_equal (doc2, doc3)) {
2468: axl_error_new (-1, "Expected to find equal documents but (modified doc2 != doc3), they wasn't found", NULL, error);
2469: return axl_false;
2470: }
2471:
2472: /* free the document */
2473: axl_doc_free (doc3);
2474:
2475: /* update iterator */
2476: iterator++;
2477:
2478: } /* end while */
2479:
2480: /* free the document 2 */
2481: axl_doc_free (doc2);
2482:
2483: /* free the document */
2484: axl_doc_free (doc);
2485:
2486: return axl_true;
2487:
2488: }
2489:
2490:
2491: /**
2492: * @brief Test entity support (basic entity support).
2493: *
2494: * @param error The optional axlError to be used to report errors.
2495: *
2496: * @return axl_true if the validity test is passed, axl_false if not.
2497: */
2498: axl_bool test_20 (axlError ** error)
2499: {
2500: axlNode * node;
2501: axlNode * root;
2502: axlDoc * doc;
2503: axlDoc * doc2;
2504: char * data;
2505:
2506:
2507: /* load the document */
2508: doc = axl_doc_parse_from_file ("test_20.xml", error);
2509: if (doc == NULL)
2510: return axl_false;
2511:
2512: /* get document root */
2513: root = axl_doc_get_root (doc);
2514: node = axl_node_copy (root, axl_true, axl_true);
2515:
2516: /* check if both nodes are equal */
2517: if (! axl_node_are_equal (root, node)) {
2518: axl_error_new (-1, "Expected to find equal nodes but they weren't", NULL, error);
2519: return axl_false;
2520: }
2521:
2522: /* create a new document */
2523: doc2 = axl_doc_create (NULL, NULL, axl_false);
2524: axl_doc_set_root (doc2, node);
2525:
2526: if (! axl_doc_are_equal (doc, doc2)) {
2527: axl_error_new (-1, "Expected to find equal documents but they weren't", NULL, error);
2528: return axl_false;
2529: }
2530:
2531: /* free document */
2532: axl_doc_free (doc2);
2533:
2534: /* configure some anotation data */
2535: axl_node_annotate_data (root, "key", "value");
2536:
2537: /* get child1 */
2538: node = axl_node_get_first_child (root);
2539:
2540: /* get child2 */
2541: node = axl_node_get_first_child (node);
2542:
2543: /* anotate data */
2544: axl_node_annotate_data (node, "key1", "value1");
2545:
2546: /* perform searches */
2547: data = axl_node_annotate_get (node, "key", axl_false);
2548: if (data != NULL) {
2549: axl_error_new (-1, "Expected to find nothing while looking for 'key'(1)", NULL, error);
2550: return axl_false;
2551: }
2552:
2553: data = axl_node_annotate_get (node, "key", axl_true);
2554: if (data == NULL || !axl_cmp (data, "value")) {
2555: axl_error_new (-1, "Expected to find data while looking for 'key' at parents (2)", NULL, error);
2556: return axl_false;
2557: }
2558:
2559: /* perform searches inside the node */
2560: data = axl_node_annotate_get (node, "key1", axl_false);
2561: if (data == NULL || !axl_cmp (data, "value1")) {
2562: axl_error_new (-1, "Expected to find nothing while looking for 'key1'(3)", NULL, error);
2563: return axl_false;
2564: }
2565:
2566: /* perform more anotation but with native data */
2567: axl_node_annotate_int (root, "int-value", 14);
2568:
2569: if (axl_node_annotate_get_int (root, "int-value", axl_false) != 14) {
2570: axl_error_new (-1, "Expected to find an integer value (14), but it wasn't found", NULL, error);
2571: return axl_false;
2572: }
2573:
2574: axl_node_annotate_double (root, "double-value", 58.20);
2575:
2576: if (axl_node_annotate_get_double (root, "double-value", axl_false) != 58.20) {
2577: axl_error_new (-1, "Expected to find an double value (58.20), but it wasn't found", NULL, error);
2578: return axl_false;
2579: }
2580:
2581: axl_node_annotate_string (root, "string-value", "this is a test string");
2582:
2583: if (! axl_cmp (axl_node_annotate_get_string (root, "string-value", axl_false), "this is a test string")) {
2584: axl_error_new (-1, "Expected to find a string value (\"this is a test string\"), but it wasn't found", NULL, error);
2585: return axl_false;
2586: }
2587:
2588: if (axl_node_annotate_get_string (root, "string-not-found", axl_false) != NULL) {
2589: axl_error_new (-1, "Expected to find empty value for an anotated element which isn't installed", NULL, error);
2590: return axl_false;
2591: }
2592:
2593: /* free document created */
2594: axl_doc_free (doc);
2595:
2596: return axl_true;
2597:
2598: }
2599:
2600: /**
2601: * @brief Test entity support (basic entity support).
2602: *
2603: * @param error The optional axlError to be used to report errors.
2604: *
2605: * @return axl_true if the validity test is passed, axl_false if not.
2606: */
2607: axl_bool test_19 (axlError ** error)
2608: {
2609: axlDoc * doc;
2610: axlDoc * reference;
2611: axlNode * node;
2612: axlNode * replace;
2613:
2614: /* create replace node */
2615: replace = axl_node_create ("replace");
2616: axl_node_set_content (replace, "test", -1);
2617:
2618: doc = axl_doc_parse_from_file ("test_19.xml", error);
2619: if (doc == NULL)
2620: return axl_false;
2621:
2622: /* document */
2623: node = axl_doc_get_root (doc);
2624:
2625: /* child1 */
2626: node = axl_node_get_first_child (node);
2627:
2628: /* child2 */
2629: node = axl_node_get_first_child (node);
2630:
2631: /* replace */
2632: axl_node_replace (node, replace, axl_false);
2633:
2634: reference = axl_doc_parse_from_file ("test_19a.xml", error);
2635: if (reference == NULL)
2636: return axl_false;
2637:
2638: /* check both documents to be equal */
2639: if (! axl_doc_are_equal (doc, reference)) {
2640: axl_error_new (-1, "Expected to find equal documents, but not found on first child replace", NULL, error);
2641: return axl_false;
2642: }
2643:
2644: /* free reference */
2645: axl_doc_free (reference);
2646:
2647: /* restore */
2648: axl_node_replace (replace, node, axl_false);
2649:
2650: /* get child2 */
2651: node = axl_node_get_next (node);
2652:
2653: /* replace */
2654: axl_node_replace (node, replace, axl_false);
2655:
2656:
2657: reference = axl_doc_parse_from_file ("test_19b.xml", error);
2658: if (reference == NULL)
2659: return axl_false;
2660:
2661: /* check both documents to be equal */
2662: if (! axl_doc_are_equal (doc, reference)) {
2663: axl_error_new (-1, "Expected to find equal documents, but not found on first child replace", NULL, error);
2664: return axl_false;
2665: }
2666:
2667: /* free reference */
2668: axl_doc_free (reference);
2669:
2670: /* restore */
2671: axl_node_replace (replace, node, axl_false);
2672:
2673: /* get child2 */
2674: node = axl_node_get_next (node);
2675: /* get child2 */
2676: node = axl_node_get_next (node);
2677:
2678: /* replace */
2679: axl_node_replace (node, replace, axl_true);
2680:
2681: reference = axl_doc_parse_from_file ("test_19c.xml", error);
2682: if (reference == NULL)
2683: return axl_false;
2684:
2685: /* check both documents to be equal */
2686: if (! axl_doc_are_equal (doc, reference)) {
2687: axl_error_new (-1, "Expected to find equal documents, but not found on first child replace", NULL, error);
2688: return axl_false;
2689: }
2690:
2691: /* free reference */
2692: axl_doc_free (reference);
2693:
2694: node = axl_node_create ("child5");
2695: axl_node_set_content (node, "test", -1);
2696:
2697: /* replace */
2698: axl_node_replace (replace, node, axl_true);
2699:
2700: /* document */
2701: node = axl_doc_get_root (doc);
2702: /* child1 */
2703: node = axl_node_get_first_child (node);
2704: /* child2 */
2705: node = axl_node_get_first_child (node);
2706:
2707: /* remove child2 */
2708: axl_node_remove (node, axl_true);
2709:
2710: reference = axl_doc_parse_from_file ("test_19d.xml", error);
2711: if (reference == NULL)
2712: return axl_false;
2713:
2714: /* check both documents to be equal */
2715: if (! axl_doc_are_equal (doc, reference)) {
2716: axl_error_new (-1, "Expected to find equal documents, but not found on first child remove", NULL, error);
2717: return axl_false;
2718: }
2719:
2720: /* free reference */
2721: axl_doc_free (reference);
2722:
2723: /* document */
2724: node = axl_doc_get_root (doc);
2725: /* child1 */
2726: node = axl_node_get_first_child (node);
2727: /* child3 */
2728: node = axl_node_get_first_child (node);
2729:
2730: /* remove child3 */
2731: axl_node_remove (node, axl_true);
2732:
2733: reference = axl_doc_parse_from_file ("test_19e.xml", error);
2734: if (reference == NULL)
2735: return axl_false;
2736:
2737: /* check both documents to be equal */
2738: if (! axl_doc_are_equal (doc, reference)) {
2739: axl_error_new (-1, "Expected to find equal documents, but not found on first child remove", NULL, error);
2740: return axl_false;
2741: }
2742:
2743: /* free reference */
2744: axl_doc_free (reference);
2745:
2746: /* document */
2747: node = axl_doc_get_root (doc);
2748: /* child1 */
2749: node = axl_node_get_first_child (node);
2750: /* child4 */
2751: node = axl_node_get_first_child (node);
2752:
2753: /* remove child4 */
2754: axl_node_remove (node, axl_true);
2755:
2756: reference = axl_doc_parse_from_file ("test_19f.xml", error);
2757: if (reference == NULL)
2758: return axl_false;
2759:
2760: /* check both documents to be equal */
2761: if (! axl_doc_are_equal (doc, reference)) {
2762: axl_error_new (-1, "Expected to find equal documents, but not found on first child remove", NULL, error);
2763: return axl_false;
2764: }
2765:
2766: /* free reference */
2767: axl_doc_free (reference);
2768:
2769: /* document */
2770: node = axl_doc_get_root (doc);
2771: /* child1 */
2772: node = axl_node_get_first_child (node);
2773: /* child5 */
2774: node = axl_node_get_first_child (node);
2775:
2776: /* remove child5 */
2777: axl_node_remove (node, axl_true);
2778:
2779: reference = axl_doc_parse_from_file ("test_19g.xml", error);
2780: if (reference == NULL)
2781: return axl_false;
2782:
2783: /* check both documents to be equal */
2784: if (! axl_doc_are_equal (doc, reference)) {
2785: axl_error_new (-1, "Expected to find equal documents, but not found on first child remove", NULL, error);
2786: return axl_false;
2787: }
2788:
2789: /* free reference */
2790: axl_doc_free (reference);
2791:
2792: /* free document */
2793: axl_doc_free (doc);
2794:
2795: /* free reference */
2796: return axl_true;
2797: }
2798:
2799: /**
2800: * @brief Test entity support (basic entity support).
2801: *
2802: * @param error The optional axlError to be used to report errors.
2803: *
2804: * @return axl_true if the validity test is passed, axl_false if not.
2805: */
2806: axl_bool test_18 (axlError ** error)
2807: {
2808: axlDtd * dtd = NULL;
2809: char * content;
2810:
2811: /* parse af-arch DTD */
2812: dtd = axl_dtd_parse_from_file ("channel.dtd", error);
2813: if (dtd == NULL)
2814: return axl_false;
2815:
2816: /* lookup for entity definitions */
2817: if (axl_dtd_entity_exists (dtd, "TEST", GENERAL_ENTITY)) {
2818: axl_error_new (-1, "Expected to not find an entity value which was found (TEST)..", NULL, error);
2819: return axl_false;
2820: }
2821:
2822: if (axl_dtd_entity_exists (dtd, "URI", GENERAL_ENTITY)) {
2823: axl_error_new (-1, "Expected to not find an entity value which was found (URI)..", NULL, error);
2824: return axl_false;
2825: }
2826:
2827: /* lookup for entity definitions that are expected to be found */
2828: if (! axl_dtd_entity_exists (dtd, "URI", PARAMETER_ENTITY)) {
2829: axl_error_new (-1, "Expected to find an entity value which wasn't found (% URI)..", NULL, error);
2830: return axl_false;
2831: }
2832:
2833: if (! axl_dtd_entity_exists (dtd, "LOCS", PARAMETER_ENTITY)) {
2834: axl_error_new (-1, "Expected to find an entity value which wasn' found (% LOCS)..", NULL, error);
2835: return axl_false;
2836: }
2837:
2838: /* now get the content inside */
2839: content = axl_dtd_entity_value (dtd, "CHAN", PARAMETER_ENTITY);
2840: if (content == NULL) {
2841: axl_error_new (-1, "Expected to find parameter entity content for (% CHAN) but it wasn't found", NULL, error);
2842: return axl_false;
2843: }
2844:
2845: if (! axl_cmp (content, "CDATA")) {
2846: axl_error_new (-1, "Expected to find parameter entity content for (% CHAN) it doesn't match", NULL, error);
2847: return axl_false;
2848: }
2849:
2850: /* free the dtd */
2851: axl_dtd_free (dtd);
2852:
2853: return axl_true;
2854: }
2855:
2856: /**
2857: * @brief A more complex DTD parsing example
2858: *
2859: * @param error The optional axlError to be used to report errors.
2860: *
2861: * @return axl_true if the validity test is passed, axl_false if not.
2862: */
2863: axl_bool test_17 (axlError ** error)
2864: {
2865: axlDoc * doc = NULL;
2866: axlDtd * dtd = NULL;
2867:
2868: /* parse common DTD file */
2869: dtd = axl_dtd_parse_from_file ("xml-rpc.dtd", error);
2870: if (dtd == NULL)
2871: return axl_false;
2872:
2873: /* parse a file that must not be valid */
2874: doc = axl_doc_parse_from_file ("test17.xdl", error);
2875: if (doc == NULL)
2876: return axl_false;
2877:
2878: /* the following validation must fail */
2879: if (axl_dtd_validate (doc, dtd, error)) {
2880: axl_error_new (-1, "A validation was produced when expected a failure", NULL, error);
2881: return axl_false;
2882: }
2883:
2884: /* because a failure was expected, release memory allocated by
2885: * axl_error_new */
2886: axl_error_free (*error);
2887:
2888: /* free the document */
2889: axl_doc_free (doc);
2890:
2891: /* release DTD reference */
2892: axl_dtd_free (dtd);
2893:
2894: return axl_true;
2895: }
2896:
2897: /**
2898: * @brief A more complex DTD parsing example
2899: *
2900: * @param error The optional axlError to be used to report errors.
2901: *
2902: * @return axl_true if the validity test is passed, axl_false if not.
2903: */
2904: axl_bool test_16 (axlError ** error)
2905: {
2906: axlDoc * doc = NULL;
2907: axlDtd * dtd = NULL;
2908:
2909: /* parse common DTD file */
2910: dtd = axl_dtd_parse_from_file ("xml-rpc.dtd", error);
2911: if (dtd == NULL)
2912: return axl_false;
2913:
2914: /* parse a file that must not be valid */
2915: doc = axl_doc_parse_from_file ("test03.xdl", error);
2916: if (doc == NULL)
2917: return axl_false;
2918:
2919: /* the following validation must fail */
2920: if (axl_dtd_validate (doc, dtd, error)) {
2921: axl_error_new (-1, "A validation was produced when expected a failure", NULL, error);
2922: return axl_false;
2923: }
2924:
2925: /* because a failure was expected, release memory allocated by
2926: * axl_error_new */
2927: axl_error_free (*error);
2928:
2929: /* free the document */
2930: axl_doc_free (doc);
2931:
2932: /* parse the next file that must be valid */
2933: doc = axl_doc_parse_from_file ("test04.xdl", error);
2934: if (doc == NULL)
2935: return axl_false;
2936:
2937: /* the following validation should successed */
2938: if (! axl_dtd_validate (doc, dtd, error))
2939: return axl_false;
2940:
2941: /* release the document */
2942: axl_doc_free (doc);
2943:
2944: /* release DTD reference */
2945: axl_dtd_free (dtd);
2946:
2947: return axl_true;
2948: }
2949:
2950: /**
2951: * @brief A more complex DTD parsing example
2952: *
2953: * @param error The optional axlError to be used to report errors.
2954: *
2955: * @return axl_true if the validity test is passed, axl_false if not.
2956: */
2957: axl_bool test_15 (axlError ** error)
2958: {
2959: axlDoc * doc = NULL;
2960: axlDtd * dtd = NULL;
2961:
2962: /* parse common DTD file */
2963: dtd = axl_dtd_parse_from_file ("xml-rpc.dtd", error);
2964: if (dtd == NULL)
2965: return axl_false;
2966:
2967: /* parse a file that must not be valid */
2968: doc = axl_doc_parse_from_file ("test01.xdl", error);
2969: if (doc == NULL)
2970: return axl_false;
2971:
2972: /* the following validation must fail */
2973: if (axl_dtd_validate (doc, dtd, error)) {
2974: axl_error_new (-1, "A validation was produced when expected a failure", NULL, error);
2975: return axl_false;
2976: }
2977:
2978: /* because a failure was expected, release memory allocated by
2979: * axl_error_new */
2980: axl_error_free (*error);
2981:
2982: /* free the document */
2983: axl_doc_free (doc);
2984:
2985: /* parse the next file that must be valid */
2986: doc = axl_doc_parse_from_file ("test02.xdl", error);
2987: if (doc == NULL)
2988: return axl_false;
2989:
2990: /* the following validation should successed */
2991: if (! axl_dtd_validate (doc, dtd, error))
2992: return axl_false;
2993:
2994: /* release the document */
2995: axl_doc_free (doc);
2996:
2997: /* release DTD reference */
2998: axl_dtd_free (dtd);
2999:
3000: return axl_true;
3001: }
3002:
3003: /**
3004: * @brief A more complex DTD parsing example
3005: *
3006: * @param error The optional axlError to be used to report errors.
3007: *
3008: * @return axl_true if the validity test is passed, axl_false if not.
3009: */
3010: axl_bool test_14 (axlError ** error)
3011: {
3012: axlDoc * doc = NULL;
3013: axlNode * node = NULL;
3014:
3015: char * xml_document;
3016: char * value;
3017: int size = 0;
3018: int document_size;
3019:
3020:
3021: /* create an emtpy document */
3022: doc = axl_doc_create ("1.0", NULL, axl_false);
3023:
3024: /* create the root node */
3025: node = axl_node_create ("test");
3026: axl_node_set_content (node, "This is a test (') (\") (>) (<) (&), more data###", -1);
3027:
3028: axl_doc_set_root (doc, node);
3029:
3030: /* dump the document */
3031: axl_doc_dump (doc, &xml_document, &document_size);
3032:
3033: if (!axl_cmp ("<?xml version='1.0' ?><test>This is a test (') (") (>) (<) (&), more data###</test>",
3034: xml_document)) {
3035: axl_error_new (-1, "Found dump mismatch that shows entities are not handled properly", NULL, error);
3036: return axl_false;
3037: }
3038:
3039: /* free memory dump */
3040: axl_free (xml_document);
3041:
3042: /* get the content translated */
3043: value = axl_node_get_content_copy (node, &size);
3044:
3045: if (size != 68) {
3046: axl_error_new (-1, "Found a document size mismatch while dumping entity content", NULL, error);
3047: return axl_false;
3048: }
3049:
3050: /* free the content received */
3051: axl_free (value);
3052:
3053: /* get the content translated */
3054: value = axl_node_get_content_trans (node, &size);
3055:
3056: if (size != 48) {
3057: axl_error_new (-1, "Found a document size mismatch while dumping entity content (already translated)", NULL, error);
3058: return axl_false;
3059: }
3060:
3061: /* check node content returned */
3062: if (!axl_cmp (value, "This is a test (\') (\") (>) (<) (&), more data###")) {
3063: axl_error_new (-1, "Found an string mismatch while checking a node content which was translated", NULL, error);
3064: return axl_false;
3065: }
3066:
3067: /* free the content translated */
3068: axl_free (value);
3069:
3070: /* free document */
3071: axl_doc_free (doc);
3072:
3073: doc = axl_doc_parse ("<?xml version='1.0' ?><test></test>", 37, error);
3074: if (doc == NULL) {
3075: printf ("Expected to parse a document but it fails, error was: %s\n", axl_error_get (*error));
3076: return axl_false;
3077: }
3078:
3079: /* get the content */
3080: node = axl_doc_get (doc, "/test");
3081: if (node == NULL) {
3082: axl_error_new (-1, "Expected to find a node reference not found (/test)\n", NULL, error);
3083: return axl_false;
3084: }
3085:
3086: /* get the content */
3087: size = 11;
3088: value = (char*) axl_node_get_content (node, &size);
3089: if (size != 0) {
3090: axl_error_new (-1, "Expected to find a node content with 0 bytes but it 11 (/test)\n", NULL, error);
3091: return axl_false;
3092: }
3093:
3094: /* get the content copy */
3095: size = 13;
3096: value = axl_node_get_content_copy (node, &size);
3097: if (size != 0) {
3098: axl_error_new (-1, "Expected to find a node content with 0 bytes but it 13 (/test)\n", NULL, error);
3099: return axl_false;
3100: }
3101: axl_free (value);
3102:
3103: /* get content copy trans */
3104: size = 14;
3105: value = axl_node_get_content_trans (node, &size);
3106: if (size != 0) {
3107: axl_error_new (-1, "Expected to find a node content with 0 bytes but it 14 (/test)\n", NULL, error);
3108: return axl_false;
3109: }
3110: axl_free (value);
3111:
3112: /* get content trimmed */
3113: size = 15;
3114: value = axl_node_get_content_trim (node, &size);
3115: if (size != 0) {
3116: axl_error_new (-1, "Expected to find a node content with 0 bytes but it 15 (/test)\n", NULL, error);
3117: return axl_false;
3118: }
3119:
3120: /* free the document */
3121: axl_doc_free (doc);
3122:
3123: return axl_true;
3124: }
3125:
3126: /**
3127: * @brief Memory dump operation checks.
3128: *
3129: * @param error The optional axlError to be used to report errors.
3130: *
3131: * @return axl_true if the validity test is passed, axl_false if not.
3132: */
3133: axl_bool test_13 (axlError ** error)
3134: {
3135: axlDoc * doc = NULL;
3136: axlDoc * doc2 = NULL;
3137: axlDoc * doc3 = NULL;
3138:
3139: axlNode * node = NULL;
3140: char * content;
3141: int size;
3142:
3143: doc = axl_doc_parse_from_file ("test13.xml", error);
3144: if (doc == NULL)
3145: return axl_false;
3146:
3147: /* dump xml document */
3148: axl_doc_dump (doc, &content, &size);
3149:
3150: doc2 = axl_doc_parse (content, size, error);
3151: if (doc2 == NULL)
3152: return axl_false;
3153:
3154: /* check if both documents are equals */
3155: if (! axl_doc_are_equal (doc, doc2)) {
3156: axl_error_new (-1, "Expected to dump an equivalent xml document, but found an error", NULL, error);
3157: return axl_false;
3158: }
3159:
3160: /* free dump */
3161: axl_free (content);
3162:
3163: /* free axl document */
3164: axl_doc_free (doc);
3165:
3166: /* free axl document */
3167: axl_doc_free (doc2);
3168:
3169: doc = axl_doc_parse_from_file ("test_13c.xml", error);
3170: if (doc == NULL)
3171: return axl_false;
3172:
3173: if (! axl_doc_dump_pretty (doc, &content, &size, 4)) {
3174: axl_error_new (-1, "Failed to dump pretty print, while expected a proper execution", NULL, error);
3175: return axl_false;
3176: }
3177:
3178: doc2 = axl_doc_parse (content, size, error);
3179: if (doc2 == NULL)
3180: return axl_false;
3181:
3182: /* free content */
3183: axl_free (content);
3184:
3185: if (! axl_doc_are_equal (doc, doc2)) {
3186: axl_error_new (-1, "Expected to find documents to be equal.", NULL, error);
3187: return axl_false;
3188: }
3189:
3190: /* free both document references */
3191: axl_doc_free (doc);
3192: axl_doc_free (doc2);
3193:
3194: /* check pretty printing function */
3195: doc = axl_doc_parse_from_file ("test_13b.xml", error);
3196: if (doc == NULL)
3197: return axl_false;
3198:
3199: if (! axl_doc_dump_pretty (doc, &content, &size, 4)) {
3200: axl_error_new (-1, "Failed to dump pretty print, while expected a proper execution", NULL, error);
3201: return axl_false;
3202: }
3203:
3204: doc2 = axl_doc_parse (content, size, error);
3205: if (doc2 == NULL)
3206: return axl_false;
3207:
3208: if (! axl_doc_are_equal (doc, doc2)) {
3209: axl_error_new (-1, "Expected to find documents to be equal.", NULL, error);
3210: return axl_false;
3211: }
3212:
3213: /* free content */
3214: axl_free (content);
3215:
3216: /* free both document references */
3217: axl_doc_free (doc);
3218: axl_doc_free (doc2);
3219:
3220: /* reopen document to dump nodes */
3221: doc = axl_doc_parse_from_file ("test_13c.xml", error);
3222: if (doc == NULL)
3223: return axl_false;
3224:
3225: /* get a reference to the first root child node: <test> */
3226: node = axl_doc_get_root (doc);
3227: node = axl_node_get_first_child (node);
3228: if (! NODE_CMP_NAME (node, "test")) {
3229: axl_error_new (-1, "Expected to find a child node called: <test>", NULL, error);
3230: return axl_false;
3231: } /* end if */
3232:
3233: /* dump the content */
3234: if (! axl_node_dump (node, &content, &size)) {
3235: axl_error_new (-1, "Expected to find a proper dump operation", NULL, error);
3236: return axl_false;
3237: } /* end if */
3238:
3239: /* parse the content dumped, to check it is really the result
3240: * expected */
3241: doc2 = axl_doc_parse (content, size, NULL);
3242: if (doc2 == NULL) {
3243: axl_error_new (-1, "Expected to parse properly dumped content from a node, but a failure was found", NULL, error);
3244: return axl_false;
3245: } /* end if */
3246:
3247: doc3 = axl_doc_parse_from_file ("test_13d.xml", NULL);
3248: if (doc3 == NULL) {
3249: axl_error_new (-1, "Expected to parse properly a reference file but an error was found", NULL, error);
3250: return axl_false;
3251: } /* end if */
3252:
3253: /* check result */
3254: if (! axl_doc_are_equal (doc2, doc3)) {
3255: axl_error_new (-1, "Expected to find equal document to reference, at node dump operations, but not found", NULL, error);
3256: return axl_false;
3257: } /* end if */
3258:
3259: /* free the content */
3260: axl_free (content);
3261:
3262: /* free the document */
3263: axl_doc_free (doc);
3264: axl_doc_free (doc2);
3265: axl_doc_free (doc3);
3266:
3267: /* load test_13e.xml document */
3268: doc = axl_doc_parse_from_file ("test_13e.xml", NULL);
3269: if (doc == NULL) {
3270: axl_error_new (-1, "Expected to find parseable document, but an error was found..", NULL, error);
3271: return axl_false;
3272: }
3273:
3274: /* now dump the document */
3275: if (!axl_doc_dump_pretty_to_file (doc, "test_13e.xml.test", 4)) {
3276: axl_error_new (-1, "Expected to perform a proper dump operation but an error was found..", NULL, error);
3277: return axl_false;
3278: }
3279:
3280: /* now open the content produced and check both results */
3281: doc2 = axl_doc_parse_from_file ("test_13e.xml.test", NULL);
3282: if (doc2 == NULL) {
3283: axl_error_new (-1, "Failed to open document that was expected to be opened", NULL, error);
3284: return axl_false;
3285: } /* end if */
3286:
3287: /* check both document */
3288: if (! axl_doc_are_equal (doc, doc2)) {
3289: axl_error_new (-1, "Expected to find equal documents before dump operation, but it wasn't found", NULL, error);
3290: return axl_false;
3291: }
3292:
3293: /* free both documents */
3294: axl_doc_free (doc2);
3295: axl_doc_free (doc);
3296:
3297: /* load test_13e.xml document */
3298: doc = axl_doc_parse_from_file ("test_13f.xml", NULL);
3299: if (doc == NULL) {
3300: axl_error_new (-1, "Expected to find parseable document, but an error was found..", NULL, error);
3301: return axl_false;
3302: }
3303:
3304: /* dump to memory */
3305: if (! axl_doc_dump_pretty (doc, &content, &size, 4)) {
3306: axl_error_new (-1, "Expected to find proper dump operation not found", NULL, error);
3307: return axl_false;
3308: } /* end if */
3309:
3310: /* now check content dumped against the predefined value */
3311: if (size != 1262 || ! axl_cmp (content, "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n\
3312: <common-unit-translate>\n\
3313: <!-- Translations for the module and its attributes -->\n\
3314: <translate module='issued_invoice' as='Facturas emitidas' norma='no'>\n\
3315: <translate attr='All Columns' as='Todas las columnas' norma='no'>Value1</translate>\n\
3316: <translate attr='invoice_number' as='Número' norma='no'>Value1</translate>\n\
3317: <translate attr='date' as='Fecha' norma='no'>Value1</translate>\n\
3318: <translate attr='amount' as='Importe' norma='no'>Value1</translate>\n\
3319: <translate attr='year' as='Año' norma='no'>Value1</translate>\n\
3320: <translate attr='tax' as='IVA' norma='no'>Value1</translate>\n\
3321: <translate attr='amount_with_tax' as='Total' norma='no'>Value1</translate>\n\
3322: <translate attr='cur_state' as='Estado' norma='no'>Value1</translate>\n\
3323: </translate>\n\
3324: <!-- Translations for enum declarations -->\n\
3325: <translate enum='IssuedInvoiceState' as='Estado factura' norma='no'>\n\
3326: <translate value='Valid' as='Valida' norma='no'>Value1</translate>\n\
3327: <translate value='Cancelled' as='Anulada' norma='no'>Value1</translate>\n\
3328: <translate value='NegativeInvoice' as='Negativa' norma='no'>Value1</translate>\n\
3329: </translate>\n\
3330: </common-unit-translate>\n")) {
3331: printf ("Content lenght found: %d and size=%d..\n", (int) strlen (content), size);
3332: axl_error_new (-1, "Failed to check dump content, expected different values", NULL, error);
3333: return axl_false;
3334: } /* end if */
3335:
3336: axl_free (content);
3337:
3338: /* free document */
3339: axl_doc_free (doc);
3340:
3341:
3342: return axl_true;
3343: }
3344:
3345: /**
3346: * @brief A more complex DTD parsing example
3347: *
3348: * @param error The optional axlError to be used to report errors.
3349: *
3350: * @return axl_true if the validity test is passed, axl_false if not.
3351: */
3352: axl_bool test_12 (axlError ** error)
3353: {
3354: axlDoc * doc = NULL;
3355: axlDtd * dtd = NULL;
3356:
3357: /* parse gmovil file (an af-arch xml chunk) */
3358: doc = axl_doc_parse_from_file ("channel.xml", error);
3359: if (doc == NULL)
3360: return axl_false;
3361:
3362: /* parse af-arch DTD */
3363: dtd = axl_dtd_parse_from_file ("channel.dtd", error);
3364: if (dtd == NULL)
3365: return axl_false;
3366:
3367: /* perform DTD validation */
3368: if (! axl_dtd_validate (doc, dtd, error)) {
3369: return axl_false;
3370: }
3371:
3372: /* free doc reference */
3373: axl_doc_free (doc);
3374:
3375: /* parse gmovil file (an af-arch xml chunk) */
3376: doc = axl_doc_parse_from_file ("channel2.xml", error);
3377: if (doc == NULL)
3378: return axl_false;
3379:
3380: /* perform DTD validation */
3381: if (! axl_dtd_validate (doc, dtd, error)) {
3382: return axl_false;
3383: }
3384:
3385: /* free doc reference */
3386: axl_doc_free (doc);
3387:
3388: /* parse gmovil file (an af-arch xml chunk) */
3389: doc = axl_doc_parse_from_file ("channel3.xml", error);
3390: if (doc == NULL)
3391: return axl_false;
3392:
3393: /* perform DTD validation */
3394: if (! axl_dtd_validate (doc, dtd, error)) {
3395: return axl_false;
3396: }
3397:
3398: /* free doc reference */
3399: axl_doc_free (doc);
3400:
3401: /* parse gmovil file (an af-arch xml chunk) */
3402: doc = axl_doc_parse_from_file ("channel4.xml", error);
3403: if (doc == NULL)
3404: return axl_false;
3405:
3406: /* perform DTD validation */
3407: if (! axl_dtd_validate (doc, dtd, error)) {
3408: return axl_false;
3409: }
3410:
3411: /* free doc reference */
3412: axl_doc_free (doc);
3413:
3414: /* free dtd reference */
3415: axl_dtd_free (dtd);
3416:
3417: /* parse a BEEP greetins example */
3418: doc = axl_doc_parse_from_file ("channel5.xml", error);
3419: if (doc == NULL)
3420: return axl_false;
3421:
3422: /* parse the TLS dtd file */
3423: dtd = axl_dtd_parse_from_file ("channel.dtd", error);
3424: if (dtd == NULL)
3425: return axl_false;
3426:
3427: /* perform DTD validation */
3428: if (! axl_dtd_validate (doc, dtd, error)) {
3429: return axl_false;
3430: }
3431:
3432: /* free doc reference */
3433: axl_doc_free (doc);
3434:
3435: /* free dtd reference */
3436: axl_dtd_free (dtd);
3437:
3438:
3439: /* test end */
3440: return axl_true;
3441: }
3442:
3443: /**
3444: * @brief A more complex DTD parsing example
3445: *
3446: * @param error The optional axlError to be used to report errors.
3447: *
3448: * @return axl_true if the validity test is passed, axl_false if not.
3449: */
3450: axl_bool test_11 (axlError ** error)
3451: {
3452: axlDoc * doc = NULL;
3453: axlDtd * dtd = NULL;
3454:
3455: /* parse gmovil file (an af-arch xml chunk) */
3456: doc = axl_doc_parse_from_file ("gmovil2.xml", error);
3457: if (doc == NULL)
3458: return axl_false;
3459:
3460: /* parse af-arch DTD */
3461: dtd = axl_dtd_parse_from_file ("fact.dtd", error);
3462: if (dtd == NULL)
3463: return axl_false;
3464:
3465: /* perform DTD validation */
3466: if (! axl_dtd_validate (doc, dtd, error)) {
3467: return axl_false;
3468: }
3469:
3470: /* free doc reference */
3471: axl_doc_free (doc);
3472:
3473: /* free dtd reference */
3474: axl_dtd_free (dtd);
3475:
3476: /* test end */
3477: return axl_true;
3478: }
3479:
3480: /**
3481: * @brief A more complex DTD parsing example
3482: *
3483: * @param error The optional axlError to be used to report errors.
3484: *
3485: * @return axl_true if the validity test is passed, axl_false if not.
3486: */
3487: axl_bool test_10 (axlError ** error)
3488: {
3489: axlDoc * doc = NULL;
3490: axlDtd * dtd = NULL;
3491: axlDtdElement * element = NULL;
3492: axlDtdElementList * itemList = NULL;
3493:
3494: /* parse gmovil file (an af-arch xml chunk) */
3495: doc = axl_doc_parse_from_file ("test5.xml", error);
3496: if (doc == NULL)
3497: return axl_false;
3498:
3499: /* parse af-arch DTD */
3500: dtd = axl_dtd_parse_from_file ("test5.dtd", error);
3501: if (dtd == NULL)
3502: return axl_false;
3503:
3504: /* get the dtd element representation */
3505: element = axl_dtd_get_element (dtd, "choices");
3506:
3507: /* get the item list inside */
3508: itemList = axl_dtd_get_item_list (element);
3509: if (axl_dtd_item_list_count (itemList) != 4) {
3510: axl_error_new (-1, "expected to receive an item list with 4 item nodes inside", NULL, error);
3511: return axl_false;
3512: }
3513:
3514: if (axl_dtd_item_list_type (itemList) != CHOICE) {
3515: axl_error_new (-1, "expected to receive a choice item list", NULL, error);
3516: return axl_false;
3517: }
3518:
3519: if (axl_dtd_item_list_repeat (itemList) != ZERO_OR_MANY) {
3520: axl_log ("test-01", AXL_LEVEL_DEBUG, "received a different repeat configuration: %d != %d",
3521: ZERO_OR_MANY, axl_dtd_item_list_repeat (itemList));
3522: axl_error_new (-1, "expected to receive an item list with (*) zero or many spec", NULL, error);
3523: return axl_false;
3524: }
3525:
3526:
3527: /* perform DTD validation */
3528: if (! axl_dtd_validate (doc, dtd, error)) {
3529: return axl_false;
3530: }
3531:
3532: /* free dtd reference */
3533: axl_dtd_free (dtd);
3534:
3535:
3536: /* parse af-arch DTD */
3537: dtd = axl_dtd_parse_from_file ("test5.1.dtd", error);
3538: if (dtd == NULL)
3539: return axl_false;
3540:
3541: /* perform DTD validation */
3542: if (axl_dtd_validate (doc, dtd, error)) {
3543: axl_error_new (-1, "A validation failure was expected.", NULL, error);
3544: return axl_false;
3545: }
3546:
3547: /* because a failure was expected, release memory allocated by
3548: * axl_error_new */
3549: axl_error_free (*error);
3550:
3551: /* free doc reference */
3552: axl_doc_free (doc);
3553:
3554: /* free dtd reference */
3555: axl_dtd_free (dtd);
3556:
3557: /* test end */
3558: return axl_true;
3559: }
3560:
3561: /**
3562: * @brief A more complex DTD parsing example
3563: *
3564: * @param error The optional axlError to be used to report errors.
3565: *
3566: * @return axl_true if the validity test is passed, axl_false if not.
3567: */
3568: axl_bool test_09 (axlError ** error)
3569: {
3570: axlDoc * doc = NULL;
3571: axlDtd * dtd = NULL;
3572: axlDtdElement * element = NULL;
3573: axlDtdElementList * itemList = NULL;
3574: axlDtdElementListNode * itemNode = NULL;
3575:
3576:
3577: /* parse gmovil file (an af-arch xml chunk) */
3578: doc = axl_doc_parse_from_file ("test4.xml", error);
3579: if (doc == NULL)
3580: return axl_false;
3581:
3582: /* parse af-arch DTD */
3583: dtd = axl_dtd_parse_from_file ("test4.dtd", error);
3584: if (dtd == NULL)
3585: return axl_false;
3586:
3587:
3588: /* get dtd element */
3589: element = axl_dtd_get_element (dtd, "nodes");
3590: if (element == NULL) {
3591: axl_error_new (-1, "unable to find expected DTD element", NULL, error);
3592: return axl_false;
3593: }
3594:
3595: /* get the item list */
3596: itemList = axl_dtd_get_item_list (element);
3597: if (axl_dtd_item_list_count (itemList) != 8) {
3598: axl_log ("test-01", AXL_LEVEL_CRITICAL, "found item list size: %d != 8",
3599: axl_dtd_item_list_count (itemList));
3600: axl_error_new (-1, "expected to find an item list definition with 8 elements", NULL, error);
3601: return axl_false;
3602: }
3603:
3604: /* check <first> node spec */
3605: itemNode = axl_dtd_item_list_get_node (itemList, 0);
3606: if (axl_dtd_item_node_get_type (itemNode) != AXL_ELEMENT_NODE) {
3607: axl_error_new (-1, "expected to find an item node definition, not found", NULL, error);
3608: return axl_false;
3609: }
3610:
3611: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "first")) {
3612: axl_error_new (-1, "expected to find an item node name (first) definition, not found", NULL, error);
3613: return axl_false;
3614: }
3615:
3616: if (axl_dtd_item_node_get_repeat (itemNode) != ONE_OR_MANY) {
3617: axl_error_new (-1, "expected to find an item node definition with one or many repeat def (+), not found", NULL, error);
3618: return axl_false;
3619: }
3620:
3621: /* check <second> node spec */
3622: itemNode = axl_dtd_item_list_get_node (itemList, 1);
3623: if (axl_dtd_item_node_get_type (itemNode) != AXL_ELEMENT_NODE) {
3624: axl_error_new (-1, "expected to find an item node definition, not found", NULL, error);
3625: return axl_false;
3626: }
3627:
3628: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "second")) {
3629: axl_error_new (-1, "expected to find an item node name (second) definition, not found", NULL, error);
3630: return axl_false;
3631: }
3632:
3633: if (axl_dtd_item_node_get_repeat (itemNode) != ONE_AND_ONLY_ONE) {
3634: axl_error_new (-1, "expected to find an item node definition with one and only one repeat def (), not found", NULL, error);
3635: return axl_false;
3636: }
3637:
3638: /* check <third> node spec */
3639: itemNode = axl_dtd_item_list_get_node (itemList, 2);
3640: if (axl_dtd_item_node_get_type (itemNode) != AXL_ELEMENT_NODE) {
3641: axl_error_new (-1, "expected to find an item node definition, not found", NULL, error);
3642: return axl_false;
3643: }
3644:
3645: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "third")) {
3646: axl_error_new (-1, "expected to find an item node name (third) definition, not found", NULL, error);
3647: return axl_false;
3648: }
3649:
3650: if (axl_dtd_item_node_get_repeat (itemNode) != ZERO_OR_ONE) {
3651: axl_error_new (-1, "expected to find an item node definition with zero or one repeat def (?), not found", NULL, error);
3652: return axl_false;
3653: }
3654:
3655: /* check <fourth> node spec */
3656: itemNode = axl_dtd_item_list_get_node (itemList, 3);
3657: if (axl_dtd_item_node_get_type (itemNode) != AXL_ELEMENT_NODE) {
3658: axl_error_new (-1, "expected to find an item node definition, not found", NULL, error);
3659: return axl_false;
3660: }
3661:
3662: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "fourth")) {
3663: axl_error_new (-1, "expected to find an item node name (fourth) definition, not found", NULL, error);
3664: return axl_false;
3665: }
3666:
3667: if (axl_dtd_item_node_get_repeat (itemNode) != ONE_AND_ONLY_ONE) {
3668: axl_error_new (-1, "expected to find an item node definition with one and only one repeat def (), not found", NULL, error);
3669: return axl_false;
3670: }
3671:
3672: /* check <fifth> node spec */
3673: itemNode = axl_dtd_item_list_get_node (itemList, 4);
3674: if (axl_dtd_item_node_get_type (itemNode) != AXL_ELEMENT_NODE) {
3675: axl_error_new (-1, "expected to find an item node definition, not found", NULL, error);
3676: return axl_false;
3677: }
3678:
3679: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "fifth")) {
3680: axl_error_new (-1, "expected to find an item node name (fifth) definition, not found", NULL, error);
3681: return axl_false;
3682: }
3683:
3684: if (axl_dtd_item_node_get_repeat (itemNode) != ZERO_OR_MANY) {
3685: axl_error_new (-1, "expected to find an item node definition with zero to many repeat def (*), not found", NULL, error);
3686: return axl_false;
3687: }
3688:
3689: /* check <fourth> node spec */
3690: itemNode = axl_dtd_item_list_get_node (itemList, 5);
3691: if (axl_dtd_item_node_get_type (itemNode) != AXL_ELEMENT_NODE) {
3692: axl_error_new (-1, "expected to find an item node definition, not found", NULL, error);
3693: return axl_false;
3694: }
3695:
3696: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "fourth")) {
3697: axl_error_new (-1, "expected to find an item node name (fourth) definition, not found", NULL, error);
3698: return axl_false;
3699: }
3700:
3701: if (axl_dtd_item_node_get_repeat (itemNode) != ZERO_OR_MANY) {
3702: axl_error_new (-1, "expected to find an item node definition with zero to many repeat def (*), not found", NULL, error);
3703: return axl_false;
3704: }
3705:
3706: /* check repetition pattern for node spec 6 */
3707: itemNode = axl_dtd_item_list_get_node (itemList, 6);
3708: if (axl_dtd_item_node_get_type (itemNode) != AXL_ELEMENT_LIST) {
3709: axl_error_new (-1, "expected to find an item node definition, not found", NULL, error);
3710: return axl_false;
3711: }
3712:
3713: if (axl_dtd_item_node_get_repeat (itemNode) != ZERO_OR_ONE) {
3714: axl_log ("test-01", AXL_LEVEL_DEBUG, "repeat configuration was different: %d != %d",
3715: axl_dtd_item_node_get_repeat (itemNode), ZERO_OR_ONE);
3716: axl_error_new (-1, "expected to find an item node definition with zero or one repeat def (?), not found", NULL, error);
3717: return axl_false;
3718: }
3719:
3720: /* check repetition pattern for node spec 7 */
3721: itemNode = axl_dtd_item_list_get_node (itemList, 7);
3722: if (axl_dtd_item_node_get_type (itemNode) != AXL_ELEMENT_LIST) {
3723: axl_error_new (-1, "expected to find an item node definition, not found", NULL, error);
3724: return axl_false;
3725: }
3726:
3727: if (axl_dtd_item_node_get_repeat (itemNode) != ZERO_OR_MANY) {
3728: axl_log ("test-01", AXL_LEVEL_DEBUG, "repeat configuration was different: %d != %d",
3729: axl_dtd_item_node_get_repeat (itemNode), ZERO_OR_MANY);
3730: axl_error_new (-1, "expected to find an item node definition with zero or one repeat def (*), not found", NULL, error);
3731: return axl_false;
3732: }
3733:
3734:
3735: /* perform DTD validation */
3736: if (! axl_dtd_validate (doc, dtd, error)) {
3737: return axl_false;
3738: }
3739:
3740: /* free doc reference */
3741: axl_doc_free (doc);
3742:
3743: /* free dtd reference */
3744: axl_dtd_free (dtd);
3745:
3746: /* test end */
3747: return axl_true;
3748: }
3749:
3750: /**
3751: * @brief Perform a loading for a large file.
3752: *
3753: * @param error The optional axlError to be used to report errors.
3754: *
3755: * @return axl_true if the validity test is passed, axl_false if not.
3756: */
3757: axl_bool test_08 (axlError ** error)
3758: {
3759: /* top level definitions */
3760: axlDoc * doc = NULL;
3761:
3762: /* get current doc reference */
3763: doc = axl_doc_parse_from_file ("large.xml", error);
3764: if (doc == NULL)
3765: return axl_false;
3766:
3767: /* release the document */
3768: axl_doc_free (doc);
3769:
3770: return axl_true;
3771: }
3772:
3773:
3774: /**
3775: * @brief A bit more complex DTD parsing checkings
3776: *
3777: * @param error The optional axlError to be used to report errors.
3778: *
3779: * @return axl_true if the validity test is passed, axl_false if not.
3780: */
3781: axl_bool test_07 (axlError ** error)
3782: {
3783: /* top level definitions */
3784: axlDoc * doc = NULL;
3785: axlDtd * dtd = NULL;
3786:
3787: /* get current doc reference */
3788: doc = axl_doc_parse_from_file ("test3.xml", error);
3789: if (doc == NULL)
3790: return axl_false;
3791:
3792: /* load DTD */
3793: dtd = axl_dtd_parse_from_file ("test3.dtd", error);
3794: if (dtd == NULL)
3795: return axl_false;
3796:
3797: /* validate the xml document */
3798: if (! axl_dtd_validate (doc, dtd, error)) {
3799: return axl_false;
3800: }
3801:
3802: /* free document */
3803: axl_doc_free (doc);
3804:
3805: /* free dtd document */
3806: axl_dtd_free (dtd);
3807:
3808: return axl_true;
3809: }
3810:
3811: /**
3812: * @brief A bit more complex DTD parsing checkings
3813: *
3814: * @param error The optional axlError to be used to report errors.
3815: *
3816: * @return axl_true if the validity test is passed, axl_false if not.
3817: */
3818: axl_bool test_06 (axlError ** error)
3819: {
3820: /* top level definitions */
3821: axlDoc * doc = NULL;
3822: axlDtd * dtd = NULL;
3823:
3824: /* dtd iteration variables */
3825: axlDtdElement * element;
3826: axlDtdElementList * itemList;
3827: axlDtdElementListNode * itemNode;
3828:
3829: /* get current doc reference */
3830: doc = axl_doc_parse_from_file ("test3.xml", error);
3831: if (doc == NULL)
3832: return axl_false;
3833:
3834: /* load DTD */
3835: dtd = axl_dtd_parse_from_file ("test3.dtd", error);
3836: if (dtd == NULL)
3837: return axl_false;
3838:
3839: /* get the DTD element reference and check it */
3840: element = axl_dtd_get_root (dtd);
3841: if (element == NULL) {
3842: axl_error_new (-1, "Expected to receive a root DTD node, not found", NULL, error);
3843: return axl_false;
3844: }
3845:
3846: /* check expected DTD root content */
3847: if (! axl_cmp (axl_dtd_get_element_name (element), "complex")) {
3848: axl_error_new (-1, "Expected to receive a root DTD node name, not found", NULL, error);
3849: return axl_false;
3850: }
3851:
3852: if (axl_dtd_get_element_type (element) != ELEMENT_TYPE_CHILDREN) {
3853: axl_error_new (-1, "Expected to receive a root DTD node selection type (Children), not found", NULL, error);
3854: return axl_false;
3855: }
3856:
3857: /* get content specification */
3858: itemList = axl_dtd_get_item_list (element);
3859: if (axl_dtd_item_list_count (itemList) != 1) {
3860: axl_log ("test-01", AXL_LEVEL_DEBUG, "item count %d != %d item spected",
3861: axl_dtd_item_list_count (itemList), 1);
3862: axl_error_new (-1, "Expected to receive an item list specification with only one node, not found", NULL, error);
3863: return axl_false;
3864: }
3865:
3866: /* get times configuration */
3867: if (axl_dtd_item_list_repeat (itemList) != ONE_AND_ONLY_ONE) {
3868: axl_error_new (-1, "Expected to receive a repetition configuration (one and only one) but not found", NULL, error);
3869: return axl_false;
3870: }
3871:
3872: /* get the child node reference */
3873: itemNode = axl_dtd_item_list_get_node (itemList, 0);
3874: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "data")) {
3875: axl_log ("test-01", AXL_LEVEL_CRITICAL, "found item name: '%s' != data",
3876: axl_dtd_item_node_get_value (itemNode));
3877: axl_error_new (-1, "Expected to receive an item node but, not found", NULL, error);
3878: return axl_false;
3879: }
3880:
3881: /* get the DTD element which represents the provided data */
3882: element = axl_dtd_get_element (dtd, "data");
3883: if ((element == NULL) || (!axl_cmp (axl_dtd_get_element_name (element), "data"))) {
3884: axl_error_new (-1, "Expected to receive a DTD element definition but NULL was found or a different DTD name, not found", NULL, error);
3885: return axl_false;
3886: }
3887:
3888: /* get content specification */
3889: itemList = axl_dtd_get_item_list (element);
3890: if (axl_dtd_item_list_count (itemList) != 3) {
3891: axl_log ("test-01", AXL_LEVEL_DEBUG, "item count %d != %d item spected",
3892: axl_dtd_item_list_count (itemList), 3);
3893: axl_error_new (-1, "Expected to receive an item list specification with only one node, not found", NULL, error);
3894: return axl_false;
3895: }
3896:
3897: /* get item list especification */
3898: if (axl_dtd_item_list_type (itemList) != SEQUENCE) {
3899: axl_log ("test-01", AXL_LEVEL_DEBUG, "item count %d != %d item spected",
3900: axl_dtd_item_list_count (itemList), 3);
3901: axl_error_new (-1, "Expected to receive an item list specification as a sequence type, not found", NULL, error);
3902: return axl_false;
3903: }
3904:
3905: /* check item nodes found inside the item list */
3906: itemNode = axl_dtd_item_list_get_node (itemList, 0);
3907: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "row")) {
3908: axl_error_new (-1, "Expected to receive an item node (row) but, not found", NULL, error);
3909: return axl_false;
3910: }
3911:
3912: /* get the child node reference */
3913: itemNode = axl_dtd_item_list_get_node (itemList, 1);
3914: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "column")) {
3915: axl_error_new (-1, "Expected to receive an item node (column) but, not found", NULL, error);
3916: return axl_false;
3917: }
3918:
3919: /* get current configuration for repetition value for the
3920: * provided content particule */
3921: if (axl_dtd_item_node_get_repeat (itemNode) != ONE_AND_ONLY_ONE) {
3922: axl_error_new (-1, "Expected to receive an item node repeat configuration but, not found", NULL, error);
3923: return axl_false;
3924: }
3925:
3926:
3927: /* get the child node reference */
3928: itemNode = axl_dtd_item_list_get_node (itemList, 2);
3929: if (! axl_cmp (axl_dtd_item_node_get_value (itemNode), "value")) {
3930: axl_error_new (-1, "Expected to receive an item node (value) but, not found", NULL, error);
3931: return axl_false;
3932: }
3933:
3934: /* now work with the choice element */
3935: element = axl_dtd_get_element (dtd, "column");
3936: if ((element == NULL) || (!axl_cmp (axl_dtd_get_element_name (element), "column"))) {
3937: axl_error_new (-1, "Expected to receive a DTD element definition but NULL was found or a different DTD name (column), not found", NULL, error);
3938: return axl_false;
3939: }
3940:
3941: /* get content specification */
3942: itemList = axl_dtd_get_item_list (element);
3943: if (axl_dtd_item_list_count (itemList) != 4) {
3944: axl_log ("test-01", AXL_LEVEL_DEBUG, "item count %d != %d item spected",
3945: axl_dtd_item_list_count (itemList), 4);
3946: axl_error_new (-1, "Expected to receive an item list specification with only one node, not found", NULL, error);
3947: return axl_false;
3948: }
3949:
3950: /* get item list especification */
3951: if (axl_dtd_item_list_type (itemList) != CHOICE) {
3952: axl_error_new (-1, "Expected to receive an item list specification as a CHOICE type, not found", NULL, error);
3953: return axl_false;
3954: }
3955:
3956: /* get the DTD element which represents the provided data */
3957: element = axl_dtd_get_element (dtd, "data");
3958: if ((element == NULL) || (!axl_cmp (axl_dtd_get_element_name (element), "data"))) {
3959: axl_error_new (-1, "Expected to receive a DTD element definition but NULL was found or a different DTD name, not found", NULL, error);
3960: return axl_false;
3961: }
3962:
3963: /* free document */
3964: axl_doc_free (doc);
3965:
3966: /* free dtd document */
3967: axl_dtd_free (dtd);
3968:
3969: return axl_true;
3970: }
3971:
3972: /**
3973: * @brief DTD operations. Checks that DTD support works, reading
3974: * simple DTD definitions, and ensuring elements are properly read.
3975: *
3976: * @param error The axlError reference to be filled if the function
3977: * returns axl_false.
3978: *
3979: * @return axl_true if the validity test is passed, axl_false if not.
3980: */
3981: axl_bool test_05 (axlError ** error)
3982: {
3983:
3984: axlDoc * doc;
3985: axlNode * node;
3986: axlDtd * dtd;
3987:
3988: /* parse the document found */
3989: doc = axl_doc_parse_from_file ("test.xml", error);
3990: if (doc == NULL)
3991: return axl_false;
3992:
3993: node = axl_doc_get (doc, "/complex/data/row/td");
3994: if (node == NULL) {
3995: axl_error_new (-1, "Expected to receive a node, not found", NULL, error);
3996: axl_doc_free (doc);
3997: return axl_false;
3998: }
3999:
4000: if (! axl_cmp (axl_node_get_content (node, NULL), "10")) {
4001: axl_error_new (-1, "Expected to receive a node content, not found", NULL, error);
4002: axl_doc_free (doc);
4003: return axl_false;
4004: }
4005:
4006: /* free previous document */
4007: axl_doc_free (doc);
4008:
4009: /* parse the document found */
4010: doc = axl_doc_parse_from_file ("test2.xml", error);
4011: if (doc == NULL)
4012: return axl_false;
4013:
4014:
4015: dtd = axl_dtd_parse_from_file ("test.dtd", error);
4016: if (dtd == NULL)
4017: return axl_false;
4018:
4019: /* now validate the document */
4020: if (! axl_dtd_validate (doc, dtd, error)) {
4021: return axl_false;
4022: }
4023:
4024: /* release memory used by the parser */
4025: axl_doc_free (doc);
4026:
4027: /* release memory used by the DTD element */
4028: axl_dtd_free (dtd);
4029:
4030: return axl_true;
4031:
4032: }
4033:
4034: /**
4035: * @brief Perform some additional checks for a more extended xml
4036: * documents, that includes attributes inside node definitions.
4037: *
4038: * @param error The axlError where failures will be reported
4039: *
4040: * @return The \ref axl_true if test is passed, axl_false if not.
4041: */
4042: axl_bool test_04 (axlError ** error)
4043: {
4044: axlDoc * doc;
4045: axlNode * node;
4046:
4047: /* parse the document */
4048: doc = axl_doc_parse_strings (error,
4049: "<?xml version='1.0' ?>",
4050: " <?test \"my content\" ?>",
4051: " <complex>",
4052: " <data>",
4053: " <row>",
4054: " <!-- A comment inside the middle of the document ",
4055: " more comments ... ",
4056: " more comments \n \r <td>..</td> -->",
4057: " <td>10</td>",
4058: " <test />",
4059: " \n \n \r <?test \"my content\" ?> \n \n",
4060: " <?test \"my content\" ?>",
4061: " <more>",
4062: " <test3 attr='2.0' />",
4063: " </more>",
4064: " </row>",
4065: " <test2 />",
4066: " <non-xml-document>",
4067: " \n \r \n \t",
4068: " <![CDATA[<xml><<<<<<>>>>>><<<>>>><<<<<<>>>]]>"
4069: " \r \n \r \t",
4070: " </non-xml-document>",
4071: " </data>",
4072: " <!-- <data>",
4073: " <row>",
4074: " A comment inside the middle of the document ",
4075: " more comments ... ",
4076: " more comments \n \r <td>..</td> ",
4077: " <td>10</td>",
4078: " <test />",
4079: " <more>",
4080: " <test2 attr='2.0' attr2='3.0' attr4='4.0'/>",
4081: " </more>",
4082: " </row>",
4083: " <test2 />",
4084: " </data> -->",
4085: " </complex>",
4086: NULL);
4087: /* check the result returned */
4088: if (doc == NULL)
4089: return axl_false;
4090:
4091: /* get the node <td> value */
4092: node = axl_doc_get (doc, "/complex/data/row/td");
4093: if (! axl_cmp (axl_node_get_content (node, NULL), "10")) {
4094: axl_log ("test-04", AXL_LEVEL_DEBUG, "found a different content than the expected ('10' != '%s')",
4095: axl_node_get_content (node, NULL));
4096: axl_error_new (-1, "Expected to receive a 10 value, but not found", NULL, error);
4097: return axl_false;
4098: }
4099:
4100: /* get a reference to the test2 node */
4101: node = axl_doc_get (doc, "/complex/data/row/more/test3");
4102: if (node == NULL) {
4103: axl_error_new (-1, "Expected to find a test3 node at the given location", NULL, error);
4104: return axl_false;
4105: }
4106:
4107: /* check the attribute */
4108: if (! axl_node_has_attribute (node, "attr")) {
4109: axl_error_new (-1, "Expected to find an attribute called 'attr' inside test3 node at the given location", NULL, error);
4110: return axl_false;
4111: }
4112:
4113: /* check the attribute value */
4114: if (! axl_cmp (axl_node_get_attribute_value (node, "attr"), "2.0")) {
4115: axl_error_new (-1, "Expected to find an attribute value equal '2.0' inside test2 node at the given location", NULL, error);
4116: return axl_false;
4117: }
4118:
4119: /* add here Pi instruction checking */
4120: if (! axl_doc_has_pi_target (doc, "test")) {
4121: axl_error_new (-1, "failed to get expected PI target 'test'", NULL, error);
4122: return axl_false;
4123: }
4124:
4125: if (! axl_cmp (axl_doc_get_pi_target_content (doc, "test"), "\"my content\"")) {
4126: axl_error_new (-1, "expected to receive a PI content not found", NULL, error);
4127: return axl_false;
4128: }
4129:
4130: node = axl_doc_get (doc, "/complex/data/row");
4131: if (node == NULL) {
4132: axl_error_new (-1, "unable to get expected node to check node PI support", NULL, error);
4133: return axl_false;
4134: }
4135:
4136: if (! axl_node_has_pi_target (node, "test")) {
4137: axl_error_new (-1, "failed to get expected PI target 'test' for the node", NULL, error);
4138: return axl_false;
4139: }
4140:
4141:
4142: node = axl_doc_get (doc, "/complex/data/non-xml-document");
4143: if (node == NULL) {
4144: axl_error_new (-1, "Expected to receive the CDATA node, not found", NULL, error);
4145: return axl_false;
4146: }
4147:
4148: if (! axl_cmp (axl_node_get_content (node, NULL), "<xml><<<<<<>>>>>><<<>>>><<<<<<>>>")) {
4149: printf ("Content doesn't match: %s != %s\n",
4150: axl_node_get_content (node, NULL), "<xml><<<<<<>>>>>><<<>>>><<<<<<>>>");
4151: axl_error_new (-1, "Expected to recevie CDATA content, not found or not match", NULL, error);
4152: return axl_false;
4153: }
4154:
4155:
4156: /* free the memory */
4157: axl_doc_free (doc);
4158:
4159: return axl_true;
4160: }
4161:
4162: /**
4163: * @brief Checks a more extended and complex xml documents
4164: *
4165: * @param error The axlError where failures will be reported.
4166: *
4167: * @return \ref axl_true if test is passed, axl_false if not.
4168: */
4169: axl_bool test_03 (axlError ** error)
4170: {
4171:
4172: axlDoc * doc;
4173: axlNode * node;
4174:
4175: /* parse the xml document provided */
4176: doc = axl_doc_parse ("<?xml version='1.0' ?>\n\
4177: <complex>\n\
4178: <data>\n\
4179: <row>10</row><row>20</row><row>30</row><row>40</row>\n\
4180: </data>\n\
4181: <data2>\n\
4182: <td> 23 </td>\n\
4183: </data2>\n\
4184: </complex>", -1, error);
4185: if (doc == NULL)
4186: return axl_false;
4187:
4188: /* get the root node */
4189: node = axl_doc_get_root (doc);
4190: if (! NODE_CMP_NAME (node, "complex")) {
4191: axl_error_new (-2, "Root node returned from the document is not the one excepted", NULL, error);
4192: axl_doc_free (doc);
4193: return axl_false;
4194: }
4195:
4196: /* test get node function */
4197: node = axl_doc_get (doc, "/complex/data2/td");
4198: if (node == NULL) {
4199: axl_error_new (-2, "Unable to find a node due to a path selection", NULL, error);
4200: axl_doc_free (doc);
4201: return axl_false;
4202: }
4203:
4204: /* check the node returned */
4205: if (! NODE_CMP_NAME (node, "td")) {
4206: axl_error_new (-2, "The node for the node looked up doesn't match ", NULL, error);
4207: axl_doc_free (doc);
4208: return axl_false;
4209: }
4210:
4211: /* check for returning bad nodes */
4212: node = axl_doc_get (doc, "/complex/data3/td");
4213: if (node != NULL) {
4214: axl_error_new (-2, "Returned a node that should be NULL", NULL, error);
4215: axl_doc_free (doc);
4216: return axl_false;
4217: }
4218:
4219: node = axl_doc_get (doc, "/complex/data2/td");
4220: if (!axl_cmp (axl_node_get_content (node, NULL), " 23 ")) {
4221: axl_log ("test-03", AXL_LEVEL_DEBUG, "expected to receive a node content: ' 23 ' but received '%s'",
4222: axl_node_get_content (node, NULL));
4223: axl_error_new (-2, "Node content have failed, expected a different value", NULL, error);
4224: return axl_false;
4225: }
4226:
4227: node = axl_doc_get (doc, "complex/data3/td");
4228: if (node != NULL) {
4229: axl_error_new (-2, "Parsed a path that is invalid", NULL, error);
4230: return axl_false;
4231: }
4232:
4233: /* release memory allocated by the document */
4234: axl_doc_free (doc);
4235:
4236: return axl_true;
4237: }
4238:
4239: axl_bool test_02_always_fail (axlStream * stream, const char ** detected, axlPointer user_data, axlError ** error)
4240: {
4241: /* always return axl_false to check how behave the library */
4242: return axl_false;
4243: }
4244:
4245:
4246: /**
4247: * @brief Checks xml document error for basic parsing.
4248: *
4249: * @param error The axlError where failures are returned.
4250: *
4251: * @return axl_true if test are properly run. axl_false if not.
4252: */
4253: axl_bool test_02 (axlError ** error)
4254: {
4255: axlDoc * doc;
4256:
4257: doc = axl_doc_parse ("<? xml >", 8, error);
4258: if (doc != NULL) {
4259: axl_error_new (-1, "Failed to detect wrong xml header", NULL, error);
4260: return axl_false;
4261: }
4262: axl_error_free (* error);
4263: (*error) = NULL;
4264:
4265: doc = axl_doc_parse ("<?xml >", 7, error);
4266: if (doc != NULL) {
4267:
4268: axl_error_new (-1, "Failed to detect wrong xml trailing header", NULL, error);
4269: return axl_false;
4270: }
4271: axl_error_free (* error);
4272: (*error) = NULL;
4273:
4274: /* configure an encoding function that fails to detect */
4275: axl_doc_set_detect_codification_func (test_02_always_fail, NULL);
4276:
4277: doc = axl_doc_parse ("<this />", 8, error);
4278: if (doc != NULL) {
4279: axl_error_new (-1, "Failed to detect wrong xml trailing header", NULL, error);
4280: return axl_false;
4281: }
4282: axl_error_free (* error);
4283: (*error) = NULL;
4284: /* uninstall detect codification */
4285: axl_doc_set_detect_codification_func (NULL, NULL);
4286:
4287:
4288: /* wrong closed document comment */
4289: doc = axl_doc_parse ("<document><this><!-- this not closed --</document>", 50, error);
4290: if (doc != NULL) {
4291: axl_error_new (-1, "Failed to detect wrong balanced xml document", NULL, error);
4292: return axl_false;
4293: }
4294: axl_error_free (* error);
4295: (*error) = NULL;
4296:
4297: /* opening an unbalanced document */
4298: doc = axl_doc_parse ("<document><this><!-- this not closed --></document>", 51, error);
4299: if (doc != NULL) {
4300: axl_error_new (-1, "Failed to detect wrong balanced xml document", NULL, error);
4301: return axl_false;
4302: }
4303: axl_error_free (* error);
4304: (*error) = NULL;
4305:
4306: /* opening an unbalanced document with all nodes called the same */
4307: printf ("Test 02: unbalanced document called with same nodes..\n");
4308: doc = axl_doc_parse ("<document><document><!-- this not closed --></document>", 55, error);
4309: if (doc != NULL) {
4310: axl_error_new (-1, "Failed to detect wrong balanced xml document", NULL, error);
4311: return axl_false;
4312: }
4313: axl_error_free (* error);
4314: (*error) = NULL;
4315:
4316: return axl_true;
4317: }
4318:
4319:
4320: /**
4321: * @brief Parse an initial document, with an xml header with
4322: * version=1.0 and no more header.
4323: *
4324: *
4325: * @return axl_false if the function fails to parse the
4326: * document. axl_true if the test was properly executed.
4327: */
4328: axl_bool test_01 (axlError ** error)
4329: {
4330: /* axl document representation */
4331: axlDoc * doc;
4332:
4333:
4334: /* parse the given string */
4335: doc = axl_doc_parse ("<?xml version='1.0' ?><axldoc />", 32, error);
4336: if (doc == NULL) {
4337: return axl_false;
4338: }
4339: axl_doc_free (doc);
4340:
4341: doc = axl_doc_parse ("<?xml version='1.0' ?> <another />", 55, error);
4342: if (doc == NULL) {
4343: return axl_false;
4344: }
4345:
4346: /* release document parsed */
4347: axl_doc_free (doc);
4348:
4349: doc = axl_doc_parse ("<?xml \n \t \n \r version='1.0' ?> <doc />", 50, error);
4350: if (doc == NULL) {
4351: return axl_false;
4352: }
4353:
4354: /* release document parsed */
4355: axl_doc_free (doc);
4356:
4357: doc = axl_doc_parse ("<?xml version=\"1.0\" ?> \r \t \n<another />", 54, error);
4358: if (doc == NULL) {
4359: return axl_false;
4360: }
4361:
4362: /* release document parsed */
4363: axl_doc_free (doc);
4364:
4365: doc = axl_doc_parse ("<?xml version=\"1.0\" \t \n \r encoding='utf-8\" ?> <data />", 63, error);
4366: if (doc == NULL) {
4367: return axl_false;
4368: }
4369:
4370: if (strcmp ("utf-8", axl_doc_get_encoding (doc))) {
4371: printf ("ERROR: encoding read from the document differs from the expected (got %s, expected %s)!\n",
4372: axl_doc_get_encoding (doc), "utf-8");
4373: axl_error_new (-1, "ERROR: encoding read from the document differs from the expected!", NULL, error);
4374: return axl_false;
4375: }
4376:
4377: /* release document parsed */
4378: axl_doc_free (doc);
4379:
4380: doc = axl_doc_parse ("<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <data/>", 65, error);
4381: if (doc == NULL) {
4382: return axl_false;
4383: }
4384:
4385: if (!axl_doc_get_standalone (doc)) {
4386: printf ("ERROR: Expected to receive a true standalone configuration but axl_false was found\n");
4387: return axl_false;
4388: }
4389:
4390: /* release document parsed */
4391: axl_doc_free (doc);
4392:
4393:
4394: return axl_true;
4395: }
4396:
4397: /**
4398: * @brief Axl stream boundary checks.
4399: *
4400: *
4401: * @return axl_false if the function fails to parse the
4402: * document. axl_true if the test was properly executed.
4403: */
4404: axl_bool test_01a (axlError ** error)
4405: {
4406: axlStream * stream;
4407: char * value;
4408: int chunk_matched = -2;
4409:
4410: /* parse the string */
4411: stream = axl_stream_new ("customer", -1, NULL, -1, error);
4412: if (stream == NULL)
4413: return axl_false;
4414:
4415: /* get the value */
4416: value = axl_stream_get_until (stream, NULL, &chunk_matched, axl_true, 2, "[", ".");
4417: if (value != NULL) {
4418: /* free the stream */
4419: axl_stream_free (stream);
4420:
4421: /* fill an error */
4422: axl_error_new (-1, "expected to find a null value while parsing content", NULL, error);
4423:
4424: return axl_false;
4425: }
4426:
4427: if (chunk_matched != -1) {
4428: /* free the stream */
4429: axl_stream_free (stream);
4430:
4431: /* fill an error */
4432: axl_error_new (-1, "expected to chunk matched value equal to -1", NULL, error);
4433:
4434: return axl_false;
4435: }
4436:
4437: /* parse the stream using zero support */
4438:
4439: /* get the value */
4440: value = axl_stream_get_until_zero (stream, NULL, &chunk_matched, axl_true, 2, "[", ".");
4441: if (value == NULL) {
4442: /* free the stream */
4443: axl_stream_free (stream);
4444:
4445: /* fill an error */
4446: axl_error_new (-1, "expected to find a defined value while parsing content", NULL, error);
4447:
4448: return axl_false;
4449: }
4450:
4451: if (chunk_matched != -2) {
4452: /* free the stream */
4453: axl_stream_free (stream);
4454:
4455: /* fill an error */
4456: axl_error_new (-1, "expected to chunk matched value equal to -2", NULL, error);
4457:
4458: return axl_false;
4459: }
4460:
4461: /* zero string found (in the current stream) */
4462: if (! axl_cmp (value, "customer")) {
4463: printf ("Found values: '%s' != 'customer'\n", value);
4464:
4465: /* fill an error */
4466: axl_error_new (-1, "expected to find a string not found", NULL, error);
4467:
4468: return axl_false;
4469: }
4470:
4471: /* free the stream */
4472: axl_stream_free (stream);
4473:
4474: /* parse the string */
4475: stream = axl_stream_new ("customer", -1, NULL, -1, error);
4476: if (stream == NULL)
4477: return axl_false;
4478:
4479: axl_stream_push (stream, "provider ", 9);
4480: if (! (axl_stream_peek (stream, "provider", 8) > 0)) {
4481: axl_error_new (-1, "failed to check expected input at the stream after push operation", NULL, error);
4482: return axl_false;
4483: } /* end if */
4484:
4485: if (axl_stream_get_size (stream) != 17) {
4486: axl_error_new (-1, "Found unexpected stream buffer size, while expecting 17", NULL, error);
4487: return axl_false;
4488: } /* end if */
4489:
4490: axl_stream_inspect (stream, "pro", 3);
4491:
4492: if (! (axl_stream_inspect (stream, "vider ", 6) > 0)) {
4493: axl_error_new (-1, "Expected to find an string value.. ('vider ') not found", NULL, error);
4494: return axl_false;
4495: } /* end if */
4496:
4497: axl_stream_free (stream);
4498:
4499: return axl_true;
4500: }
4501:
4502:
4503:
4504:
4505: axl_bool test_01b_show_node_found (axlNode * node,
4506: axlNode * parent,
4507: axlDoc * doc,
4508: axl_bool * was_removed,
4509: axlPointer ptr,
4510: axlPointer ptr2)
4511: {
4512: int * iterator = ptr;
4513:
4514: /* show node found */
4515: switch (*iterator) {
4516: case 0:
4517: /* <document> case */
4518: if (! NODE_CMP_NAME (node, "document")) {
4519:
4520: /* fill the error */
4521: axl_error_new (-1, "Expected to find a document node not found <document>", NULL, (axlError **) ptr2);
4522:
4523: /* stop iterating */
4524: return axl_false;
4525: }
4526:
4527: break;
4528: case 1:
4529: /* <child1> case */
4530: if (! NODE_CMP_NAME (node, "child1")) {
4531: /* fill the error */
4532: axl_error_new (-1, "Expected to find a document node not found <child1>", NULL, (axlError **) ptr2);
4533:
4534: /* stop iterating */
4535: return axl_false;
4536: }
4537:
4538: if (! NODE_CMP_NAME (parent, "document")) {
4539: /* fill the error */
4540: axl_error_new (-1, "Expected to find parent node <document> for child1", NULL, (axlError **) ptr2);
4541:
4542: /* stop iterating */
4543: return axl_false;
4544: }
4545:
4546: break;
4547: case 2:
4548: /* <child2> case */
4549: if (! NODE_CMP_NAME (node, "child2")) {
4550: /* fill the error */
4551: axl_error_new (-1, "Expected to find a document node not found <child2>", NULL, (axlError **) ptr2);
4552:
4553: /* stop iterating */
4554: return axl_false;
4555: }
4556:
4557: if (! NODE_CMP_NAME (parent, "document")) {
4558: /* fill the error */
4559: axl_error_new (-1, "Expected to find parent node <document> for child2", NULL, (axlError **) ptr2);
4560:
4561: /* stop iterating */
4562: return axl_false;
4563: }
4564:
4565: break;
4566: case 3:
4567: /* <child3> case */
4568: if (! NODE_CMP_NAME (node, "child3")) {
4569: /* fill the error */
4570: axl_error_new (-1, "Expected to find a document node not found <child3>", NULL, (axlError **) ptr2);
4571:
4572: /* stop iterating */
4573: return axl_false;
4574: }
4575:
4576: if (! NODE_CMP_NAME (parent, "document")) {
4577: /* fill the error */
4578: axl_error_new (-1, "Expected to find parent node <document> for child3", NULL, (axlError **) ptr2);
4579:
4580: /* stop iterating */
4581: return axl_false;
4582: }
4583:
4584: break;
4585: case 4:
4586: /* <a> case */
4587: if (! NODE_CMP_NAME (node, "a")) {
4588: /* fill the error */
4589: axl_error_new (-1, "Expected to find a document node not found <a>", NULL, (axlError **) ptr2);
4590:
4591: /* stop iterating */
4592: return axl_false;
4593: }
4594:
4595: if (! NODE_CMP_NAME (parent, "child3")) {
4596: /* fill the error */
4597: axl_error_new (-1, "Expected to find parent node <child3> for a", NULL, (axlError **) ptr2);
4598:
4599: /* stop iterating */
4600: return axl_false;
4601: }
4602:
4603: break;
4604: case 5:
4605: /* <b> case */
4606: if (! NODE_CMP_NAME (node, "b")) {
4607: /* fill the error */
4608: axl_error_new (-1, "Expected to find a document node not found <b>", NULL, (axlError **) ptr2);
4609:
4610: /* stop iterating */
4611: return axl_false;
4612: }
4613:
4614: if (! NODE_CMP_NAME (parent, "child3")) {
4615: /* fill the error */
4616: axl_error_new (-1, "Expected to find parent node <child3> for b", NULL, (axlError **) ptr2);
4617:
4618: /* stop iterating */
4619: return axl_false;
4620: }
4621:
4622: break;
4623: case 6:
4624: /* <c> case */
4625: if (! NODE_CMP_NAME (node, "c")) {
4626: /* fill the error */
4627: axl_error_new (-1, "Expected to find a document node not found <c>", NULL, (axlError **) ptr2);
4628:
4629: /* stop iterating */
4630: return axl_false;
4631: }
4632:
4633: if (! NODE_CMP_NAME (parent, "child3")) {
4634: /* fill the error */
4635: axl_error_new (-1, "Expected to find parent node <child3> for c", NULL, (axlError **) ptr2);
4636:
4637: /* stop iterating */
4638: return axl_false;
4639: }
4640:
4641: break;
4642: case 7:
4643: /* <d> case */
4644: if (! NODE_CMP_NAME (node, "d")) {
4645: /* fill the error */
4646: axl_error_new (-1, "Expected to find a document node not found <d>", NULL, (axlError **) ptr2);
4647:
4648: /* stop iterating */
4649: return axl_false;
4650: }
4651:
4652: if (! NODE_CMP_NAME (parent, "c")) {
4653: /* fill the error */
4654: axl_error_new (-1, "Expected to find parent node <c> for d", NULL, (axlError **) ptr2);
4655:
4656: /* stop iterating */
4657: return axl_false;
4658: }
4659:
4660: break;
4661: case 8:
4662: /* <e> case */
4663: if (! NODE_CMP_NAME (node, "e")) {
4664: /* fill the error */
4665: axl_error_new (-1, "Expected to find a document node not found <e>", NULL, (axlError **) ptr2);
4666:
4667: /* stop iterating */
4668: return axl_false;
4669: }
4670:
4671: if (! NODE_CMP_NAME (parent, "c")) {
4672: /* fill the error */
4673: axl_error_new (-1, "Expected to find parent node <c> for e", NULL, (axlError **) ptr2);
4674:
4675: /* stop iterating */
4676: return axl_false;
4677: }
4678:
4679: break;
4680: case 9:
4681: /* <e> case */
4682: if (! NODE_CMP_NAME (node, "f")) {
4683: /* fill the error */
4684: axl_error_new (-1, "Expected to find a document node not found <f>", NULL, (axlError **) ptr2);
4685:
4686: /* stop iterating */
4687: return axl_false;
4688: }
4689:
4690: if (! NODE_CMP_NAME (parent, "child3")) {
4691: /* fill the error */
4692: axl_error_new (-1, "Expected to find parent node <child3> for f", NULL, (axlError **) ptr2);
4693:
4694: /* stop iterating */
4695: return axl_false;
4696: }
4697:
4698: break;
4699: case 10:
4700: /* <g> case */
4701: if (! NODE_CMP_NAME (node, "g")) {
4702: /* fill the error */
4703: axl_error_new (-1, "Expected to find a document node not found <g>", NULL, (axlError **) ptr2);
4704:
4705: /* stop iterating */
4706: return axl_false;
4707: }
4708:
4709: if (! NODE_CMP_NAME (parent, "child3")) {
4710: /* fill the error */
4711: axl_error_new (-1, "Expected to find parent node <chile3> for g", NULL, (axlError **) ptr2);
4712:
4713: /* stop iterating */
4714: return axl_false;
4715: }
4716:
4717: break;
4718: case 11:
4719: /* <child4> case */
4720: if (! NODE_CMP_NAME (node, "child4")) {
4721: /* fill the error */
4722: axl_error_new (-1, "Expected to find a document node not found <child4>", NULL, (axlError **) ptr2);
4723:
4724: /* stop iterating */
4725: return axl_false;
4726: }
4727:
4728: if (! NODE_CMP_NAME (parent, "document")) {
4729: /* fill the error */
4730: axl_error_new (-1, "Expected to find parent node <document> for child4", NULL, (axlError **) ptr2);
4731:
4732: /* stop iterating */
4733: return axl_false;
4734: }
4735: break;
4736: case 12:
4737: /* <child5> case */
4738: if (! NODE_CMP_NAME (node, "child5")) {
4739: /* fill the error */
4740: axl_error_new (-1, "Expected to find a document node not found <child5>", NULL, (axlError **) ptr2);
4741:
4742: /* stop iterating */
4743: return axl_false;
4744: }
4745:
4746: if (! NODE_CMP_NAME (parent, "document")) {
4747: /* fill the error */
4748: axl_error_new (-1, "Expected to find parent node <document> for child4", NULL, (axlError **) ptr2);
4749:
4750: /* stop iterating */
4751: return axl_false;
4752: }
4753:
4754: break;
4755: }
4756:
4757: /* update count */
4758: (*iterator)++;
4759:
4760: /* keep iterating */
4761: return axl_true;
4762: }
4763:
4764:
4765: axl_bool test_01b_show_node_found2 (axlNode * node,
4766: axlNode * parent,
4767: axlDoc * doc,
4768: axl_bool * was_removed,
4769: axlPointer ptr, axlPointer ptr2)
4770: {
4771: int * iterator = ptr;
4772:
4773: /* show node found */
4774: switch (*iterator) {
4775: case 0:
4776: /* <document> case */
4777: if (! NODE_CMP_NAME (node, "document")) {
4778: /* fill the error */
4779: axl_error_new (-1, "Expected to find a document node not found <document>", NULL, (axlError **) ptr2);
4780:
4781: /* stop iterating */
4782: return axl_false;
4783: }
4784: break;
4785: case 1:
4786: /* <child1> case */
4787: if (! NODE_CMP_NAME (node, "child1")) {
4788: /* fill the error */
4789: axl_error_new (-1, "Expected to find a document node not found <child1>", NULL, (axlError **) ptr2);
4790:
4791: /* stop iterating */
4792: return axl_false;
4793: }
4794: break;
4795: case 2:
4796: /* <child2> case */
4797: if (! NODE_CMP_NAME (node, "child2")) {
4798: /* fill the error */
4799: axl_error_new (-1, "Expected to find a document node not found <child2>", NULL, (axlError **) ptr2);
4800:
4801: /* stop iterating */
4802: return axl_false;
4803: }
4804: break;
4805: case 3:
4806: /* <child3> case */
4807: if (! NODE_CMP_NAME (node, "child3")) {
4808: /* fill the error */
4809: axl_error_new (-1, "Expected to find a document node not found <child3>", NULL, (axlError **) ptr2);
4810:
4811: /* stop iterating */
4812: return axl_false;
4813: }
4814: break;
4815: case 4:
4816: /* <child4> case */
4817: if (! NODE_CMP_NAME (node, "child4")) {
4818: /* fill the error */
4819: axl_error_new (-1, "Expected to find a document node not found <child4>", NULL, (axlError **) ptr2);
4820:
4821: /* stop iterating */
4822: return axl_false;
4823: }
4824: break;
4825: case 5:
4826: /* <child5> case */
4827: if (! NODE_CMP_NAME (node, "child5")) {
4828: /* fill the error */
4829: axl_error_new (-1, "Expected to find a document node not found <child5>", NULL, (axlError **) ptr2);
4830:
4831: /* stop iterating */
4832: return axl_false;
4833: }
4834: break;
4835: case 6:
4836: /* <a> case */
4837: if (! NODE_CMP_NAME (node, "a")) {
4838: /* fill the error */
4839: axl_error_new (-1, "Expected to find a document node not found <a>", NULL, (axlError **) ptr2);
4840:
4841: /* stop iterating */
4842: return axl_false;
4843: }
4844: break;
4845: case 7:
4846: /* <b> case */
4847: if (! NODE_CMP_NAME (node, "b")) {
4848: /* fill the error */
4849: axl_error_new (-1, "Expected to find a document node not found <b>", NULL, (axlError **) ptr2);
4850:
4851: /* stop iterating */
4852: return axl_false;
4853: }
4854: break;
4855: case 8:
4856: /* <c> case */
4857: if (! NODE_CMP_NAME (node, "c")) {
4858: /* fill the error */
4859: axl_error_new (-1, "Expected to find a document node not found <c>", NULL, (axlError **) ptr2);
4860:
4861: /* stop iterating */
4862: return axl_false;
4863: }
4864: break;
4865: case 9:
4866: /* <f> case */
4867: if (! NODE_CMP_NAME (node, "f")) {
4868: /* fill the error */
4869: axl_error_new (-1, "Expected to find a document node not found <f>", NULL, (axlError **) ptr2);
4870:
4871: /* stop iterating */
4872: return axl_false;
4873: }
4874: break;
4875: case 10:
4876: /* <g> case */
4877: if (! NODE_CMP_NAME (node, "g")) {
4878: /* fill the error */
4879: axl_error_new (-1, "Expected to find a document node not found <g>", NULL, (axlError **) ptr2);
4880:
4881: /* stop iterating */
4882: return axl_false;
4883: }
4884: break;
4885: case 11:
4886: /* <d> case */
4887: if (! NODE_CMP_NAME (node, "d")) {
4888: /* fill the error */
4889: axl_error_new (-1, "Expected to find a document node not found <d>", NULL, (axlError **) ptr2);
4890:
4891: /* stop iterating */
4892: return axl_false;
4893: }
4894: break;
4895: case 12:
4896: /* <e> case */
4897: if (! NODE_CMP_NAME (node, "e")) {
4898: /* fill the error */
4899: axl_error_new (-1, "Expected to find a document node not found <e>", NULL, (axlError **) ptr2);
4900:
4901: /* stop iterating */
4902: return axl_false;
4903: }
4904: break;
4905: }
4906:
4907: /* update count */
4908: (*iterator)++;
4909:
4910: /* keep iterating */
4911: return axl_true;
4912: }
4913:
4914:
4915:
4916:
4917: /**
4918: * @brief Axl stream boundary checks.
4919: *
4920: *
4921: * @return axl_false if the function fails to parse the
4922: * document. axl_true if the test was properly executed.
4923: */
4924: axl_bool test_01b (axlError ** error)
4925: {
4926: axlDoc * doc;
4927: axlNode * node;
4928: int test_01b_id;
4929:
4930: /* parse document */
4931: doc = axl_doc_parse_from_file ("test_01b.xml", error);
4932: if (doc == NULL)
4933: return axl_false;
4934:
4935: /* get document root */
4936: node = axl_doc_get_root (doc);
4937: if (! NODE_CMP_NAME (node, "document")) {
4938: axl_error_new (-1, "Expected to find root <document>, but it wasn't found", NULL, error);
4939: return axl_false;
4940: }
4941:
4942: /* get first child node */
4943: node = axl_node_get_first_child (node);
4944: if (! NODE_CMP_NAME (node, "child1")) {
4945: axl_error_new (-1, "Expected to find child node <child1>, but it wasn't found", NULL, error);
4946: return axl_false;
4947: }
4948:
4949: /* get sibling node */
4950: node = axl_node_get_next (node);
4951: if (! NODE_CMP_NAME (node, "child2")) {
4952: axl_error_new (-1, "Expected to find child node <child2>, but it wasn't found", NULL, error);
4953: return axl_false;
4954: }
4955:
4956: /* now iterate over all nodes inside the document */
4957: test_01b_id = 0;
4958: if (! axl_doc_iterate_full (doc, DEEP_ITERATION, test_01b_show_node_found, &test_01b_id, error))
4959: return axl_false;
4960:
4961: /* now iterate over all nodes inside (wide mode) the document */
4962: test_01b_id = 0;
4963: if (! axl_doc_iterate_full (doc, WIDE_ITERATION, test_01b_show_node_found2, &test_01b_id, error))
4964: return axl_false;
4965:
4966: /* test ok */
4967: axl_doc_free (doc);
4968: return axl_true;
4969: }
4970:
4971: /**
4972: * @brief Axl stream boundary checks.
4973: *
4974: *
4975: * @return axl_false if the function fails to parse the
4976: * document. axl_true if the test was properly executed.
4977: */
4978: axl_bool test_01c (axlError ** error)
4979: {
4980: axlDoc * doc;
4981: axlNode * node;
4982: axlNode * parent;
4983:
4984: /* parse document (uses the same xml document as test_01b) */
4985: doc = axl_doc_parse_from_file ("test_01b.xml", error);
4986: if (doc == NULL)
4987: return axl_false;
4988:
4989: /* get document root */
4990: node = axl_doc_get_root (doc);
4991: if (! NODE_CMP_NAME (node, "document")) {
4992: axl_error_new (-1, "Expected to find root <document>, but it wasn't found", NULL, error);
4993: return axl_false;
4994: }
4995:
4996: /* get first child */
4997: node = axl_node_get_first_child (node);
4998:
4999: if (! NODE_CMP_NAME (node, "child1")) {
5000: axl_error_new (-1, "Expected to find <child1>, but it wasn't found", NULL, error);
5001: return axl_false;
5002: }
5003:
5004: /* check parent */
5005: parent = axl_node_get_parent (node);
5006: if (! NODE_CMP_NAME (parent, "document")) {
5007: axl_error_new (-1, "Expected to find parent <document>, but it wasn't found", NULL, error);
5008: return axl_false;
5009: }
5010:
5011: node = axl_node_get_next (node);
5012: if (! NODE_CMP_NAME (node, "child2")) {
5013: axl_error_new (-1, "Expected to find <child2>, but it wasn't found", NULL, error);
5014: return axl_false;
5015: }
5016:
5017: /* check parent */
5018: parent = axl_node_get_parent (node);
5019: if (! NODE_CMP_NAME (parent, "document")) {
5020: axl_error_new (-1, "Expected to find parent <document>, but it wasn't found", NULL, error);
5021: return axl_false;
5022: }
5023:
5024: node = axl_node_get_next (node);
5025: if (! NODE_CMP_NAME (node, "child3")) {
5026: axl_error_new (-1, "Expected to find <child3>, but it wasn't found", NULL, error);
5027: return axl_false;
5028: }
5029: /* check parent */
5030: parent = axl_node_get_parent (node);
5031: if (! NODE_CMP_NAME (parent, "document")) {
5032: axl_error_new (-1, "Expected to find parent <document>, but it wasn't found", NULL, error);
5033: return axl_false;
5034: }
5035:
5036: node = axl_node_get_next (node);
5037: if (! NODE_CMP_NAME (node, "child4")) {
5038: axl_error_new (-1, "Expected to find <child4>, but it wasn't found", NULL, error);
5039: return axl_false;
5040: }
5041: /* check parent */
5042: parent = axl_node_get_parent (node);
5043: if (! NODE_CMP_NAME (parent, "document")) {
5044: axl_error_new (-1, "Expected to find parent <document>, but it wasn't found", NULL, error);
5045: return axl_false;
5046: }
5047:
5048: node = axl_node_get_next (node);
5049: if (! NODE_CMP_NAME (node, "child5")) {
5050: axl_error_new (-1, "Expected to find <child5>, but it wasn't found", NULL, error);
5051: return axl_false;
5052: }
5053: /* check parent */
5054: parent = axl_node_get_parent (node);
5055: if (! NODE_CMP_NAME (parent, "document")) {
5056: axl_error_new (-1, "Expected to find parent <document>, but it wasn't found", NULL, error);
5057: return axl_false;
5058: }
5059:
5060: if (axl_node_get_next (node) != NULL) {
5061: axl_error_new (-1, "Expected to find NULL value while calling to axl_node_get_next, but it wasn't found", NULL, error);
5062: return axl_false;
5063: }
5064:
5065: node = axl_node_get_previous (node);
5066: if (! NODE_CMP_NAME (node, "child4")) {
5067: axl_error_new (-1, "Expected to find <child4>, but it wasn't found", NULL, error);
5068: return axl_false;
5069: }
5070: /* check parent */
5071: if (! NODE_CMP_NAME (parent, "document")) {
5072: axl_error_new (-1, "Expected to find parent <document>, but it wasn't found", NULL, error);
5073: return axl_false;
5074: }
5075:
5076: node = axl_node_get_previous (node);
5077: if (! NODE_CMP_NAME (node, "child3")) {
5078: axl_error_new (-1, "Expected to find <child3>, but it wasn't found", NULL, error);
5079: return axl_false;
5080: }
5081: /* check parent */
5082: if (! NODE_CMP_NAME (parent, "document")) {
5083: axl_error_new (-1, "Expected to find parent <document>, but it wasn't found", NULL, error);
5084: return axl_false;
5085: }
5086:
5087: node = axl_node_get_previous (node);
5088: if (! NODE_CMP_NAME (node, "child2")) {
5089: axl_error_new (-1, "Expected to find <child2>, but it wasn't found", NULL, error);
5090: return axl_false;
5091: }
5092: /* check parent */
5093: if (! NODE_CMP_NAME (parent, "document")) {
5094: axl_error_new (-1, "Expected to find parent <document>, but it wasn't found", NULL, error);
5095: return axl_false;
5096: }
5097:
5098: node = axl_node_get_previous (node);
5099: if (! NODE_CMP_NAME (node, "child1")) {
5100: axl_error_new (-1, "Expected to find <child1>, but it wasn't found", NULL, error);
5101: return axl_false;
5102: }
5103: /* check parent */
5104: parent = axl_node_get_parent (node);
5105: if (! NODE_CMP_NAME (parent, "document")) {
5106: axl_error_new (-1, "Expected to find parent <document>, but it wasn't found", NULL, error);
5107: return axl_false;
5108: }
5109:
5110: if (axl_node_get_previous (node) != NULL) {
5111: axl_error_new (-1, "Expected to find NULL value while calling to axl_node_get_next, but it wasn't found", NULL, error);
5112: return axl_false;
5113: }
5114:
5115: /* check next called and previous called api */
5116: node = axl_doc_get_root (doc);
5117: node = axl_node_get_first_child (node);
5118:
5119:
5120: /* get <child5> */
5121: node = axl_node_get_next_called (node, "child5");
5122: if (! NODE_CMP_NAME (node, "child5")) {
5123: axl_error_new (-1, "Expected to find <child5> node while calling to axl_node_get_next_called, but it wasn't found", NULL, error);
5124: return axl_false;
5125: }
5126:
5127: /* check next empty */
5128: if (axl_node_get_next_called (node, "child5") != NULL) {
5129: axl_error_new (-1, "Expected to find empty node following to <child5> node while calling to axl_node_get_next_called, but it was found", NULL, error);
5130: return axl_false;
5131: }
5132:
5133: /* get <child1> */
5134: node = axl_node_get_previous_called (node, "child1");
5135: if (! NODE_CMP_NAME (node, "child1")) {
5136: axl_error_new (-1, "Expected to find <child1> node while calling to axl_node_get_previous_called, but it wasn't found", NULL, error);
5137: return axl_false;
5138: }
5139:
5140: /* check next empty */
5141: if (axl_node_get_previous_called (node, "child1") != NULL) {
5142: axl_error_new (-1, "Expected to find empty node following to <child1> node while calling to axl_node_get_previous_called, but it was found", NULL, error);
5143: return axl_false;
5144: }
5145:
5146: /* free document */
5147: axl_doc_free (doc);
5148:
5149: return axl_true;
5150: }
5151:
5152: /**
5153: * @brief Axl node nth access.
5154: *
5155: * @return axl_false if the function fails to parse the
5156: * document. axl_true if the test was properly executed.
5157: */
5158: axl_bool test_01d (axlError ** error)
5159: {
5160: axlDoc * doc;
5161: axlNode * node;
5162: axlNode * child;
5163:
5164: /* parse document */
5165: doc = axl_doc_parse_from_file ("test_01d.xml", error);
5166: if (doc == NULL)
5167: return axl_false;
5168:
5169: /* get document root */
5170: node = axl_doc_get_root (doc);
5171:
5172: /* get the node at the 0 position */
5173: child = axl_node_get_child_nth (node, 0);
5174: if (! NODE_CMP_NAME (child, "child1")) {
5175: axl_error_new (-1, "Expected to find node <child1> at 0, but it wasn't found", NULL, error);
5176: return axl_false;
5177: }
5178:
5179: /* get the node at the 1 position */
5180: child = axl_node_get_child_nth (node, 1);
5181: if (! NODE_CMP_NAME (child, "child2")) {
5182: axl_error_new (-1, "Expected to find node <child2> at 1, but it wasn't found", NULL, error);
5183: return axl_false;
5184: }
5185:
5186: /* get the node at the 2 position */
5187: child = axl_node_get_child_nth (node, 2);
5188: if (! NODE_CMP_NAME (child, "child3")) {
5189: axl_error_new (-1, "Expected to find node <child3> at 2, but it wasn't found", NULL, error);
5190: return axl_false;
5191: }
5192:
5193: /* get the node at the 3 position */
5194: child = axl_node_get_child_nth (node, 3);
5195: if (! NODE_CMP_NAME (child, "child4")) {
5196: axl_error_new (-1, "Expected to find node <child4> at 3, but it wasn't found", NULL, error);
5197: return axl_false;
5198: }
5199:
5200: /* get the node at the 4 position */
5201: child = axl_node_get_child_nth (node, 4);
5202: if (! NODE_CMP_NAME (child, "child5")) {
5203: axl_error_new (-1, "Expected to find node <child5> at 4, but it wasn't found", NULL, error);
5204: return axl_false;
5205: }
5206:
5207: /* now with <child3> childs *> */
5208: node = axl_node_get_child_nth (node, 2);
5209:
5210: /* get the node at the 0 position */
5211: child = axl_node_get_child_nth (node, 0);
5212: if (! NODE_CMP_NAME (child, "a")) {
5213: axl_error_new (-1, "Expected to find node <a> at 0, but it wasn't found", NULL, error);
5214: return axl_false;
5215: }
5216:
5217: /* get the node at the 1 position */
5218: child = axl_node_get_child_nth (node, 1);
5219: if (! NODE_CMP_NAME (child, "b")) {
5220: axl_error_new (-1, "Expected to find node <b> at 1, but it wasn't found", NULL, error);
5221: return axl_false;
5222: }
5223:
5224: /* get the node at the 2 position */
5225: child = axl_node_get_child_nth (node, 2);
5226: if (! NODE_CMP_NAME (child, "c")) {
5227: axl_error_new (-1, "Expected to find node <c> at 2, but it wasn't found", NULL, error);
5228: return axl_false;
5229: }
5230:
5231: /* get the node at the 3 position */
5232: child = axl_node_get_child_nth (node, 3);
5233: if (! NODE_CMP_NAME (child, "f")) {
5234: axl_error_new (-1, "Expected to find node <f> at 3, but it wasn't found", NULL, error);
5235: return axl_false;
5236: }
5237:
5238: /* get the node at the 4 position */
5239: child = axl_node_get_child_nth (node, 4);
5240: if (! NODE_CMP_NAME (child, "g")) {
5241: axl_error_new (-1, "Expected to find node <g> at 4, but it wasn't found", NULL, error);
5242: return axl_false;
5243: }
5244:
5245: /* test ok */
5246: axl_doc_free (doc);
5247: return axl_true;
5248: }
5249:
5250: /**
5251: * @brief Check parsing document with huge node content.
5252: *
5253: * @return axl_false if the function fails to parse the
5254: * document. axl_true if the test was properly executed.
5255: */
5256: axl_bool test_01e (axlError ** error)
5257: {
5258: axlDoc * doc;
5259: axlNode * node;
5260: const char * content;
5261: int size;
5262:
5263: /* parse document */
5264: doc = axl_doc_parse_from_file ("test_01e.xml", error);
5265: if (doc == NULL)
5266: return axl_false;
5267:
5268: /* get root node */
5269: node = axl_doc_get_root (doc);
5270: content = axl_node_get_content (node, &size);
5271:
5272: /* free document */
5273: axl_doc_free (doc);
5274:
5275: return axl_true;
5276: }
5277:
5278: /**
5279: * @brief Check parsing document xml:space attribute.
5280: *
5281: * @return axl_false if the function fails to parse the document. axl_true if
5282: * the test was properly executed.
5283: */
5284: axl_bool test_01f (axlError ** error)
5285: {
5286: axlDoc * doc;
5287: axlNode * node;
5288: const char * content;
5289: int size;
5290:
5291: /* parse document */
5292: doc = axl_doc_parse_from_file ("test_01f.xml", error);
5293: if (doc == NULL)
5294: return axl_false;
5295:
5296: /* get root node */
5297: node = axl_doc_get_root (doc);
5298: content = axl_node_get_content (node, &size);
5299:
5300: if (! axl_cmp (content, " ")) {
5301: printf ("found content '%s' but expected '%s'...\n", content, " ");
5302: axl_error_new (-1, "Expected to find content not found", NULL, error);
5303: axl_free (doc);
5304: return axl_false;
5305: }
5306:
5307: /* free document */
5308: axl_doc_free (doc);
5309:
5310: /* parse document */
5311: doc = axl_doc_parse_from_file ("test_01f2.xml", error);
5312: if (doc == NULL)
5313: return axl_false;
5314:
5315: /* get node <content/id> */
5316: node = axl_doc_get_root (doc);
5317: node = axl_node_get_child_called (node, "id");
5318: content = axl_node_get_content (node, &size);
5319:
5320: if (! axl_cmp (content, " ")) {
5321: printf ("found content '%s' but expected '%s'...\n", content, " ");
5322: axl_error_new (-1, "Expected to find content not found", NULL, error);
5323: axl_free (doc);
5324: return axl_false;
5325: }
5326:
5327: /* get node <content/id2> */
5328: node = axl_doc_get_root (doc);
5329: node = axl_node_get_child_called (node, "id2");
5330: content = axl_node_get_content (node, &size);
5331:
5332: if (! axl_cmp (content, "")) {
5333: printf ("found content '%s' but expected '%s'...\n", content, "");
5334: axl_error_new (-1, "Expected to find content not found", NULL, error);
5335: axl_free (doc);
5336: return axl_false;
5337: }
5338:
5339: /* free document */
5340: axl_doc_free (doc);
5341:
5342: return axl_true;
5343: }
5344:
5345: /**
5346: * @brief Test current libaxl list implementation.
5347: *
5348: *
5349: * @return axl_true if it works properly or axl_false if not.
5350: */
5351: axl_bool test_01_01 ()
5352: {
5353: axlList * list;
5354: int value;
5355:
5356: axlPointer ptr1;
5357: axlPointer ptr2;
5358: axlPointer ptr3;
5359: axlPointer ptr4;
5360:
5361: /* create the list */
5362: list = axl_list_new (axl_list_equal_string, NULL);
5363: if (axl_list_length (list) != 0) {
5364: printf ("Bad length returned by the list (%d != 0)\n",
5365: axl_list_length (list));
5366: return axl_false;
5367: }
5368:
5369: if (! axl_list_is_empty (list)) {
5370: printf ("Expected to find empty list just after list created\n");
5371: return axl_false;
5372: } /* end if */
5373:
5374: /* add data */
5375: axl_list_add (list, "test 1");
5376: if (axl_list_length (list) != 1) {
5377: printf ("Bad length returned by the list (%d != 1)\n",
5378: axl_list_length (list));
5379: return axl_false;
5380: }
5381:
5382: if (axl_list_is_empty (list)) {
5383: printf ("Expected to find a non-empty list just after items added\n");
5384: return axl_false;
5385: } /* end if */
5386:
5387: axl_list_add (list, "test 2");
5388: if (axl_list_length (list) != 2) {
5389: printf ("Bad length returned by the list (%d != 2)\n",
5390: axl_list_length (list));
5391: return axl_false;
5392: }
5393:
5394: axl_list_add (list, "test 3");
5395: if (axl_list_length (list) != 3) {
5396: printf ("Bad length returned by the list (%d != 3)\n",
5397: axl_list_length (list));
5398: return axl_false;
5399: }
5400:
5401: /* remove data */
5402: axl_list_remove (list, "test 1");
5403: if (axl_list_length (list) != 2) {
5404: printf ("Bad length returned by the list, seems that remove doesn't work (%d != 2)\n",
5405: axl_list_length (list));
5406: return axl_false;
5407: }
5408:
5409: axl_list_remove (list, "test 2");
5410: if (axl_list_length (list) != 1) {
5411: printf ("Bad length returned by the list, seems that remove doesn't work\n");
5412: return axl_false;
5413: }
5414:
5415: axl_list_remove (list, "test 3");
5416: if (axl_list_length (list) != 0) {
5417: printf ("Bad length returned by the list, seems that remove doesn't work\n");
5418: return axl_false;
5419: }
5420:
5421: /* add data again */
5422: axl_list_add (list, "test 4");
5423: axl_list_add (list, "test 5");
5424: if (axl_list_length (list) != 2) {
5425: printf ("Bad length returned by the list, seems that remove doesn't work\n");
5426: return axl_false;
5427: }
5428:
5429: axl_list_remove (list, "test 1");
5430: if (axl_list_length (list) != 2) {
5431: printf ("Bad length returned by the list, seems that remove doesn't work\n");
5432: return axl_false;
5433: }
5434:
5435: if (! axl_list_exists (list, "test 5")) {
5436: printf ("Exist function have failed\n");
5437: return axl_false;
5438: }
5439:
5440: if (! axl_list_exists (list, "test 4")) {
5441: printf ("Exist function have failed\n");
5442: return axl_false;
5443: }
5444:
5445: if (axl_list_exists (list, "test 1")) {
5446: printf ("Exist function have failed\n");
5447: return axl_false;
5448: }
5449:
5450: if (! axl_list_exists_at (list, "test 4", 0)) {
5451: printf ("\"Exists at\" functionality seems to not work (0)\n");
5452: return axl_false;
5453: }
5454:
5455: if (! axl_list_exists_at (list, "test 5", 1)) {
5456: printf ("\"Exists at\" functionality seems to not work (1)\n");
5457: return axl_false;
5458: }
5459:
5460: axl_list_free (list);
5461:
5462: /* create a new list */
5463: list = axl_list_new (axl_list_equal_string, NULL);
5464:
5465: axl_list_add (list, "test 1");
5466: axl_list_add (list, "test 3");
5467: axl_list_add (list, "test 5");
5468:
5469: axl_list_add_at (list, "test 0", 0);
5470: axl_list_add_at (list, "test 2", 2);
5471: axl_list_add_at (list, "test 4", 4);
5472: axl_list_add_at (list, "test 6", 6);
5473:
5474: if (! axl_list_exists_at (list, "test 0", 0)) {
5475: printf ("\"Exists at\" functionality seems to not work (0)\n");
5476: return axl_false;
5477: }
5478:
5479: if (! axl_list_exists_at (list, "test 1", 1)) {
5480: printf ("\"Exists at\" functionality seems to not work (1)\n");
5481: return axl_false;
5482: }
5483:
5484: if (! axl_list_exists_at (list, "test 2", 2)) {
5485: printf ("\"Exists at\" functionality seems to not work (2)\n");
5486: return axl_false;
5487: }
5488:
5489: if (! axl_list_exists_at (list, "test 3", 3)) {
5490: printf ("\"Exists at\" functionality seems to not work (3)\n");
5491: return axl_false;
5492: }
5493:
5494: if (! axl_list_exists_at (list, "test 4", 4)) {
5495: printf ("\"Exists at\" functionality seems to not work (4)\n");
5496: return axl_false;
5497: }
5498:
5499: if (! axl_list_exists_at (list, "test 5", 5)) {
5500: printf ("\"Exists at\" functionality seems to not work (5)\n");
5501: return axl_false;
5502: }
5503:
5504: if (! axl_list_exists_at (list, "test 6", 6)) {
5505: printf ("\"Exists at\" functionality seems to not work (6)\n");
5506: return axl_false;
5507: }
5508:
5509: /* free the list */
5510: axl_list_free (list);
5511:
5512: /* create an integer list */
5513: list = axl_list_new (axl_list_equal_int, NULL);
5514: axl_list_add (list, INT_TO_PTR (1));
5515: axl_list_add (list, INT_TO_PTR (3));
5516: axl_list_add (list, INT_TO_PTR (3900));
5517: axl_list_add (list, INT_TO_PTR (20230));
5518:
5519: if (axl_list_length (list) != 4) {
5520: printf ("Expected to find 4 items inside an integer list");
5521: return axl_false;
5522: }
5523:
5524: /* remove one item */
5525: axl_list_remove (list, INT_TO_PTR (1));
5526:
5527: if (axl_list_length (list) != 3) {
5528: printf ("Expected to find 3 items inside an integer list");
5529: return axl_false;
5530: }
5531:
5532: /* remove one item */
5533: axl_list_remove (list, INT_TO_PTR (1));
5534:
5535: if (axl_list_length (list) != 3) {
5536: printf ("Expected to find 3 items inside an integer list");
5537: return axl_false;
5538: }
5539:
5540: /* remove one item */
5541: axl_list_remove (list, INT_TO_PTR (3));
5542:
5543: if (axl_list_length (list) != 2) {
5544: printf ("Expected to find 2 items inside an integer list");
5545: return axl_false;
5546: }
5547:
5548: /* remove one item */
5549: axl_list_remove (list, INT_TO_PTR (3900));
5550:
5551: if (axl_list_length (list) != 1) {
5552: printf ("Expected to find 1 items inside an integer list");
5553: return axl_false;
5554: }
5555:
5556: /* remove one item */
5557: axl_list_remove (list, INT_TO_PTR (20230));
5558:
5559: if (axl_list_length (list) != 0) {
5560: printf ("Expected to find 0 items inside an integer list");
5561: return axl_false;
5562: }
5563: axl_list_free (list);
5564:
5565: /* create an integer list */
5566: list = axl_list_new (axl_list_equal_int, NULL);
5567:
5568: /* add items */
5569: axl_list_add (list, INT_TO_PTR (8));
5570: axl_list_add (list, INT_TO_PTR (10));
5571: axl_list_add (list, INT_TO_PTR (11));
5572: axl_list_add (list, INT_TO_PTR (12));
5573: axl_list_add (list, INT_TO_PTR (102));
5574: axl_list_add (list, INT_TO_PTR (1123));
5575: axl_list_add (list, INT_TO_PTR (412));
5576: axl_list_add (list, INT_TO_PTR (122));
5577: axl_list_add (list, INT_TO_PTR (148));
5578: axl_list_add (list, INT_TO_PTR (670));
5579: axl_list_add (list, INT_TO_PTR (2));
5580:
5581: if (axl_list_length (list) != 11) {
5582: printf ("Expected to find 11 element, but found: %d\n", axl_list_length (list));
5583: return axl_false;
5584: }
5585:
5586: /* remove the third element */
5587: axl_list_remove (list, INT_TO_PTR (11));
5588:
5589: if (axl_list_length (list) != 10) {
5590: printf ("Expected to find 10 element, but found: %d\n", axl_list_length (list));
5591: return axl_false;
5592: }
5593:
5594: /* remove the third element */
5595: axl_list_remove (list, INT_TO_PTR (122));
5596:
5597: if (axl_list_length (list) != 9) {
5598: printf ("Expected to find 9 element, but found: %d\n", axl_list_length (list));
5599: return axl_false;
5600: }
5601:
5602: /* free the list */
5603: axl_list_free (list);
5604:
5605: list = axl_list_new (axl_list_equal_int, NULL);
5606:
5607: axl_list_append (list, INT_TO_PTR (9));
5608: axl_list_append (list, INT_TO_PTR (10));
5609: axl_list_append (list, INT_TO_PTR (8));
5610: axl_list_append (list, INT_TO_PTR (11));
5611:
5612: if (axl_list_length (list) != 4) {
5613: printf ("Expected to find 4 element, but found: %d\n", axl_list_length (list));
5614: return axl_false;
5615: }
5616:
5617: /* remove */
5618: axl_list_remove (list, INT_TO_PTR(8));
5619:
5620: if (axl_list_length (list) != 3) {
5621: printf ("Expected to find 3 element, but found: %d\n", axl_list_length (list));
5622: return axl_false;
5623: }
5624:
5625: /* free the list */
5626: axl_list_free (list);
5627:
5628: list = axl_list_new (axl_list_equal_int, NULL);
5629:
5630: axl_list_append (list, INT_TO_PTR (8));
5631: axl_list_append (list, INT_TO_PTR (10));
5632: axl_list_append (list, INT_TO_PTR (11));
5633: axl_list_append (list, INT_TO_PTR (9));
5634:
5635: if (axl_list_length (list) != 4) {
5636: printf ("Expected to find 4 element, but found: %d\n", axl_list_length (list));
5637: return axl_false;
5638: }
5639:
5640: axl_list_remove (list, INT_TO_PTR(10));
5641:
5642: if (axl_list_length (list) != 3) {
5643: printf ("Expected to find 3 element, but found: %d\n", axl_list_length (list));
5644: return axl_false;
5645: }
5646:
5647: /* free the list */
5648: axl_list_free (list);
5649:
5650: list = axl_list_new (axl_list_equal_int, NULL);
5651:
5652: axl_list_append (list, INT_TO_PTR (9));
5653: axl_list_append (list, INT_TO_PTR (8));
5654: axl_list_append (list, INT_TO_PTR (10));
5655: axl_list_append (list, INT_TO_PTR (11));
5656:
5657: if (axl_list_length (list) != 4) {
5658: printf ("Expected to find 4 element, but found: %d\n", axl_list_length (list));
5659: return axl_false;
5660: }
5661:
5662: /* remove */
5663: axl_list_remove (list, INT_TO_PTR(8));
5664:
5665: /* remove */
5666: axl_list_remove (list, INT_TO_PTR(10));
5667:
5668: if (axl_list_length (list) != 2) {
5669: printf ("Expected to find 2 element, but found: %d\n", axl_list_length (list));
5670: return axl_false;
5671: }
5672:
5673: /* free the list */
5674: axl_list_free (list);
5675:
5676:
5677: /* create a list and check remove first/get first */
5678: list = axl_list_new (axl_list_equal_int, NULL);
5679: axl_list_add (list, INT_TO_PTR(1));
5680: axl_list_add (list, INT_TO_PTR(2));
5681: axl_list_add (list, INT_TO_PTR(3));
5682: axl_list_add (list, INT_TO_PTR(4));
5683: axl_list_add (list, INT_TO_PTR(5));
5684: axl_list_add (list, INT_TO_PTR(6));
5685: axl_list_add (list, INT_TO_PTR(7));
5686: axl_list_add (list, INT_TO_PTR(8));
5687: axl_list_add (list, INT_TO_PTR(9));
5688: axl_list_add (list, INT_TO_PTR(10));
5689: while (axl_list_length (list) > 0) {
5690:
5691: /* get the integer value */
5692: value = PTR_TO_INT (axl_list_get_first (list));
5693:
5694: /* remove */
5695: axl_list_unlink_first (list);
5696: }
5697: if (axl_list_length (list) != 0) {
5698: printf ("Expected to find 0 length list..\n");
5699: return axl_false;
5700: }
5701:
5702: axl_list_free (list);
5703:
5704: /* create an empty list and destroy */
5705: list = axl_list_new (axl_list_equal_int, NULL);
5706:
5707: /* add one item */
5708: axl_list_add (list, INT_TO_PTR (1));
5709: if (axl_list_length (list) != 1) {
5710: printf ("Expected to find 1 length length..\n");
5711: return axl_false;
5712: }
5713:
5714: axl_list_add (list, INT_TO_PTR (2));
5715: if (axl_list_length (list) != 2) {
5716: printf ("Expected to find 2 length length..\n");
5717: return axl_false;
5718: }
5719:
5720: axl_list_unlink (list, INT_TO_PTR (1));
5721: if (axl_list_length (list) != 1) {
5722: printf ("Expected to find 1 length length..\n");
5723: return axl_false;
5724: }
5725:
5726: axl_list_unlink (list, INT_TO_PTR (2));
5727: if (axl_list_length (list) != 0) {
5728: printf ("Expected to find 0 length length..\n");
5729: return axl_false;
5730: }
5731:
5732: axl_list_free (list);
5733:
5734: /* remove by pointer */
5735: list = axl_list_new (axl_list_always_return_1, axl_free);
5736:
5737: /* add items */
5738: ptr1 = axl_new (char, 4);
5739: ptr2 = axl_new (char, 4);
5740: ptr3 = axl_new (char, 4);
5741: ptr4 = axl_new (char, 4);
5742:
5743: /* store items */
5744: axl_list_add (list, ptr1);
5745: axl_list_add (list, ptr2);
5746: axl_list_add (list, ptr3);
5747: axl_list_add (list, ptr4);
5748:
5749: /* check lengths */
5750: if (axl_list_length (list) != 4) {
5751: printf ("Expected to find a 4 item list...but found: %d..\n",
5752: axl_list_length (list));
5753: return axl_false;
5754: }
5755:
5756: /* remove items */
5757: axl_list_remove_ptr (list, ptr1);
5758:
5759: if (axl_list_length (list) != 3) {
5760: printf ("Expected to find a 3 item list...but found: %d..\n",
5761: axl_list_length (list));
5762: return axl_false;
5763: }
5764:
5765: /* remove items */
5766: axl_list_remove_ptr (list, ptr2);
5767: axl_list_remove_ptr (list, ptr3);
5768: axl_list_remove_ptr (list, ptr4);
5769:
5770: if (axl_list_length (list) != 0) {
5771: printf ("Expected to find a 0 item list...but found: %d..\n",
5772: axl_list_length (list));
5773: return axl_false;
5774: }
5775:
5776: axl_list_free (list);
5777:
5778: /* add and remove item 0 */
5779: list = axl_list_new (axl_list_equal_int, NULL);
5780: axl_list_append (list, INT_TO_PTR (0));
5781: axl_list_append (list, INT_TO_PTR (0));
5782: axl_list_append (list, INT_TO_PTR (0));
5783: axl_list_append (list, INT_TO_PTR (0));
5784:
5785: if (axl_list_length (list) != 4) {
5786: printf ("Expected to find 4 items stored in the list.., but found: %d..\n",
5787: axl_list_length (list));
5788: return axl_false;
5789: } /* end if */
5790:
5791: axl_list_remove (list, INT_TO_PTR (0));
5792:
5793: if (axl_list_length (list) != 3) {
5794: printf ("Expected to find 3 items stored in the list.., but found: %d..\n",
5795: axl_list_length (list));
5796: return axl_false;
5797: } /* end if */
5798:
5799: axl_list_remove_ptr (list, INT_TO_PTR (0));
5800:
5801: if (axl_list_length (list) != 2) {
5802: printf ("Expected to find 2 items stored in the list.., but found: %d..\n",
5803: axl_list_length (list));
5804: return axl_false;
5805: } /* end if */
5806:
5807: axl_list_remove_first (list);
5808:
5809: if (axl_list_length (list) != 1) {
5810: printf ("Expected to find 1 items stored in the list.., but found: %d..\n",
5811: axl_list_length (list));
5812: return axl_false;
5813: } /* end if */
5814:
5815: axl_list_remove_last (list);
5816:
5817: if (axl_list_length (list) != 0) {
5818: printf ("Expected to find 0 items stored in the list.., but found: %d..\n",
5819: axl_list_length (list));
5820: return axl_false;
5821: } /* end if */
5822:
5823: axl_list_free (list);
5824:
5825: /* add and remove item 0 */
5826: list = axl_list_new (axl_list_always_return_1, NULL);
5827: axl_list_append (list, INT_TO_PTR (0));
5828: axl_list_append (list, INT_TO_PTR (0));
5829: axl_list_append (list, INT_TO_PTR (0));
5830: axl_list_append (list, INT_TO_PTR (0));
5831:
5832: if (axl_list_length (list) != 4) {
5833: printf ("Expected to find 4 items stored in the list.., but found: %d..\n",
5834: axl_list_length (list));
5835: return axl_false;
5836: } /* end if */
5837:
5838: axl_list_remove_ptr (list, INT_TO_PTR (0));
5839:
5840: if (axl_list_length (list) != 3) {
5841: printf ("Expected to find 3 items stored in the list.., but found: %d..\n",
5842: axl_list_length (list));
5843: return axl_false;
5844: } /* end if */
5845:
5846: axl_list_remove_first (list);
5847:
5848: if (axl_list_length (list) != 2) {
5849: printf ("Expected to find 2 items stored in the list.., but found: %d..\n",
5850: axl_list_length (list));
5851: return axl_false;
5852: } /* end if */
5853:
5854: axl_list_remove_last (list);
5855:
5856: if (axl_list_length (list) != 1) {
5857: printf ("Expected to find 1 items stored in the list.., but found: %d..\n",
5858: axl_list_length (list));
5859: return axl_false;
5860: } /* end if */
5861:
5862: axl_list_free (list);
5863:
5864: list = axl_list_new (axl_list_always_return_1, NULL);
5865: axl_list_append (list, INT_TO_PTR (0));
5866:
5867: if (axl_list_length (list) != 1) {
5868: printf ("Expected to find 1 items stored in the list.., but found: %d..\n",
5869: axl_list_length (list));
5870: return axl_false;
5871: } /* end if */
5872:
5873: axl_list_prepend (list, INT_TO_PTR (0));
5874:
5875: if (axl_list_length (list) != 2) {
5876: printf ("Expected to find 2 items stored in the list.., but found: %d..\n",
5877: axl_list_length (list));
5878: return axl_false;
5879: } /* end if */
5880:
5881: axl_list_free (list);
5882:
5883: return axl_true;
5884: }
5885:
5886: axl_bool test_01_02_foreach (axlPointer stack_data,
5887: axlPointer user_data,
5888: axlPointer user_data2)
5889: {
5890: int * iterator = user_data;
5891:
5892: if ((*iterator == 0) && axl_cmp ((char*) stack_data, "test 3")) {
5893: (*iterator)++;
5894: return axl_false;
5895: } else if ((*iterator == 1) && axl_cmp ((char*) stack_data, "test 2")) {
5896: (*iterator)++;
5897: return axl_false;
5898: } else if ((*iterator == 2) && axl_cmp ((char*) stack_data, "test 1")) {
5899: (*iterator)++;
5900: return axl_false;
5901: }
5902:
5903: /* return axl_true to stop operations */
5904: return axl_true;
5905: }
5906:
5907: /**
5908: * @brief Checks current configuration for the stack implementation
5909: * based on the axlList.
5910: *
5911: *
5912: * @return axl_true if the stack works properly, otherwise axl_false
5913: * is returned.
5914: */
5915: axl_bool test_01_02 ()
5916: {
5917: axlStack * stack;
5918: char * value;
5919: int iterator = 0;
5920:
5921: /* create the stack */
5922: stack = axl_stack_new (NULL);
5923:
5924: axl_stack_push (stack, "test 1");
5925: axl_stack_push (stack, "test 2");
5926: axl_stack_push (stack, "test 3");
5927:
5928: /* check foreach function */
5929: axl_stack_foreach (stack, test_01_02_foreach, &iterator, NULL);
5930:
5931: if (iterator != 3) {
5932: printf ("Wrong value expected while using the foreach function\n");
5933: return axl_false;
5934: }
5935:
5936: if (axl_stack_size (stack) != 3) {
5937: printf ("Wrong stack size expected ..\n");
5938: return axl_false;
5939: }
5940:
5941: value = axl_stack_pop (stack);
5942: if (! axl_stream_cmp (value, "test 3", 6)) {
5943: printf ("Wrong pop value returned (%s != %s)..\n", value, "test 3");
5944: return axl_false;
5945: }
5946:
5947: value = axl_stack_pop (stack);
5948: if (! axl_stream_cmp (value, "test 2", 6)) {
5949: printf ("Wrong pop value returned (%s != %s)..\n", value, "test 2");
5950: return axl_false;
5951: }
5952:
5953: value = axl_stack_pop (stack);
5954: if (! axl_stream_cmp (value, "test 1", 6)) {
5955: printf ("Wrong pop value returned (%s != %s)..\n", value, "test 1");
5956: return axl_false;
5957: }
5958:
5959: if (axl_stack_size (stack) != 0) {
5960: printf ("Wrong stack size before operating..\n");
5961: return axl_false;
5962: }
5963:
5964: if (! axl_stack_is_empty (stack)) {
5965: printf ("Wrong stack emptyness value received..\n");
5966: return axl_false;
5967: }
5968:
5969: /* destroy the stack */
5970: axl_stack_free (stack);
5971:
5972: return axl_true;
5973: }
5974:
5975: axl_bool test_01_03_vargs (const char * format, ...)
5976: {
5977: va_list args;
5978:
5979: va_start (args, format);
5980:
5981: /* get the result */
5982: if (axl_stream_vprintf_len (format, args) != 8)
5983: return axl_false;
5984:
5985: va_end (args);
5986: va_start (args, format);
5987:
5988: if (axl_stream_vprintf_len (format, args) != 8)
5989: return axl_false;
5990:
5991: va_end (args);
5992: va_start (args, format);
5993:
5994: if (axl_stream_vprintf_len (format, args) != 8)
5995: return axl_false;
5996:
5997: va_end (args);
5998:
5999: return axl_true;
6000: }
6001:
6002: /**
6003: *
6004: * @brief Checks some internal functions that the library provides to
6005: * manage strings.
6006: *
6007: * @return The function must return axl_true if everything is
6008: * ok. Otherwise axl_false is returned.
6009: */
6010: axl_bool test_01_03 ()
6011: {
6012: char * string;
6013: char ** result;
6014: char * join;
6015: int res;
6016: int real_size;
6017: int trimmed;
6018:
6019: /* check that axl_stream_split works */
6020: result = axl_stream_split ("value/value1/value3/value4", 1, "/");
6021: if (result == NULL) {
6022: printf ("Something have failed while using splitting functions\n");
6023: return axl_false;
6024: }
6025:
6026: if (axl_stream_strv_num (result) != 4) {
6027: printf ("Something have failed while getting current number of pieces inside the split result (%d != %d)\n",
6028: axl_stream_strv_num (result),4);
6029: return axl_false;
6030: }
6031:
6032: if (! axl_cmp (result[0], "value")) {
6033: printf ("Failed to get the first element: (%s != %s)\n", result[0], "value");
6034: return axl_false;
6035: }
6036:
6037: if (! axl_cmp (result[1], "value1")) {
6038: printf ("Failed to get the second element: (%s != %s)\n", result[1], "value1");
6039: return axl_false;
6040: }
6041:
6042: if (! axl_cmp (result[2], "value3")) {
6043: printf ("Failed to get the third element (%s != %s)\n", result[2], "value3");
6044: return axl_false;
6045: }
6046:
6047: if (! axl_cmp (result[3], "value4")) {
6048: printf ("Failed to get the fourth element (%s != %s)\n", result[3], "value4");
6049: return axl_false;
6050: }
6051:
6052: /* release memory used */
6053: axl_stream_freev (result);
6054:
6055: result = axl_stream_split ("value1, value2/ value3* ", 3, ", ", "/ ", "* ");
6056: if (result == NULL) {
6057: printf ("Something have failed while using splitting functions (2)\n");
6058: return axl_false;
6059: }
6060:
6061: if (axl_stream_strv_num (result) != 4) {
6062: printf ("Something have failed while getting current number of pieces inside the split result (%d != %d) (2)\n",
6063: axl_stream_strv_num (result), 4);
6064: return axl_false;
6065: }
6066:
6067: if (! axl_cmp (result[0], "value1")) {
6068: printf ("Failed to get the second element: (%s != %s)\n", result[0], "value1");
6069: return axl_false;
6070: }
6071:
6072: if (! axl_cmp (result[1], "value2")) {
6073: printf ("Failed to get the third element (%s != %s)\n", result[1], "value2");
6074: return axl_false;
6075: }
6076:
6077: if (! axl_cmp (result[2], "value3")) {
6078: printf ("Failed to get the fourth element (%s != %s)\n", result[2], "value3");
6079: return axl_false;
6080: }
6081:
6082: if (! axl_cmp (result[3], "")) {
6083: printf ("Failed to get the fourth element ('%s' != '%s')\n", result[3], "");
6084: return axl_false;
6085: }
6086:
6087:
6088:
6089: /* release memory used */
6090: axl_stream_freev (result);
6091:
6092: /* check empty cases */
6093: result = axl_stream_split ("///", 1, "/");
6094: if (result == NULL) {
6095: printf ("Something have failed while using splitting functions (3)\n");
6096: return axl_false;
6097: }
6098:
6099: if (axl_stream_strv_num (result) != 4) {
6100: printf ("Something have failed while getting current number of pieces inside the split result (%d != %d) (3)\n",
6101: axl_stream_strv_num (result), 4);
6102: return axl_false;
6103: }
6104:
6105: /* release memory used */
6106: axl_stream_freev (result);
6107:
6108:
6109: /* now check the join string support */
6110: result = axl_stream_split ("some test AND some test AND some test", 1, "AND");
6111:
6112: /* now join the data */
6113: join = axl_stream_join (result, "AND");
6114:
6115: if (! axl_cmp (join, "some test AND some test AND some test")) {
6116: printf ("Join operation failed, expected different values '%s' != '%s'",
6117: join, "some test AND some test AND some test");
6118: return axl_false;
6119: }
6120: axl_free (join);
6121: axl_stream_freev (result);
6122:
6123: /* now check the join string support */
6124: result = axl_stream_split ("some test", 1, "AND");
6125:
6126: /* now join the data */
6127: join = axl_stream_join (result, "AND");
6128:
6129: if (! axl_cmp (join, "some test")) {
6130: printf ("Join operation failed, expected different values '%s' != '%s'",
6131: join, "some test");
6132: return axl_false;
6133: }
6134: axl_free (join);
6135: axl_stream_freev (result);
6136:
6137: /* now check the join string support */
6138: result = axl_stream_split ("some test AND some test AND some test AND", 1, "AND");
6139:
6140: /* now join the data */
6141: join = axl_stream_join (result, "AND");
6142:
6143: if (! axl_cmp (join, "some test AND some test AND some test AND")) {
6144: printf ("Join operation failed, expected different values '%s' != '%s'",
6145: join, "some test AND some test AND some test AND");
6146: return axl_false;
6147: }
6148: axl_free (join);
6149: axl_stream_freev (result);
6150:
6151: string = axl_strdup ("AxBcA");
6152: if (! axl_cmp (axl_stream_to_upper (string), "AXBCA")) {
6153: /* report error found */
6154: printf ("failed to upper case letters\n");
6155: return axl_false;
6156: }
6157: axl_free (string);
6158:
6159: string = axl_strdup ("AxBcA");
6160: if (! axl_cmp (axl_stream_to_lower (string), "axbca")) {
6161: /* report error found */
6162: printf ("failed to lower case letters, result found: %s != %s\n", string, "axbca");
6163: return axl_false;
6164: }
6165: axl_free (string);
6166:
6167:
6168: string = axl_strdup ("\t \n \r value \n \r \t \t ");
6169: axl_stream_trim (string);
6170:
6171: if (! axl_cmp (string, "value")) {
6172: printf ("failed to trim the string received, expected '%s' == '%s'\n",
6173: string, "value");
6174: return axl_false;
6175: }
6176:
6177: /* release memory */
6178: axl_free (string);
6179:
6180: string = axl_strdup (" value ");
6181: axl_stream_trim_with_size (string, &trimmed);
6182: if (trimmed != 7) {
6183: printf ("failed, expected to find a trimmed size of 7 but found %d (%s)\n",
6184: trimmed, string);
6185: return axl_false;
6186: }
6187:
6188: /* check axl_stream_vprintf_len implementation */
6189: if (axl_stream_printf_len (NULL, NULL) != 0) {
6190: printf ("failed, expected to find an string value of 0, but it wasn't found\n");
6191: return axl_false;
6192: } /* end if */
6193:
6194: if (axl_stream_printf_len (" this is a test", NULL) != 16) {
6195: printf ("failed, expected to find an string value of 16, but it wasn't found\n");
6196: return axl_false;
6197: }
6198:
6199: if (axl_stream_printf_len (" this %% is a %% test", NULL) != 20) {
6200: printf ("failed, expected to find an string value of 20, but it wasn't found\n");
6201: return axl_false;
6202: }
6203:
6204: if (axl_stream_printf_len ("", NULL) != 1) {
6205: printf ("failed, expected to find an string value of 1, but it wasn't found\n");
6206: return axl_false;
6207: }
6208:
6209: if (axl_stream_printf_len ("%%", NULL) != 2) {
6210: printf ("failed, expected to find an string value of 2, but it wasn't found\n");
6211: return axl_false;
6212: }
6213:
6214: if (axl_stream_printf_len ("\"", NULL) != 2) {
6215: printf ("failed, expected to find an string value of 2, but it wasn't found\n");
6216: return axl_false;
6217: }
6218:
6219: if (axl_stream_printf_len ("\"", NULL) != 2) {
6220: printf ("failed, expected to find an string value of 2, but it wasn't found\n");
6221: return axl_false;
6222: }
6223:
6224: if (axl_stream_printf_len (" this is a test \r \t \n asdf", NULL) != 28) {
6225: printf ("failed, expected to find an string value of 28, but it wasn't found\n");
6226: return axl_false;
6227: } /* end if */
6228:
6229: res = axl_stream_printf_len ("%s", "This is a test");
6230: if ( res != 15) {
6231: printf ("failed, expected to find an string value of 15, but it was found (%d)\n", res);
6232: return axl_false;
6233: }
6234:
6235: res = axl_stream_printf_len (" adfasdf %s asdfasdf", "This is a test");
6236: if ( res != 33) {
6237: printf ("failed, expected to find an string value of 33, but it was found (%d)\n", res);
6238: return axl_false;
6239: }
6240:
6241: res = axl_stream_printf_len (" adfasdf %s asdfasdf %s", "This is a test", "fk2");
6242: if ( res != 37) {
6243: printf ("failed, expected to find an string value of 37, but it was found (%d)\n", res);
6244: return axl_false;
6245: }
6246:
6247: res = axl_stream_printf_len ("%% adfasdf %s asdfasdf %s", "This is a test", "fk2");
6248: if ( res != 38) {
6249: printf ("failed, expected to find an string value of 38, but it was found (%d)\n", res);
6250: return axl_false;
6251: }
6252:
6253: res = axl_stream_printf_len ("%d", 1);
6254: if ( res != 2) {
6255: printf ("failed, expected to find an string value of 2, but it was found (%d)\n", res);
6256: return axl_false;
6257: }
6258:
6259: res = axl_stream_printf_len ("%d", 10);
6260: if ( res != 3) {
6261: printf ("failed, expected to find an string value of 3, but it was found (%d)\n", res);
6262: return axl_false;
6263: }
6264:
6265: res = axl_stream_printf_len ("%d", -1);
6266: if ( res != 3) {
6267: printf ("failed, expected to find an string value of 3, but it was found (%d)\n", res);
6268: return axl_false;
6269: }
6270:
6271: res = axl_stream_printf_len ("%d", -10);
6272: if ( res != 4) {
6273: printf ("failed, expected to find an string value of 4, but it was found (%d)\n", res);
6274: return axl_false;
6275: }
6276:
6277: res = axl_stream_printf_len ("%d", -100);
6278: if ( res != 5) {
6279: printf ("failed, expected to find an string value of 5, but it was found (%d)\n", res);
6280: return axl_false;
6281: }
6282:
6283: res = axl_stream_printf_len ("%d", -10012);
6284: if ( res != 7) {
6285: printf ("failed, expected to find an string value of 7, but it was found (%d)\n", res);
6286: return axl_false;
6287: }
6288:
6289: res = axl_stream_printf_len ("This is a number %d", -10012);
6290: if ( res != 24) {
6291: printf ("failed, expected to find an string value of 24, but it was found (%d)\n", res);
6292: return axl_false;
6293: }
6294:
6295: res = axl_stream_printf_len ("This is a number %d with content ", -10012);
6296: if ( res != 38) {
6297: printf ("failed, expected to find an string value of 38, but it was found (%d)\n", res);
6298: return axl_false;
6299: }
6300:
6301: res = axl_stream_printf_len ("This is a number %d with content %s", -10012, "This more content");
6302: if ( res != 55) {
6303: printf ("failed, expected to find an string value of 55, but it was found (%d)\n", res);
6304: return axl_false;
6305: }
6306:
6307: res = axl_stream_printf_len ("%c", 1);
6308: if ( res != 2) {
6309: printf ("failed, expected to find an string value of 2, but it was found (%d)\n", res);
6310: return axl_false;
6311: }
6312:
6313: res = axl_stream_printf_len (" %c ", 1);
6314: if ( res != 4) {
6315: printf ("failed, expected to find an string value of 4, but it was found (%d)\n", res);
6316: return axl_false;
6317: }
6318:
6319: res = axl_stream_printf_len ("\x0D");
6320: if ( res != 2) {
6321: printf ("failed, expected to find an string value of 2, but it was found (%d)\n", res);
6322: return axl_false;
6323: }
6324:
6325: res = axl_stream_printf_len ("\x0D\x0A");
6326: if ( res != 3) {
6327: printf ("failed, expected to find an string value of 3, but it was found (%d)\n", res);
6328: return axl_false;
6329: }
6330:
6331: res = axl_stream_printf_len ("%ld", 182);
6332: if ( res != 4) {
6333: printf ("failed, expected to find an string value of 4, but it was found (%d)\n", res);
6334: return axl_false;
6335: }
6336:
6337: res = axl_stream_printf_len ("%lu", (unsigned long int) 182);
6338: if ( res != 4) {
6339: printf ("failed, expected to find an string value of 4, but it was found (%d)\n", res);
6340: return axl_false;
6341: }
6342:
6343: res = axl_stream_printf_len ("%6d", 182);
6344: if ( res != 7) {
6345: printf ("failed (%%6d), expected to find an string value of 7, but it was found (%d)\n", res);
6346: return axl_false;
6347: }
6348:
6349: res = axl_stream_printf_len ("%f", 182.0);
6350: if ( res != 11) {
6351: printf ("failed (%%f,182), expected to find an string value of 11, but it was found (%d)\n", res);
6352: return axl_false;
6353: }
6354:
6355: res = axl_stream_printf_len ("%.2f", 18228.0);
6356: if ( res != 9) {
6357: printf ("failed (%%.2f), expected to find an string value of 7, but it was found (%d)\n", res);
6358: return axl_false;
6359: }
6360:
6361: res = axl_stream_printf_len ("%8.2f", 182);
6362: if ( res != 9) {
6363: printf ("failed (%%8.2f), expected to find an string value of 12, but it was found (%d)\n", res);
6364: return axl_false;
6365: }
6366:
6367: res = axl_stream_printf_len ("%.5f", 182.10);
6368: if ( res != 10) {
6369: printf ("failed (%%.5f), expected to find an string value of 10, but it was found (%d)\n", res);
6370: return axl_false;
6371: }
6372:
6373: res = axl_stream_printf_len ("%g", (double) 182.23);
6374: if ( res != 7) {
6375: printf ("failed (%%g,182.23), expected to find an string value of 7, but it was found (%d)\n", res);
6376: return axl_false;
6377: }
6378:
6379: res = axl_stream_printf_len ("%g", 182.39);
6380: if ( res != 7) {
6381: printf ("failed (%%g,182.39), expected to find an string value of 7, but it was found (%d)\n", res);
6382: return axl_false;
6383: }
6384:
6385: res = axl_stream_printf_len ("%g", 182.1);
6386: if ( res != 6) {
6387: printf ("failed (%%g,182.1), expected to find an string value of 6, but it was found (%d)\n", res);
6388: return axl_false;
6389: }
6390:
6391: res = axl_stream_printf_len ("%g", 182.102);
6392: if ( res != 8) {
6393: printf ("failed (%%g,182.1), expected to find an string value of 6, but it was found (%d)\n", res);
6394: return axl_false;
6395: }
6396:
6397: if (! test_01_03_vargs ("%g", 182.102)) {
6398: printf ("failed to reuse vargs..\n");
6399: return axl_false;
6400: }
6401:
6402:
6403: /* release the memory */
6404: axl_free (string);
6405:
6406: /* case cmp comparisions */
6407: if (! axl_stream_casecmp ("Content-Type: ", "Content-Type: ", 14)) {
6408: printf ("Expected to find equal comparision for case insensitive check..\n");
6409: return axl_false;
6410: }
6411:
6412: if (! axl_stream_casecmp ("CONTENT-Type: ", "Content-Type: ", 14)) {
6413: printf ("Expected to find equal comparision for case insensitive check..\n");
6414: return axl_false;
6415: }
6416:
6417: if (! axl_stream_casecmp ("CONTENT-Type: ", "Content-TYPE: ", 14)) {
6418: printf ("Expected to find equal comparision for case insensitive check..\n");
6419: return axl_false;
6420: }
6421:
6422: if (! axl_stream_casecmp ("CoNtENT-type: ", "Content-TYPE: ", 14)) {
6423: printf ("Expected to find equal comparision for case insensitive check..\n");
6424: return axl_false;
6425: }
6426:
6427: /* check axl_casecmp */
6428: if (! axl_casecmp ("Content-Type: ", "Content-Type: ")) {
6429: printf ("Expected to find equal comparision for case insensitive check..\n");
6430: return axl_false;
6431: }
6432:
6433: if (! axl_casecmp ("CONTENT-Type: ", "Content-Type: ")) {
6434: printf ("Expected to find equal comparision for case insensitive check..\n");
6435: return axl_false;
6436: }
6437:
6438: if (! axl_casecmp ("CONTENT-Type: ", "Content-TYPE: ")) {
6439: printf ("Expected to find equal comparision for case insensitive check..\n");
6440: return axl_false;
6441: }
6442:
6443: if (! axl_casecmp ("CoNtENT-type: ", "Content-TYPE: ")) {
6444: printf ("Expected to find equal comparision for case insensitive check..\n");
6445: return axl_false;
6446: }
6447:
6448: /* check with additional content not scanned */
6449: if (! axl_stream_casecmp ("Content-Type: ", "Content-Type: asdf", 14)) {
6450: printf ("Expected to find equal comparision for case insensitive check..\n");
6451: return axl_false;
6452: }
6453:
6454: if (! axl_stream_casecmp ("CONTENT-Type: ", "Content-Type: asdf", 14)) {
6455: printf ("Expected to find equal comparision for case insensitive check..\n");
6456: return axl_false;
6457: }
6458:
6459: if (! axl_stream_casecmp ("CONTENT-Type: ", "Content-TYPE: qwer12343", 14)) {
6460: printf ("Expected to find equal comparision for case insensitive check..\n");
6461: return axl_false;
6462: }
6463:
6464: if (! axl_stream_casecmp ("CoNtENT-type: ", "Content-TYPE: 23141234", 14)) {
6465: printf ("Expected to find equal comparision for case insensitive check..\n");
6466: return axl_false;
6467: }
6468:
6469: /* check axl_casecmp */
6470: if (axl_casecmp ("Content-Type: ", "Content-Type: 12321")) {
6471: printf ("Expected to not find equal comparision for case insensitive check..\n");
6472: return axl_false;
6473: }
6474:
6475: if (axl_casecmp ("CONTENT-Type: ", "Content-Type: awdf21")) {
6476: printf ("Expected to not find equal comparision for case insensitive check..\n");
6477: return axl_false;
6478: }
6479:
6480: if (axl_casecmp ("CONTENT-Type: ", "Content-TYPE: adsfasdf")) {
6481: printf ("Expected to not find equal comparision for case insensitive check..\n");
6482: return axl_false;
6483: }
6484:
6485: if (axl_casecmp ("CoNtENT-type: ", "Content-TYPE: asdf21")) {
6486: printf ("Expected to not find equal comparision for case insensitive check..\n");
6487: return axl_false;
6488: }
6489:
6490: /* check remove function */
6491: string = axl_strdup ("iso-8859-15");
6492: axl_stream_remove (string, "-", axl_false);
6493: if (! axl_cmp (string, "iso885915")) {
6494: printf ("Expected %s value but found %s...\n",
6495: string, "iso885915");
6496: return axl_false;
6497: } /* end if */
6498: axl_free (string);
6499:
6500: string = axl_strdup ("iso885915");
6501: axl_stream_remove (string, "-", axl_false);
6502: if (! axl_cmp (string, "iso885915")) {
6503: printf ("Expected %s value but found %s...\n",
6504: string, "iso885915");
6505: return axl_false;
6506: } /* end if */
6507: axl_free (string);
6508:
6509: string = axl_strdup ("--iso885915---");
6510: axl_stream_remove (string, "-", axl_false);
6511: if (! axl_cmp (string, "iso885915")) {
6512: printf ("Expected %s value but found %s...\n",
6513: "iso885915", string);
6514: return axl_false;
6515: } /* end if */
6516: axl_free (string);
6517:
6518: string = axl_strdup_printf ("-----");
6519: axl_stream_remove (string, "-", axl_false);
6520: if (! axl_cmp (string, "")) {
6521: printf ("Expected %s value but found %s...\n",
6522: "", string);
6523: return axl_false;
6524: } /* end if */
6525: axl_free (string);
6526:
6527: string = axl_strdup_printf ("iso-8859---------15");
6528: axl_stream_remove (string, "-", axl_false);
6529: if (! axl_cmp (string, "iso885915")) {
6530: printf ("Expected %s value but found %s...\n",
6531: "iso885915", string);
6532: return axl_false;
6533: } /* end if */
6534: axl_free (string);
6535:
6536: string = axl_strdup_printf ("iso-8859---------15");
6537: axl_stream_remove (string, "-", axl_true);
6538: if (! axl_cmp (string, "iso8859---------15")) {
6539: printf ("Expected %s value but found %s...\n",
6540: "iso8859---------15", string);
6541: return axl_false;
6542: } /* end if */
6543: axl_free (string);
6544:
6545: /* check printf buffer */
6546: string = axl_new (char, 100);
6547: string [21] = 'a';
6548: res = axl_stream_printf_buffer (string, 100, &real_size, "SEQ %d %d %d\x0D\x0A", 10, 1203020, 4096);
6549: if (res != strlen (string)) {
6550: printf ("ERROR(1): expected to find string length %d but found %d..\n",
6551: res, (int) strlen (string));
6552: return axl_false;
6553: }
6554:
6555: if (res != 21) {
6556: printf ("ERROR(2): expected to find string length %d but found %d..\n",
6557: res, 21);
6558: return axl_false;
6559: }
6560: /* check string termination */
6561: if (string [21] != '\0') {
6562: printf ("ERROR(2.1): expected string termination at position %d..\n", 21);
6563: return axl_false;
6564: }
6565:
6566: /* check real size and returned value */
6567: if (real_size != res) {
6568: printf ("ERROR(2.2): expected to find same value returned as real size (%d != %d) but it wasn't found..\n",
6569: real_size, res);
6570: return axl_false;
6571: }
6572:
6573: /* check content */
6574: if (! axl_cmp (string, "SEQ 10 1203020 4096\x0D\x0A")) {
6575: printf ("ERROR: expected to find '%s' but found '%s'..\n",
6576: string, "SEQ 10 1203020 4096\x0D\x0A");
6577: return axl_false;
6578: }
6579:
6580: /* check printf buffer */
6581: string[70] = 'a';
6582: res = axl_stream_printf_buffer (string, 100, &real_size, "SEQ ###############################################3 %d %d %d\x0D\x0A", 10, 1203020, 4096);
6583: /* printf ("Found string (size: %d, real: %d): %s..\n", res, real_size, string); */
6584:
6585: if (res != strlen (string)) {
6586: printf ("ERROR(3): expected to find string length %d but found %d..\n",
6587: res, (int) strlen (string));
6588: return axl_false;
6589: }
6590:
6591: if (res != 70) {
6592: printf ("ERROR(4): expected to find string length %d but found %d..\n",
6593: res, 21);
6594: return axl_false;
6595: }
6596:
6597: /* check string termination */
6598: if (string [70] != '\0') {
6599: printf ("ERROR: expected string termination at position %d..\n", 21);
6600: return axl_false;
6601: }
6602:
6603: /* check real size and returned value */
6604: if (real_size != res) {
6605: printf ("ERROR: expected to find same value returned as real size (%d != %d) but it wasn't found..\n",
6606: real_size, res);
6607: return axl_false;
6608: }
6609:
6610: /* check content */
6611: if (! axl_cmp (string, "SEQ ###############################################3 10 1203020 4096\x0D\x0A")) {
6612: printf ("ERROR: expected to find '%s' but found '%s'..\n",
6613: string, "SEQ ###############################################3 10 1203020 4096\x0D\x0A");
6614: return axl_false;
6615: }
6616:
6617: /* check printf buffer */
6618: string[96] = 'a';
6619: res = axl_stream_printf_buffer (string, 100, &real_size, "SEQ ############################################asdfasdfasdfasdfasdfasdfas###3 %d %d %d\x0D\x0A", 10, 1203020, 4096);
6620: /* printf ("Found string (size: %d, real: %d): %s..\n", res, real_size, string); */
6621:
6622: if (res != strlen (string)) {
6623: printf ("ERROR(5): expected to find string length %d but found %d..\n", res, (int) strlen (string));
6624: return axl_false;
6625: }
6626:
6627: if (res != 96) {
6628: printf ("ERROR(6): expected to find string length %d but found %d..\n", res, 96);
6629: return axl_false;
6630: }
6631:
6632: /* check string termination */
6633: if (string [96] != '\0') {
6634: printf ("ERROR: expected string termination at position %d..\n", 21);
6635: return axl_false;
6636: }
6637:
6638: /* check real size and returned value */
6639: if (real_size != res) {
6640: printf ("ERROR: expected to find same value returned as real size (%d != %d) but it wasn't found..\n",
6641: real_size, res);
6642: return axl_false;
6643: }
6644:
6645: /* check content */
6646: if (! axl_cmp (string, "SEQ ############################################asdfasdfasdfasdfasdfasdfas###3 10 1203020 4096\x0D\x0A")) {
6647: printf ("ERROR: expected to find '%s' but found '%s'..\n",
6648: string, "SEQ ############################################asdfasdfasdfasdfasdfasdfas###3 10 1203020 4096\x0D\x0A");
6649: return axl_false;
6650: }
6651:
6652: /* check printf buffer */
6653: string[99] = 'a';
6654: res = axl_stream_printf_buffer (string, 100, &real_size, "SEQ ###@@@#########################################asdfasdfasdfasdfasdfasdfas###3 %d %d %d\x0D\x0A",
6655: 10, 1203020, 4096);
6656: /* printf ("Found string (size: %d, real: %d): %s..\n", res, real_size, string); */
6657:
6658: if (res != strlen (string)) {
6659: printf ("ERROR(7): expected to find string length %d but found %d (1)..\n", res, (int) strlen (string));
6660: return axl_false;
6661: }
6662:
6663: if (res != 99) {
6664: printf ("ERROR(8): expected to find string length %d but found %d (2)..\n", res, 99);
6665: return axl_false;
6666: }
6667:
6668: /* check string termination */
6669: if (string [99] != '\0') {
6670: printf ("ERROR: expected string termination at position %d..\n", 21);
6671: return axl_false;
6672: }
6673:
6674: /* check real size and returned value */
6675: if (real_size != res) {
6676: printf ("ERROR: expected to find same value returned as real size (%d != %d) but it wasn't found..\n",
6677: real_size, res);
6678: return axl_false;
6679: }
6680:
6681: /* check content */
6682: if (! axl_cmp (string, "SEQ ###@@@#########################################asdfasdfasdfasdfasdfasdfas###3 10 1203020 4096\x0D\x0A")) {
6683: printf ("ERROR: expected to find '%s' but found '%s'..\n",
6684: string, "SEQ ###@@@#########################################asdfasdfasdfasdfasdfasdfas###3 10 1203020 4096\x0D\x0A");
6685: return axl_false;
6686: }
6687:
6688: /* check printf buffer (out of space situation) */
6689: string[99] = 'a';
6690: res = axl_stream_printf_buffer (string, 100, &real_size,
6691: "SEQ ###@@@##fffasdklfjasdlfkjasdlfkjadf#######################################asdfasdfasdfasdfasdfasdfas###3 %d %d %d\x0D\x0A",
6692: 10, 1203020, 4096);
6693: /* printf ("Found string (size: %d, real: %d): %s..\n", res, real_size, string); */
6694:
6695: if (res != strlen (string)) {
6696: printf ("ERROR(9): expected to find string length %d but found %d (1)..\n", res, (int) strlen (string));
6697: return axl_false;
6698: }
6699:
6700: if (res != 99) {
6701: printf ("ERROR(10): expected to find string length %d but found %d (2)..\n", res, 99);
6702: return axl_false;
6703: }
6704:
6705: /* check string termination */
6706: if (string [99] != '\0') {
6707: printf ("ERROR: expected string termination at position %d..\n", 21);
6708: return axl_false;
6709: }
6710:
6711: /* check real size and returned value */
6712: if (real_size != 126) {
6713: printf ("ERROR: expected to find same value returned as real size (%d != %d) but it wasn't found..\n",
6714: real_size, 126);
6715: return axl_false;
6716: }
6717:
6718: /* check content */
6719: if (! axl_cmp (string, "SEQ ###@@@##fffasdklfjasdlfkjasdlfkjadf#######################################asdfasdfasdfasdfasdfa")) {
6720: printf ("ERROR: expected to find '%s' but found '%s'..\n",
6721: string, "SEQ ###@@@##fffasdklfjasdlfkjasdlfkjadf#######################################asdfasdfasdfasdfasdfa");
6722: return axl_false;
6723: }
6724:
6725: axl_free (string);
6726:
6727:
6728: return axl_true;
6729: }
6730:
6731: /**
6732: * @brief Intensive axl list implementation.
6733: */
6734: axl_bool test_01_04 () {
6735: int iterator = 0;
6736: int value;
6737: axlList * list;
6738: axlListCursor * cursor;
6739:
6740: /* create the list */
6741: list = axl_list_new (axl_list_always_return_1, NULL);
6742:
6743: /* add items */
6744: while (iterator < 10000) {
6745:
6746: /* add integers */
6747: axl_list_add (list, INT_TO_PTR(iterator));
6748:
6749: /* update the iterator */
6750: iterator++;
6751: }
6752:
6753: /* get items using iterator */
6754: cursor = axl_list_cursor_new (list);
6755: iterator = 0;
6756: while (axl_list_cursor_has_item (cursor)) {
6757: /* get the value */
6758: value = PTR_TO_INT (axl_list_cursor_get (cursor));
6759:
6760: /* check value */
6761: if (value != iterator) {
6762: printf ("Values miss match: %d != %d\n", value, iterator);
6763: return axl_false;
6764: }
6765:
6766: /* get the next */
6767: axl_list_cursor_next (cursor);
6768:
6769: /* update the iterator */
6770: iterator++;
6771:
6772: } /* end while */
6773:
6774: /* remove all items */
6775: axl_list_cursor_first (cursor);
6776: iterator = 0;
6777: while (axl_list_cursor_has_item (cursor)) {
6778:
6779: /* get the value */
6780: value = PTR_TO_INT (axl_list_cursor_get (cursor));
6781:
6782: /* check value */
6783: if (value != iterator) {
6784: printf ("Values miss match (2): %d != %d\n", value, iterator);
6785: return axl_false;
6786: }
6787:
6788: /* remove */
6789: axl_list_cursor_remove (cursor);
6790:
6791: if (axl_list_length (list) > 1) {
6792:
6793: /* get the value */
6794: value = PTR_TO_INT (axl_list_cursor_get (cursor));
6795:
6796: /* check value */
6797: if (value != (iterator + 1)) {
6798: printf ("Values miss match (3): %d != %d\n", value, iterator + 1);
6799: return axl_false;
6800: }
6801: }
6802:
6803: /* update the iterator */
6804: iterator++;
6805:
6806: } /* end while */
6807:
6808: if (axl_list_length (list) != 0) {
6809: printf ("List lengths mismatch: %d != 0\n", axl_list_length (list));
6810: return axl_false;
6811: }
6812:
6813: /* free cursor */
6814: axl_list_cursor_free (cursor);
6815:
6816: /* release the list */
6817: axl_list_free (list);
6818:
6819: /* axl_true */
6820: return axl_true;
6821: }
6822:
6823: /**
6824: * @brief Check axl list remove at API.
6825: */
6826: axl_bool test_01_04_a () {
6827: axlList * list;
6828: char * value;
6829: char * value2;
6830: char * value3;
6831:
6832: /* create the list */
6833: list = axl_list_new (axl_list_equal_string, axl_free);
6834:
6835: /* add tree items */
6836: axl_list_add (list, axl_strdup ("this is a test 1"));
6837: axl_list_add (list, axl_strdup ("this is a test 2"));
6838: axl_list_add (list, axl_strdup ("this is a test 3"));
6839:
6840: /* remove second position */
6841: axl_list_remove_at (list, 1);
6842: if (axl_list_length (list) != 2) {
6843: printf ("ERROR: Expected to find two items in a list after removal operation..");
6844: return axl_false;
6845: } /* end if */
6846:
6847: /* check content */
6848: if (! axl_cmp ("this is a test 1", axl_list_get_nth (list, 0))) {
6849: printf ("ERROR: Expected to find item '%s' but found '%s'\n",
6850: "this is a test 1", (char*) axl_list_get_nth (list, 0));
6851: return axl_false;
6852: } /* end if */
6853:
6854: /* now remove first position */
6855: axl_list_remove_at (list, 0);
6856: if (axl_list_length (list) != 1) {
6857: printf ("ERROR: Expected to find one item in a list after removal operation..");
6858: return axl_false;
6859: } /* end if */
6860:
6861: /* check content */
6862: if (! axl_cmp ("this is a test 3", axl_list_get_nth (list, 0))) {
6863: printf ("ERROR: Expected to find item '%s' but found '%s'\n",
6864: "this is a test 1", (char*) axl_list_get_nth (list, 0));
6865: return axl_false;
6866: } /* end if */
6867:
6868: /* now remove first position */
6869: axl_list_remove_at (list, 0);
6870: if (axl_list_length (list) != 0) {
6871: printf ("ERROR: Expected to find no item in a list after removal operation..");
6872: return axl_false;
6873: } /* end if */
6874:
6875: axl_list_free (list);
6876:
6877: /* now test unlink_at */
6878: value = axl_strdup ("Funky string");
6879: value2 = axl_strdup ("Funky string 2");
6880: value3 = axl_strdup ("Funky string 3");
6881:
6882: /* check axl_list_equal_string */
6883: if (axl_list_equal_string (value, value2) == 0) {
6884: printf ("ERROR: Expected to find different strings, but reported equal for '%s' == '%s'\n",
6885: value, value2);
6886: return axl_false;
6887: }
6888:
6889: /* create the list */
6890: list = axl_list_new (axl_list_equal_string, axl_free);
6891:
6892: /* add items */
6893: axl_list_add (list, value);
6894: if (axl_list_length (list) != 1) {
6895: printf ("ERROR: Expected to find a list with one item but found: %d\n", axl_list_length (list));
6896: return axl_false;
6897: }
6898: axl_list_add (list, value2);
6899: if (axl_list_length (list) != 2) {
6900: printf ("ERROR: Expected to find a list with two item but found: %d\n", axl_list_length (list));
6901: return axl_false;
6902: }
6903: axl_list_add (list, value3);
6904: if (axl_list_length (list) != 3) {
6905: printf ("ERROR: Expected to find a list with three item but found: %d\n", axl_list_length (list));
6906: return axl_false;
6907: }
6908:
6909: /* unlink items */
6910: axl_list_unlink_at (list, 1);
6911: if (axl_list_length (list) != 2) {
6912: printf ("ERROR: Expected to find two items in a list after removal operation but found:..%d\n", axl_list_length (list));
6913: return axl_false;
6914: } /* end if */
6915:
6916: /* check content */
6917: if (! axl_cmp ("Funky string", axl_list_get_nth (list, 0))) {
6918: printf ("ERROR: Expected to find item '%s' but found '%s'\n",
6919: "Funky string", (char*) axl_list_get_nth (list, 0));
6920: return axl_false;
6921: } /* end if */
6922:
6923: /* now remove first position */
6924: axl_list_unlink_at (list, 0);
6925: if (axl_list_length (list) != 1) {
6926: printf ("ERROR: Expected to find one item in a list after removal operation..");
6927: return axl_false;
6928: } /* end if */
6929:
6930: /* check content */
6931: if (! axl_cmp ("Funky string 3", axl_list_get_nth (list, 0))) {
6932: printf ("ERROR: Expected to find item '%s' but found '%s'\n",
6933: "Funky string 3", (char*) axl_list_get_nth (list, 0));
6934: return axl_false;
6935: } /* end if */
6936:
6937: /* now remove first position */
6938: axl_list_unlink_at (list, 0);
6939: if (axl_list_length (list) != 0) {
6940: printf ("ERROR: Expected to find no item in a list after removal operation..");
6941: return axl_false;
6942: } /* end if */
6943:
6944: axl_list_free (list);
6945:
6946: /* now remove strings */
6947: axl_free (value);
6948: axl_free (value2);
6949: axl_free (value3);
6950:
6951: return axl_true;
6952: }
6953:
6954: /**
6955: * @brief Checks error reporting functions.
6956: *
6957: *
6958: * @return \ref axl_true if ok, \ref axl_false on rainy days.
6959: */
6960: axl_bool test_01_05 ()
6961: {
6962: axlError * error = NULL;
6963:
6964: if (! axl_error_was_ok (error)) {
6965: printf ("Error: expected to find ok on a non-initialized error\n");
6966: return axl_false;
6967: }
6968:
6969: axl_error_new (-1, "An error to report", NULL, &error);
6970:
6971: if (axl_error_was_ok (error)) {
6972: printf ("Error: expected to find error reported on an initialized error\n");
6973: return axl_false;
6974: }
6975:
6976: axl_error_free (error);
6977:
6978: return axl_true;
6979: }
6980:
6981: int lookups = 0;
6982:
6983: void test_02_02_check_key (axlHash * hash, char * key)
6984: {
6985: char * value = axl_hash_get (hash, key);
6986:
6987: if (! axl_cmp (value, key)) {
6988: printf ("ERROR: unable to find %s value, found %s in the hash!!!\n", key, value);
6989: exit (-1);
6990: }
6991:
6992: lookups++;
6993:
6994: return;
6995: }
6996:
6997: /**
6998: * @brief Test current libaxl hash implementation.
6999: *
7000: * @return axl_true if it works properly or axl_false if not.
7001: */
7002: axl_bool test_02_02 ()
7003: {
7004: axlHash * hash;
7005: int iterator;
7006: const char * value;
7007:
7008: /* create the hash */
7009: hash = axl_hash_new (axl_hash_string, axl_hash_equal_string);
7010:
7011: /* insert data */
7012: axl_hash_insert (hash, "sword", "sword");
7013: axl_hash_insert (hash, "mace", "mace");
7014: axl_hash_insert (hash, "axe", "axe");
7015: axl_hash_insert (hash, "arrow", "arrow");
7016: axl_hash_insert (hash, "shield", "shield");
7017: axl_hash_insert (hash, "bag", "bag");
7018: axl_hash_insert (hash, "stone", "stone");
7019: axl_hash_insert (hash, "key", "key");
7020: axl_hash_insert (hash, "skull", "skull");
7021: axl_hash_insert (hash, "jar", "jar");
7022: axl_hash_insert (hash, "bottle", "bottle");
7023: axl_hash_insert (hash, "fairy", "fairy");
7024: axl_hash_insert (hash, "potion", "potion");
7025: axl_hash_insert (hash, "water", "water");
7026: axl_hash_insert (hash, "spoon", "spoon");
7027: axl_hash_insert (hash, "book", "book");
7028: axl_hash_insert (hash, "spear", "spear");
7029: axl_hash_insert (hash, "dagger", "dagger");
7030: axl_hash_insert (hash, "katana", "katana");
7031: axl_hash_insert (hash, "helmet", "helmet");
7032: axl_hash_insert (hash, "chain", "chain");
7033: axl_hash_insert (hash, "halberd", "halberd");
7034: axl_hash_insert (hash, "pipe", "pipe");
7035: axl_hash_insert (hash, "hat", "hat");
7036: axl_hash_insert (hash, "eyeofnewt", "eyeofnewt");
7037: axl_hash_insert (hash, "soup", "soup");
7038: axl_hash_insert (hash, "wolfbane", "wolfbane");
7039: axl_hash_insert (hash, "instantcoffee", "instantcoffee");
7040: axl_hash_insert (hash, "bugspray", "bugspray");
7041: axl_hash_insert (hash, "flint", "flint");
7042: axl_hash_insert (hash, "soap", "soap");
7043: axl_hash_insert (hash, "bones", "bones");
7044: axl_hash_insert (hash, "orb", "orb");
7045: axl_hash_insert (hash, "gold", "gold");
7046: axl_hash_insert (hash, "silver", "silver");
7047: axl_hash_insert (hash, "wine", "wine");
7048: axl_hash_insert (hash, "bread", "bread");
7049:
7050: axl_hash_insert (hash, "sword01", "sword01");
7051: axl_hash_insert (hash, "mace01", "mace01");
7052: axl_hash_insert (hash, "axe01", "axe01");
7053: axl_hash_insert (hash, "arrow01", "arrow01");
7054: axl_hash_insert (hash, "shield01", "shield01");
7055: axl_hash_insert (hash, "bag01", "bag01");
7056: axl_hash_insert (hash, "stone01", "stone01");
7057: axl_hash_insert (hash, "key01", "key01");
7058: axl_hash_insert (hash, "skull01", "skull01");
7059: axl_hash_insert (hash, "jar01", "jar01");
7060: axl_hash_insert (hash, "bottle01", "bottle01");
7061: axl_hash_insert (hash, "fairy01", "fairy01");
7062: axl_hash_insert (hash, "potion01", "potion01");
7063: axl_hash_insert (hash, "water01", "water01");
7064: axl_hash_insert (hash, "spoon01", "spoon01");
7065: axl_hash_insert (hash, "book01", "book01");
7066: axl_hash_insert (hash, "spear01", "spear01");
7067: axl_hash_insert (hash, "dagger01", "dagger01");
7068: axl_hash_insert (hash, "katana01", "katana01");
7069: axl_hash_insert (hash, "helmet01", "helmet01");
7070: axl_hash_insert (hash, "chain01", "chain01");
7071: axl_hash_insert (hash, "halberd01", "halberd01");
7072: axl_hash_insert (hash, "pipe01", "pipe01");
7073: axl_hash_insert (hash, "hat01", "hat01");
7074: axl_hash_insert (hash, "eyeofnewt01", "eyeofnewt01");
7075: axl_hash_insert (hash, "soup01", "soup01");
7076: axl_hash_insert (hash, "wolfbane01", "wolfbane01");
7077: axl_hash_insert (hash, "instantcoffee01", "instantcoffee01");
7078: axl_hash_insert (hash, "bugspray01", "bugspray01");
7079: axl_hash_insert (hash, "flint01", "flint01");
7080: axl_hash_insert (hash, "soap01", "soap01");
7081: axl_hash_insert (hash, "bones01", "bones01");
7082: axl_hash_insert (hash, "orb01", "orb01");
7083: axl_hash_insert (hash, "gold01", "gold01");
7084: axl_hash_insert (hash, "silver01", "silver01");
7085: axl_hash_insert (hash, "wine01", "wine01");
7086: axl_hash_insert (hash, "bread01", "bread01");
7087:
7088: axl_hash_insert (hash, "sword02", "sword02");
7089: axl_hash_insert (hash, "mace02", "mace02");
7090: axl_hash_insert (hash, "axe02", "axe02");
7091: axl_hash_insert (hash, "arrow02", "arrow02");
7092: axl_hash_insert (hash, "shield02", "shield02");
7093: axl_hash_insert (hash, "bag02", "bag02");
7094: axl_hash_insert (hash, "stone02", "stone02");
7095: axl_hash_insert (hash, "key02", "key02");
7096: axl_hash_insert (hash, "skull02", "skull02");
7097: axl_hash_insert (hash, "jar02", "jar02");
7098: axl_hash_insert (hash, "bottle02", "bottle02");
7099: axl_hash_insert (hash, "fairy02", "fairy02");
7100: axl_hash_insert (hash, "potion02", "potion02");
7101: axl_hash_insert (hash, "water02", "water02");
7102: axl_hash_insert (hash, "spoon02", "spoon02");
7103: axl_hash_insert (hash, "book02", "book02");
7104: axl_hash_insert (hash, "spear02", "spear02");
7105: axl_hash_insert (hash, "dagger02", "dagger02");
7106: axl_hash_insert (hash, "katana02", "katana02");
7107: axl_hash_insert (hash, "helmet02", "helmet02");
7108: axl_hash_insert (hash, "chain02", "chain02");
7109: axl_hash_insert (hash, "halberd02", "halberd02");
7110: axl_hash_insert (hash, "pipe02", "pipe02");
7111: axl_hash_insert (hash, "hat02", "hat02");
7112: axl_hash_insert (hash, "eyeofnewt02", "eyeofnewt02");
7113: axl_hash_insert (hash, "soup02", "soup02");
7114: axl_hash_insert (hash, "wolfbane02", "wolfbane02");
7115: axl_hash_insert (hash, "instantcoffee02", "instantcoffee02");
7116: axl_hash_insert (hash, "bugspray02", "bugspray02");
7117: axl_hash_insert (hash, "flint02", "flint02");
7118: axl_hash_insert (hash, "soap02", "soap02");
7119: axl_hash_insert (hash, "bones02", "bones02");
7120: axl_hash_insert (hash, "orb02", "orb02");
7121: axl_hash_insert (hash, "gold02", "gold02");
7122: axl_hash_insert (hash, "silver02", "silver02");
7123: axl_hash_insert (hash, "wine02", "wine02");
7124: axl_hash_insert (hash, "bread02", "bread02");
7125:
7126: axl_hash_insert (hash, "sword03", "sword03");
7127: axl_hash_insert (hash, "mace03", "mace03");
7128: axl_hash_insert (hash, "axe03", "axe03");
7129: axl_hash_insert (hash, "arrow03", "arrow03");
7130: axl_hash_insert (hash, "shield03", "shield03");
7131: axl_hash_insert (hash, "bag03", "bag03");
7132: axl_hash_insert (hash, "stone03", "stone03");
7133: axl_hash_insert (hash, "key03", "key03");
7134: axl_hash_insert (hash, "skull03", "skull03");
7135: axl_hash_insert (hash, "jar03", "jar03");
7136: axl_hash_insert (hash, "bottle03", "bottle03");
7137: axl_hash_insert (hash, "fairy03", "fairy03");
7138: axl_hash_insert (hash, "potion03", "potion03");
7139: axl_hash_insert (hash, "water03", "water03");
7140: axl_hash_insert (hash, "spoon03", "spoon03");
7141: axl_hash_insert (hash, "book03", "book03");
7142: axl_hash_insert (hash, "spear03", "spear03");
7143: axl_hash_insert (hash, "dagger03", "dagger03");
7144: axl_hash_insert (hash, "katana03", "katana03");
7145: axl_hash_insert (hash, "helmet03", "helmet03");
7146: axl_hash_insert (hash, "chain03", "chain03");
7147: axl_hash_insert (hash, "halberd03", "halberd03");
7148: axl_hash_insert (hash, "pipe03", "pipe03");
7149: axl_hash_insert (hash, "hat03", "hat03");
7150: axl_hash_insert (hash, "eyeofnewt03", "eyeofnewt03");
7151: axl_hash_insert (hash, "soup03", "soup03");
7152: axl_hash_insert (hash, "wolfbane03", "wolfbane03");
7153: axl_hash_insert (hash, "instantcoffee03", "instantcoffee03");
7154: axl_hash_insert (hash, "bugspray03", "bugspray03");
7155: axl_hash_insert (hash, "flint03", "flint03");
7156: axl_hash_insert (hash, "soap03", "soap03");
7157: axl_hash_insert (hash, "bones03", "bones03");
7158: axl_hash_insert (hash, "orb03", "orb03");
7159: axl_hash_insert (hash, "gold03", "gold03");
7160: axl_hash_insert (hash, "silver03", "silver03");
7161: axl_hash_insert (hash, "wine03", "wine03");
7162: axl_hash_insert (hash, "bread03", "bread03");
7163:
7164: axl_hash_insert (hash, "sword04", "sword04");
7165: axl_hash_insert (hash, "mace04", "mace04");
7166: axl_hash_insert (hash, "axe04", "axe04");
7167: axl_hash_insert (hash, "arrow04", "arrow04");
7168: axl_hash_insert (hash, "shield04", "shield04");
7169: axl_hash_insert (hash, "bag04", "bag04");
7170: axl_hash_insert (hash, "stone04", "stone04");
7171: axl_hash_insert (hash, "key04", "key04");
7172: axl_hash_insert (hash, "skull04", "skull04");
7173: axl_hash_insert (hash, "jar04", "jar04");
7174: axl_hash_insert (hash, "bottle04", "bottle04");
7175: axl_hash_insert (hash, "fairy04", "fairy04");
7176: axl_hash_insert (hash, "potion04", "potion04");
7177: axl_hash_insert (hash, "water04", "water04");
7178: axl_hash_insert (hash, "spoon04", "spoon04");
7179: axl_hash_insert (hash, "book04", "book04");
7180: axl_hash_insert (hash, "spear04", "spear04");
7181: axl_hash_insert (hash, "dagger04", "dagger04");
7182: axl_hash_insert (hash, "katana04", "katana04");
7183: axl_hash_insert (hash, "helmet04", "helmet04");
7184: axl_hash_insert (hash, "chain04", "chain04");
7185: axl_hash_insert (hash, "halberd04", "halberd04");
7186: axl_hash_insert (hash, "pipe04", "pipe04");
7187: axl_hash_insert (hash, "hat04", "hat04");
7188: axl_hash_insert (hash, "eyeofnewt04", "eyeofnewt04");
7189: axl_hash_insert (hash, "soup04", "soup04");
7190: axl_hash_insert (hash, "wolfbane04", "wolfbane04");
7191: axl_hash_insert (hash, "instantcoffee04", "instantcoffee04");
7192: axl_hash_insert (hash, "bugspray04", "bugspray04");
7193: axl_hash_insert (hash, "flint04", "flint04");
7194: axl_hash_insert (hash, "soap04", "soap04");
7195: axl_hash_insert (hash, "bones04", "bones04");
7196: axl_hash_insert (hash, "orb04", "orb04");
7197: axl_hash_insert (hash, "gold04", "gold04");
7198: axl_hash_insert (hash, "silver04", "silver04");
7199: axl_hash_insert (hash, "wine04", "wine04");
7200: axl_hash_insert (hash, "bread04", "bread04");
7201:
7202: axl_hash_insert (hash, "sword05", "sword05");
7203: axl_hash_insert (hash, "mace05", "mace05");
7204: axl_hash_insert (hash, "axe05", "axe05");
7205: axl_hash_insert (hash, "arrow05", "arrow05");
7206: axl_hash_insert (hash, "shield05", "shield05");
7207: axl_hash_insert (hash, "bag05", "bag05");
7208: axl_hash_insert (hash, "stone05", "stone05");
7209: axl_hash_insert (hash, "key05", "key05");
7210: axl_hash_insert (hash, "skull05", "skull05");
7211: axl_hash_insert (hash, "jar05", "jar05");
7212: axl_hash_insert (hash, "bottle05", "bottle05");
7213: axl_hash_insert (hash, "fairy05", "fairy05");
7214: axl_hash_insert (hash, "potion05", "potion05");
7215: axl_hash_insert (hash, "water05", "water05");
7216: axl_hash_insert (hash, "spoon05", "spoon05");
7217: axl_hash_insert (hash, "book05", "book05");
7218: axl_hash_insert (hash, "spear05", "spear05");
7219: axl_hash_insert (hash, "dagger05", "dagger05");
7220: axl_hash_insert (hash, "katana05", "katana05");
7221: axl_hash_insert (hash, "helmet05", "helmet05");
7222: axl_hash_insert (hash, "chain05", "chain05");
7223: axl_hash_insert (hash, "halberd05", "halberd05");
7224: axl_hash_insert (hash, "pipe05", "pipe05");
7225: axl_hash_insert (hash, "hat05", "hat05");
7226: axl_hash_insert (hash, "eyeofnewt05", "eyeofnewt05");
7227: axl_hash_insert (hash, "soup05", "soup05");
7228: axl_hash_insert (hash, "wolfbane05", "wolfbane05");
7229: axl_hash_insert (hash, "instantcoffee05", "instantcoffee05");
7230: axl_hash_insert (hash, "bugspray05", "bugspray05");
7231: axl_hash_insert (hash, "flint05", "flint05");
7232: axl_hash_insert (hash, "soap05", "soap05");
7233: axl_hash_insert (hash, "bones05", "bones05");
7234: axl_hash_insert (hash, "orb05", "orb05");
7235: axl_hash_insert (hash, "gold05", "gold05");
7236: axl_hash_insert (hash, "silver05", "silver05");
7237: axl_hash_insert (hash, "wine05", "wine05");
7238: axl_hash_insert (hash, "bread05", "bread05");
7239:
7240: axl_hash_insert (hash, "sword06", "sword06");
7241: axl_hash_insert (hash, "mace06", "mace06");
7242: axl_hash_insert (hash, "axe06", "axe06");
7243: axl_hash_insert (hash, "arrow06", "arrow06");
7244: axl_hash_insert (hash, "shield06", "shield06");
7245: axl_hash_insert (hash, "bag06", "bag06");
7246: axl_hash_insert (hash, "stone06", "stone06");
7247: axl_hash_insert (hash, "key06", "key06");
7248: axl_hash_insert (hash, "skull06", "skull06");
7249: axl_hash_insert (hash, "jar06", "jar06");
7250: axl_hash_insert (hash, "bottle06", "bottle06");
7251: axl_hash_insert (hash, "fairy06", "fairy06");
7252: axl_hash_insert (hash, "potion06", "potion06");
7253: axl_hash_insert (hash, "water06", "water06");
7254: axl_hash_insert (hash, "spoon06", "spoon06");
7255: axl_hash_insert (hash, "book06", "book06");
7256: axl_hash_insert (hash, "spear06", "spear06");
7257: axl_hash_insert (hash, "dagger06", "dagger06");
7258: axl_hash_insert (hash, "katana06", "katana06");
7259: axl_hash_insert (hash, "helmet06", "helmet06");
7260: axl_hash_insert (hash, "chain06", "chain06");
7261: axl_hash_insert (hash, "halberd06", "halberd06");
7262: axl_hash_insert (hash, "pipe06", "pipe06");
7263: axl_hash_insert (hash, "hat06", "hat06");
7264: axl_hash_insert (hash, "eyeofnewt06", "eyeofnewt06");
7265: axl_hash_insert (hash, "soup06", "soup06");
7266: axl_hash_insert (hash, "wolfbane06", "wolfbane06");
7267: axl_hash_insert (hash, "instantcoffee06", "instantcoffee06");
7268: axl_hash_insert (hash, "bugspray06", "bugspray06");
7269: axl_hash_insert (hash, "flint06", "flint06");
7270: axl_hash_insert (hash, "soap06", "soap06");
7271: axl_hash_insert (hash, "bones06", "bones06");
7272: axl_hash_insert (hash, "orb06", "orb06");
7273: axl_hash_insert (hash, "gold06", "gold06");
7274: axl_hash_insert (hash, "silver06", "silver06");
7275: axl_hash_insert (hash, "wine06", "wine06");
7276: axl_hash_insert (hash, "bread06", "bread06");
7277:
7278: axl_hash_insert (hash, "sword07", "sword07");
7279: axl_hash_insert (hash, "mace07", "mace07");
7280: axl_hash_insert (hash, "axe07", "axe07");
7281: axl_hash_insert (hash, "arrow07", "arrow07");
7282: axl_hash_insert (hash, "shield07", "shield07");
7283: axl_hash_insert (hash, "bag07", "bag07");
7284: axl_hash_insert (hash, "stone07", "stone07");
7285: axl_hash_insert (hash, "key07", "key07");
7286: axl_hash_insert (hash, "skull07", "skull07");
7287: axl_hash_insert (hash, "jar07", "jar07");
7288: axl_hash_insert (hash, "bottle07", "bottle07");
7289: axl_hash_insert (hash, "fairy07", "fairy07");
7290: axl_hash_insert (hash, "potion07", "potion07");
7291: axl_hash_insert (hash, "water07", "water07");
7292: axl_hash_insert (hash, "spoon07", "spoon07");
7293: axl_hash_insert (hash, "book07", "book07");
7294: axl_hash_insert (hash, "spear07", "spear07");
7295: axl_hash_insert (hash, "dagger07", "dagger07");
7296: axl_hash_insert (hash, "katana07", "katana07");
7297: axl_hash_insert (hash, "helmet07", "helmet07");
7298: axl_hash_insert (hash, "chain07", "chain07");
7299: axl_hash_insert (hash, "halberd07", "halberd07");
7300: axl_hash_insert (hash, "pipe07", "pipe07");
7301: axl_hash_insert (hash, "hat07", "hat07");
7302: axl_hash_insert (hash, "eyeofnewt07", "eyeofnewt07");
7303: axl_hash_insert (hash, "soup07", "soup07");
7304: axl_hash_insert (hash, "wolfbane07", "wolfbane07");
7305: axl_hash_insert (hash, "instantcoffee07", "instantcoffee07");
7306: axl_hash_insert (hash, "bugspray07", "bugspray07");
7307: axl_hash_insert (hash, "flint07", "flint07");
7308: axl_hash_insert (hash, "soap07", "soap07");
7309: axl_hash_insert (hash, "bones07", "bones07");
7310: axl_hash_insert (hash, "orb07", "orb07");
7311: axl_hash_insert (hash, "gold07", "gold07");
7312: axl_hash_insert (hash, "silver07", "silver07");
7313: axl_hash_insert (hash, "wine07", "wine07");
7314: axl_hash_insert (hash, "bread07", "bread07");
7315:
7316: axl_hash_insert (hash, "sword08", "sword08");
7317: axl_hash_insert (hash, "mace08", "mace08");
7318: axl_hash_insert (hash, "axe08", "axe08");
7319: axl_hash_insert (hash, "arrow08", "arrow08");
7320: axl_hash_insert (hash, "shield08", "shield08");
7321: axl_hash_insert (hash, "bag08", "bag08");
7322: axl_hash_insert (hash, "stone08", "stone08");
7323: axl_hash_insert (hash, "key08", "key08");
7324: axl_hash_insert (hash, "skull08", "skull08");
7325: axl_hash_insert (hash, "jar08", "jar08");
7326: axl_hash_insert (hash, "bottle08", "bottle08");
7327: axl_hash_insert (hash, "fairy08", "fairy08");
7328: axl_hash_insert (hash, "potion08", "potion08");
7329: axl_hash_insert (hash, "water08", "water08");
7330: axl_hash_insert (hash, "spoon08", "spoon08");
7331: axl_hash_insert (hash, "book08", "book08");
7332: axl_hash_insert (hash, "spear08", "spear08");
7333: axl_hash_insert (hash, "dagger08", "dagger08");
7334: axl_hash_insert (hash, "katana08", "katana08");
7335: axl_hash_insert (hash, "helmet08", "helmet08");
7336: axl_hash_insert (hash, "chain08", "chain08");
7337: axl_hash_insert (hash, "halberd08", "halberd08");
7338: axl_hash_insert (hash, "pipe08", "pipe08");
7339: axl_hash_insert (hash, "hat08", "hat08");
7340: axl_hash_insert (hash, "eyeofnewt08", "eyeofnewt08");
7341: axl_hash_insert (hash, "soup08", "soup08");
7342: axl_hash_insert (hash, "wolfbane08", "wolfbane08");
7343: axl_hash_insert (hash, "instantcoffee08", "instantcoffee08");
7344: axl_hash_insert (hash, "bugspray08", "bugspray08");
7345: axl_hash_insert (hash, "flint08", "flint08");
7346: axl_hash_insert (hash, "soap08", "soap08");
7347: axl_hash_insert (hash, "bones08", "bones08");
7348: axl_hash_insert (hash, "orb08", "orb08");
7349: axl_hash_insert (hash, "gold08", "gold08");
7350: axl_hash_insert (hash, "silver08", "silver08");
7351: axl_hash_insert (hash, "wine08", "wine08");
7352: axl_hash_insert (hash, "bread08", "bread08");
7353:
7354: axl_hash_insert (hash, "sword09", "sword09");
7355: axl_hash_insert (hash, "mace09", "mace09");
7356: axl_hash_insert (hash, "axe09", "axe09");
7357: axl_hash_insert (hash, "arrow09", "arrow09");
7358: axl_hash_insert (hash, "shield09", "shield09");
7359: axl_hash_insert (hash, "bag09", "bag09");
7360: axl_hash_insert (hash, "stone09", "stone09");
7361: axl_hash_insert (hash, "key09", "key09");
7362: axl_hash_insert (hash, "skull09", "skull09");
7363: axl_hash_insert (hash, "jar09", "jar09");
7364: axl_hash_insert (hash, "bottle09", "bottle09");
7365: axl_hash_insert (hash, "fairy09", "fairy09");
7366: axl_hash_insert (hash, "potion09", "potion09");
7367: axl_hash_insert (hash, "water09", "water09");
7368: axl_hash_insert (hash, "spoon09", "spoon09");
7369: axl_hash_insert (hash, "book09", "book09");
7370: axl_hash_insert (hash, "spear09", "spear09");
7371: axl_hash_insert (hash, "dagger09", "dagger09");
7372: axl_hash_insert (hash, "katana09", "katana09");
7373: axl_hash_insert (hash, "helmet09", "helmet09");
7374: axl_hash_insert (hash, "chain09", "chain09");
7375: axl_hash_insert (hash, "halberd09", "halberd09");
7376: axl_hash_insert (hash, "pipe09", "pipe09");
7377: axl_hash_insert (hash, "hat09", "hat09");
7378: axl_hash_insert (hash, "eyeofnewt09", "eyeofnewt09");
7379: axl_hash_insert (hash, "soup09", "soup09");
7380: axl_hash_insert (hash, "wolfbane09", "wolfbane09");
7381: axl_hash_insert (hash, "instantcoffee09", "instantcoffee09");
7382: axl_hash_insert (hash, "bugspray09", "bugspray09");
7383: axl_hash_insert (hash, "flint09", "flint09");
7384: axl_hash_insert (hash, "soap09", "soap09");
7385: axl_hash_insert (hash, "bones09", "bones09");
7386: axl_hash_insert (hash, "orb09", "orb09");
7387: axl_hash_insert (hash, "gold09", "gold09");
7388: axl_hash_insert (hash, "silver09", "silver09");
7389: axl_hash_insert (hash, "wine09", "wine09");
7390: axl_hash_insert (hash, "bread09", "bread09");
7391:
7392: axl_hash_insert (hash, "sword10", "sword10");
7393: axl_hash_insert (hash, "mace10", "mace10");
7394: axl_hash_insert (hash, "axe10", "axe10");
7395: axl_hash_insert (hash, "arrow10", "arrow10");
7396: axl_hash_insert (hash, "shield10", "shield10");
7397: axl_hash_insert (hash, "bag10", "bag10");
7398: axl_hash_insert (hash, "stone10", "stone10");
7399: axl_hash_insert (hash, "key10", "key10");
7400: axl_hash_insert (hash, "skull10", "skull10");
7401: axl_hash_insert (hash, "jar10", "jar10");
7402: axl_hash_insert (hash, "bottle10", "bottle10");
7403: axl_hash_insert (hash, "fairy10", "fairy10");
7404: axl_hash_insert (hash, "potion10", "potion10");
7405: axl_hash_insert (hash, "water10", "water10");
7406: axl_hash_insert (hash, "spoon10", "spoon10");
7407: axl_hash_insert (hash, "book10", "book10");
7408: axl_hash_insert (hash, "spear10", "spear10");
7409: axl_hash_insert (hash, "dagger10", "dagger10");
7410: axl_hash_insert (hash, "katana10", "katana10");
7411: axl_hash_insert (hash, "helmet10", "helmet10");
7412: axl_hash_insert (hash, "chain10", "chain10");
7413: axl_hash_insert (hash, "halberd10", "halberd10");
7414: axl_hash_insert (hash, "pipe10", "pipe10");
7415: axl_hash_insert (hash, "hat10", "hat10");
7416: axl_hash_insert (hash, "eyeofnewt10", "eyeofnewt10");
7417: axl_hash_insert (hash, "soup10", "soup10");
7418: axl_hash_insert (hash, "wolfbane10", "wolfbane10");
7419: axl_hash_insert (hash, "instantcoffee10", "instantcoffee10");
7420: axl_hash_insert (hash, "bugspray10", "bugspray10");
7421: axl_hash_insert (hash, "flint10", "flint10");
7422: axl_hash_insert (hash, "soap10", "soap10");
7423: axl_hash_insert (hash, "bones10", "bones10");
7424: axl_hash_insert (hash, "orb10", "orb10");
7425: axl_hash_insert (hash, "gold10", "gold10");
7426: axl_hash_insert (hash, "silver10", "silver10");
7427: axl_hash_insert (hash, "wine10", "wine10");
7428: axl_hash_insert (hash, "bread10", "bread10");
7429:
7430: axl_hash_insert (hash, "sword11", "sword11");
7431: axl_hash_insert (hash, "mace11", "mace11");
7432: axl_hash_insert (hash, "axe11", "axe11");
7433: axl_hash_insert (hash, "arrow11", "arrow11");
7434: axl_hash_insert (hash, "shield11", "shield11");
7435: axl_hash_insert (hash, "bag11", "bag11");
7436: axl_hash_insert (hash, "stone11", "stone11");
7437: axl_hash_insert (hash, "key11", "key11");
7438: axl_hash_insert (hash, "skull11", "skull11");
7439: axl_hash_insert (hash, "jar11", "jar11");
7440: axl_hash_insert (hash, "bottle11", "bottle11");
7441: axl_hash_insert (hash, "fairy11", "fairy11");
7442: axl_hash_insert (hash, "potion11", "potion11");
7443: axl_hash_insert (hash, "water11", "water11");
7444: axl_hash_insert (hash, "spoon11", "spoon11");
7445: axl_hash_insert (hash, "book11", "book11");
7446: axl_hash_insert (hash, "spear11", "spear11");
7447: axl_hash_insert (hash, "dagger11", "dagger11");
7448: axl_hash_insert (hash, "katana11", "katana11");
7449: axl_hash_insert (hash, "helmet11", "helmet11");
7450: axl_hash_insert (hash, "chain11", "chain11");
7451: axl_hash_insert (hash, "halberd11", "halberd11");
7452: axl_hash_insert (hash, "pipe11", "pipe11");
7453: axl_hash_insert (hash, "hat11", "hat11");
7454: axl_hash_insert (hash, "eyeofnewt11", "eyeofnewt11");
7455: axl_hash_insert (hash, "soup11", "soup11");
7456: axl_hash_insert (hash, "wolfbane11", "wolfbane11");
7457: axl_hash_insert (hash, "instantcoffee11", "instantcoffee11");
7458: axl_hash_insert (hash, "bugspray11", "bugspray11");
7459: axl_hash_insert (hash, "flint11", "flint11");
7460: axl_hash_insert (hash, "soap11", "soap11");
7461: axl_hash_insert (hash, "bones11", "bones11");
7462: axl_hash_insert (hash, "orb11", "orb11");
7463: axl_hash_insert (hash, "gold11", "gold11");
7464: axl_hash_insert (hash, "silver11", "silver11");
7465: axl_hash_insert (hash, "wine11", "wine11");
7466: axl_hash_insert (hash, "bread11", "bread11");
7467:
7468: /* show hash status */
7469: axl_hash_show_status (hash);
7470:
7471: /* perform checks */
7472: iterator = 0;
7473: while (iterator < 1000) {
7474:
7475: /* get values and check them */
7476: test_02_02_check_key (hash, "bag");
7477: test_02_02_check_key (hash, "sword");
7478: test_02_02_check_key (hash, "mace");
7479: test_02_02_check_key (hash, "axe");
7480: test_02_02_check_key (hash, "arrow");
7481: test_02_02_check_key (hash, "shield");
7482: test_02_02_check_key (hash, "bag");
7483: test_02_02_check_key (hash, "stone");
7484: test_02_02_check_key (hash, "key");
7485: test_02_02_check_key (hash, "skull");
7486: test_02_02_check_key (hash, "jar");
7487: test_02_02_check_key (hash, "bottle");
7488: test_02_02_check_key (hash, "fairy");
7489: test_02_02_check_key (hash, "potion");
7490: test_02_02_check_key (hash, "water");
7491: test_02_02_check_key (hash, "spoon");
7492: test_02_02_check_key (hash, "book");
7493: test_02_02_check_key (hash, "spear");
7494: test_02_02_check_key (hash, "dagger");
7495: test_02_02_check_key (hash, "katana");
7496: test_02_02_check_key (hash, "helmet");
7497: test_02_02_check_key (hash, "chain");
7498: test_02_02_check_key (hash, "halberd");
7499: test_02_02_check_key (hash, "pipe");
7500: test_02_02_check_key (hash, "hat");
7501: test_02_02_check_key (hash, "eyeofnewt");
7502: test_02_02_check_key (hash, "soup");
7503: test_02_02_check_key (hash, "wolfbane");
7504: test_02_02_check_key (hash, "instantcoffee");
7505: test_02_02_check_key (hash, "bugspray");
7506: test_02_02_check_key (hash, "flint");
7507: test_02_02_check_key (hash, "soap");
7508: test_02_02_check_key (hash, "bones");
7509: test_02_02_check_key (hash, "orb");
7510: test_02_02_check_key (hash, "gold");
7511: test_02_02_check_key (hash, "silver");
7512: test_02_02_check_key (hash, "wine");
7513: test_02_02_check_key (hash, "bread");
7514:
7515: test_02_02_check_key (hash, "bag01");
7516: test_02_02_check_key (hash, "sword01");
7517: test_02_02_check_key (hash, "mace01");
7518: test_02_02_check_key (hash, "axe01");
7519: test_02_02_check_key (hash, "arrow01");
7520: test_02_02_check_key (hash, "shield01");
7521: test_02_02_check_key (hash, "bag01");
7522: test_02_02_check_key (hash, "stone01");
7523: test_02_02_check_key (hash, "key01");
7524: test_02_02_check_key (hash, "skull01");
7525: test_02_02_check_key (hash, "jar01");
7526: test_02_02_check_key (hash, "bottle01");
7527: test_02_02_check_key (hash, "fairy01");
7528: test_02_02_check_key (hash, "potion01");
7529: test_02_02_check_key (hash, "water01");
7530: test_02_02_check_key (hash, "spoon01");
7531: test_02_02_check_key (hash, "book01");
7532: test_02_02_check_key (hash, "spear01");
7533: test_02_02_check_key (hash, "dagger01");
7534: test_02_02_check_key (hash, "katana01");
7535: test_02_02_check_key (hash, "helmet01");
7536: test_02_02_check_key (hash, "chain01");
7537: test_02_02_check_key (hash, "halberd01");
7538: test_02_02_check_key (hash, "pipe01");
7539: test_02_02_check_key (hash, "hat01");
7540: test_02_02_check_key (hash, "eyeofnewt01");
7541: test_02_02_check_key (hash, "soup01");
7542: test_02_02_check_key (hash, "wolfbane01");
7543: test_02_02_check_key (hash, "instantcoffee01");
7544: test_02_02_check_key (hash, "bugspray01");
7545: test_02_02_check_key (hash, "flint01");
7546: test_02_02_check_key (hash, "soap01");
7547: test_02_02_check_key (hash, "bones01");
7548: test_02_02_check_key (hash, "orb01");
7549: test_02_02_check_key (hash, "gold01");
7550: test_02_02_check_key (hash, "silver01");
7551: test_02_02_check_key (hash, "wine01");
7552: test_02_02_check_key (hash, "bread01");
7553:
7554: test_02_02_check_key (hash, "bag02");
7555: test_02_02_check_key (hash, "sword02");
7556: test_02_02_check_key (hash, "mace02");
7557: test_02_02_check_key (hash, "axe02");
7558: test_02_02_check_key (hash, "arrow02");
7559: test_02_02_check_key (hash, "shield02");
7560: test_02_02_check_key (hash, "bag02");
7561: test_02_02_check_key (hash, "stone02");
7562: test_02_02_check_key (hash, "key02");
7563: test_02_02_check_key (hash, "skull02");
7564: test_02_02_check_key (hash, "jar02");
7565: test_02_02_check_key (hash, "bottle02");
7566: test_02_02_check_key (hash, "fairy02");
7567: test_02_02_check_key (hash, "potion02");
7568: test_02_02_check_key (hash, "water02");
7569: test_02_02_check_key (hash, "spoon02");
7570: test_02_02_check_key (hash, "book02");
7571: test_02_02_check_key (hash, "spear02");
7572: test_02_02_check_key (hash, "dagger02");
7573: test_02_02_check_key (hash, "katana02");
7574: test_02_02_check_key (hash, "helmet02");
7575: test_02_02_check_key (hash, "chain02");
7576: test_02_02_check_key (hash, "halberd02");
7577: test_02_02_check_key (hash, "pipe02");
7578: test_02_02_check_key (hash, "hat02");
7579: test_02_02_check_key (hash, "eyeofnewt02");
7580: test_02_02_check_key (hash, "soup02");
7581: test_02_02_check_key (hash, "wolfbane02");
7582: test_02_02_check_key (hash, "instantcoffee02");
7583: test_02_02_check_key (hash, "bugspray02");
7584: test_02_02_check_key (hash, "flint02");
7585: test_02_02_check_key (hash, "soap02");
7586: test_02_02_check_key (hash, "bones02");
7587: test_02_02_check_key (hash, "orb02");
7588: test_02_02_check_key (hash, "gold02");
7589: test_02_02_check_key (hash, "silver02");
7590: test_02_02_check_key (hash, "wine02");
7591: test_02_02_check_key (hash, "bread02");
7592:
7593: test_02_02_check_key (hash, "bag03");
7594: test_02_02_check_key (hash, "sword03");
7595: test_02_02_check_key (hash, "mace03");
7596: test_02_02_check_key (hash, "axe03");
7597: test_02_02_check_key (hash, "arrow03");
7598: test_02_02_check_key (hash, "shield03");
7599: test_02_02_check_key (hash, "bag03");
7600: test_02_02_check_key (hash, "stone03");
7601: test_02_02_check_key (hash, "key03");
7602: test_02_02_check_key (hash, "skull03");
7603: test_02_02_check_key (hash, "jar03");
7604: test_02_02_check_key (hash, "bottle03");
7605: test_02_02_check_key (hash, "fairy03");
7606: test_02_02_check_key (hash, "potion03");
7607: test_02_02_check_key (hash, "water03");
7608: test_02_02_check_key (hash, "spoon03");
7609: test_02_02_check_key (hash, "book03");
7610: test_02_02_check_key (hash, "spear03");
7611: test_02_02_check_key (hash, "dagger03");
7612: test_02_02_check_key (hash, "katana03");
7613: test_02_02_check_key (hash, "helmet03");
7614: test_02_02_check_key (hash, "chain03");
7615: test_02_02_check_key (hash, "halberd03");
7616: test_02_02_check_key (hash, "pipe03");
7617: test_02_02_check_key (hash, "hat03");
7618: test_02_02_check_key (hash, "eyeofnewt03");
7619: test_02_02_check_key (hash, "soup03");
7620: test_02_02_check_key (hash, "wolfbane03");
7621: test_02_02_check_key (hash, "instantcoffee03");
7622: test_02_02_check_key (hash, "bugspray03");
7623: test_02_02_check_key (hash, "flint03");
7624: test_02_02_check_key (hash, "soap03");
7625: test_02_02_check_key (hash, "bones03");
7626: test_02_02_check_key (hash, "orb03");
7627: test_02_02_check_key (hash, "gold03");
7628: test_02_02_check_key (hash, "silver03");
7629: test_02_02_check_key (hash, "wine03");
7630: test_02_02_check_key (hash, "bread03");
7631:
7632: test_02_02_check_key (hash, "bag04");
7633: test_02_02_check_key (hash, "sword04");
7634: test_02_02_check_key (hash, "mace04");
7635: test_02_02_check_key (hash, "axe04");
7636: test_02_02_check_key (hash, "arrow04");
7637: test_02_02_check_key (hash, "shield04");
7638: test_02_02_check_key (hash, "bag04");
7639: test_02_02_check_key (hash, "stone04");
7640: test_02_02_check_key (hash, "key04");
7641: test_02_02_check_key (hash, "skull04");
7642: test_02_02_check_key (hash, "jar04");
7643: test_02_02_check_key (hash, "bottle04");
7644: test_02_02_check_key (hash, "fairy04");
7645: test_02_02_check_key (hash, "potion04");
7646: test_02_02_check_key (hash, "water04");
7647: test_02_02_check_key (hash, "spoon04");
7648: test_02_02_check_key (hash, "book04");
7649: test_02_02_check_key (hash, "spear04");
7650: test_02_02_check_key (hash, "dagger04");
7651: test_02_02_check_key (hash, "katana04");
7652: test_02_02_check_key (hash, "helmet04");
7653: test_02_02_check_key (hash, "chain04");
7654: test_02_02_check_key (hash, "halberd04");
7655: test_02_02_check_key (hash, "pipe04");
7656: test_02_02_check_key (hash, "hat04");
7657: test_02_02_check_key (hash, "eyeofnewt04");
7658: test_02_02_check_key (hash, "soup04");
7659: test_02_02_check_key (hash, "wolfbane04");
7660: test_02_02_check_key (hash, "instantcoffee04");
7661: test_02_02_check_key (hash, "bugspray04");
7662: test_02_02_check_key (hash, "flint04");
7663: test_02_02_check_key (hash, "soap04");
7664: test_02_02_check_key (hash, "bones04");
7665: test_02_02_check_key (hash, "orb04");
7666: test_02_02_check_key (hash, "gold04");
7667: test_02_02_check_key (hash, "silver04");
7668: test_02_02_check_key (hash, "wine04");
7669: test_02_02_check_key (hash, "bread04");
7670:
7671: test_02_02_check_key (hash, "bag05");
7672: test_02_02_check_key (hash, "sword05");
7673: test_02_02_check_key (hash, "mace05");
7674: test_02_02_check_key (hash, "axe05");
7675: test_02_02_check_key (hash, "arrow05");
7676: test_02_02_check_key (hash, "shield05");
7677: test_02_02_check_key (hash, "bag05");
7678: test_02_02_check_key (hash, "stone05");
7679: test_02_02_check_key (hash, "key05");
7680: test_02_02_check_key (hash, "skull05");
7681: test_02_02_check_key (hash, "jar05");
7682: test_02_02_check_key (hash, "bottle05");
7683: test_02_02_check_key (hash, "fairy05");
7684: test_02_02_check_key (hash, "potion05");
7685: test_02_02_check_key (hash, "water05");
7686: test_02_02_check_key (hash, "spoon05");
7687: test_02_02_check_key (hash, "book05");
7688: test_02_02_check_key (hash, "spear05");
7689: test_02_02_check_key (hash, "dagger05");
7690: test_02_02_check_key (hash, "katana05");
7691: test_02_02_check_key (hash, "helmet05");
7692: test_02_02_check_key (hash, "chain05");
7693: test_02_02_check_key (hash, "halberd05");
7694: test_02_02_check_key (hash, "pipe05");
7695: test_02_02_check_key (hash, "hat05");
7696: test_02_02_check_key (hash, "eyeofnewt05");
7697: test_02_02_check_key (hash, "soup05");
7698: test_02_02_check_key (hash, "wolfbane05");
7699: test_02_02_check_key (hash, "instantcoffee05");
7700: test_02_02_check_key (hash, "bugspray05");
7701: test_02_02_check_key (hash, "flint05");
7702: test_02_02_check_key (hash, "soap05");
7703: test_02_02_check_key (hash, "bones05");
7704: test_02_02_check_key (hash, "orb05");
7705: test_02_02_check_key (hash, "gold05");
7706: test_02_02_check_key (hash, "silver05");
7707: test_02_02_check_key (hash, "wine05");
7708: test_02_02_check_key (hash, "bread05");
7709:
7710: test_02_02_check_key (hash, "bag06");
7711: test_02_02_check_key (hash, "sword06");
7712: test_02_02_check_key (hash, "mace06");
7713: test_02_02_check_key (hash, "axe06");
7714: test_02_02_check_key (hash, "arrow06");
7715: test_02_02_check_key (hash, "shield06");
7716: test_02_02_check_key (hash, "bag06");
7717: test_02_02_check_key (hash, "stone06");
7718: test_02_02_check_key (hash, "key06");
7719: test_02_02_check_key (hash, "skull06");
7720: test_02_02_check_key (hash, "jar06");
7721: test_02_02_check_key (hash, "bottle06");
7722: test_02_02_check_key (hash, "fairy06");
7723: test_02_02_check_key (hash, "potion06");
7724: test_02_02_check_key (hash, "water06");
7725: test_02_02_check_key (hash, "spoon06");
7726: test_02_02_check_key (hash, "book06");
7727: test_02_02_check_key (hash, "spear06");
7728: test_02_02_check_key (hash, "dagger06");
7729: test_02_02_check_key (hash, "katana06");
7730: test_02_02_check_key (hash, "helmet06");
7731: test_02_02_check_key (hash, "chain06");
7732: test_02_02_check_key (hash, "halberd06");
7733: test_02_02_check_key (hash, "pipe06");
7734: test_02_02_check_key (hash, "hat06");
7735: test_02_02_check_key (hash, "eyeofnewt06");
7736: test_02_02_check_key (hash, "soup06");
7737: test_02_02_check_key (hash, "wolfbane06");
7738: test_02_02_check_key (hash, "instantcoffee06");
7739: test_02_02_check_key (hash, "bugspray06");
7740: test_02_02_check_key (hash, "flint06");
7741: test_02_02_check_key (hash, "soap06");
7742: test_02_02_check_key (hash, "bones06");
7743: test_02_02_check_key (hash, "orb06");
7744: test_02_02_check_key (hash, "gold06");
7745: test_02_02_check_key (hash, "silver06");
7746: test_02_02_check_key (hash, "wine06");
7747: test_02_02_check_key (hash, "bread06");
7748:
7749: test_02_02_check_key (hash, "bag07");
7750: test_02_02_check_key (hash, "sword07");
7751: test_02_02_check_key (hash, "mace07");
7752: test_02_02_check_key (hash, "axe07");
7753: test_02_02_check_key (hash, "arrow07");
7754: test_02_02_check_key (hash, "shield07");
7755: test_02_02_check_key (hash, "bag07");
7756: test_02_02_check_key (hash, "stone07");
7757: test_02_02_check_key (hash, "key07");
7758: test_02_02_check_key (hash, "skull07");
7759: test_02_02_check_key (hash, "jar07");
7760: test_02_02_check_key (hash, "bottle07");
7761: test_02_02_check_key (hash, "fairy07");
7762: test_02_02_check_key (hash, "potion07");
7763: test_02_02_check_key (hash, "water07");
7764: test_02_02_check_key (hash, "spoon07");
7765: test_02_02_check_key (hash, "book07");
7766: test_02_02_check_key (hash, "spear07");
7767: test_02_02_check_key (hash, "dagger07");
7768: test_02_02_check_key (hash, "katana07");
7769: test_02_02_check_key (hash, "helmet07");
7770: test_02_02_check_key (hash, "chain07");
7771: test_02_02_check_key (hash, "halberd07");
7772: test_02_02_check_key (hash, "pipe07");
7773: test_02_02_check_key (hash, "hat07");
7774: test_02_02_check_key (hash, "eyeofnewt07");
7775: test_02_02_check_key (hash, "soup07");
7776: test_02_02_check_key (hash, "wolfbane07");
7777: test_02_02_check_key (hash, "instantcoffee07");
7778: test_02_02_check_key (hash, "bugspray07");
7779: test_02_02_check_key (hash, "flint07");
7780: test_02_02_check_key (hash, "soap07");
7781: test_02_02_check_key (hash, "bones07");
7782: test_02_02_check_key (hash, "orb07");
7783: test_02_02_check_key (hash, "gold07");
7784: test_02_02_check_key (hash, "silver07");
7785: test_02_02_check_key (hash, "wine07");
7786: test_02_02_check_key (hash, "bread07");
7787:
7788: test_02_02_check_key (hash, "bag08");
7789: test_02_02_check_key (hash, "sword08");
7790: test_02_02_check_key (hash, "mace08");
7791: test_02_02_check_key (hash, "axe08");
7792: test_02_02_check_key (hash, "arrow08");
7793: test_02_02_check_key (hash, "shield08");
7794: test_02_02_check_key (hash, "bag08");
7795: test_02_02_check_key (hash, "stone08");
7796: test_02_02_check_key (hash, "key08");
7797: test_02_02_check_key (hash, "skull08");
7798: test_02_02_check_key (hash, "jar08");
7799: test_02_02_check_key (hash, "bottle08");
7800: test_02_02_check_key (hash, "fairy08");
7801: test_02_02_check_key (hash, "potion08");
7802: test_02_02_check_key (hash, "water08");
7803: test_02_02_check_key (hash, "spoon08");
7804: test_02_02_check_key (hash, "book08");
7805: test_02_02_check_key (hash, "spear08");
7806: test_02_02_check_key (hash, "dagger08");
7807: test_02_02_check_key (hash, "katana08");
7808: test_02_02_check_key (hash, "helmet08");
7809: test_02_02_check_key (hash, "chain08");
7810: test_02_02_check_key (hash, "halberd08");
7811: test_02_02_check_key (hash, "pipe08");
7812: test_02_02_check_key (hash, "hat08");
7813: test_02_02_check_key (hash, "eyeofnewt08");
7814: test_02_02_check_key (hash, "soup08");
7815: test_02_02_check_key (hash, "wolfbane08");
7816: test_02_02_check_key (hash, "instantcoffee08");
7817: test_02_02_check_key (hash, "bugspray08");
7818: test_02_02_check_key (hash, "flint08");
7819: test_02_02_check_key (hash, "soap08");
7820: test_02_02_check_key (hash, "bones08");
7821: test_02_02_check_key (hash, "orb08");
7822: test_02_02_check_key (hash, "gold08");
7823: test_02_02_check_key (hash, "silver08");
7824: test_02_02_check_key (hash, "wine08");
7825: test_02_02_check_key (hash, "bread08");
7826:
7827: test_02_02_check_key (hash, "bag09");
7828: test_02_02_check_key (hash, "sword09");
7829: test_02_02_check_key (hash, "mace09");
7830: test_02_02_check_key (hash, "axe09");
7831: test_02_02_check_key (hash, "arrow09");
7832: test_02_02_check_key (hash, "shield09");
7833: test_02_02_check_key (hash, "bag09");
7834: test_02_02_check_key (hash, "stone09");
7835: test_02_02_check_key (hash, "key09");
7836: test_02_02_check_key (hash, "skull09");
7837: test_02_02_check_key (hash, "jar09");
7838: test_02_02_check_key (hash, "bottle09");
7839: test_02_02_check_key (hash, "fairy09");
7840: test_02_02_check_key (hash, "potion09");
7841: test_02_02_check_key (hash, "water09");
7842: test_02_02_check_key (hash, "spoon09");
7843: test_02_02_check_key (hash, "book09");
7844: test_02_02_check_key (hash, "spear09");
7845: test_02_02_check_key (hash, "dagger09");
7846: test_02_02_check_key (hash, "katana09");
7847: test_02_02_check_key (hash, "helmet09");
7848: test_02_02_check_key (hash, "chain09");
7849: test_02_02_check_key (hash, "halberd09");
7850: test_02_02_check_key (hash, "pipe09");
7851: test_02_02_check_key (hash, "hat09");
7852: test_02_02_check_key (hash, "eyeofnewt09");
7853: test_02_02_check_key (hash, "soup09");
7854: test_02_02_check_key (hash, "wolfbane09");
7855: test_02_02_check_key (hash, "instantcoffee09");
7856: test_02_02_check_key (hash, "bugspray09");
7857: test_02_02_check_key (hash, "flint09");
7858: test_02_02_check_key (hash, "soap09");
7859: test_02_02_check_key (hash, "bones09");
7860: test_02_02_check_key (hash, "orb09");
7861: test_02_02_check_key (hash, "gold09");
7862: test_02_02_check_key (hash, "silver09");
7863: test_02_02_check_key (hash, "wine09");
7864: test_02_02_check_key (hash, "bread09");
7865:
7866: test_02_02_check_key (hash, "bag10");
7867: test_02_02_check_key (hash, "sword10");
7868: test_02_02_check_key (hash, "mace10");
7869: test_02_02_check_key (hash, "axe10");
7870: test_02_02_check_key (hash, "arrow10");
7871: test_02_02_check_key (hash, "shield10");
7872: test_02_02_check_key (hash, "bag10");
7873: test_02_02_check_key (hash, "stone10");
7874: test_02_02_check_key (hash, "key10");
7875: test_02_02_check_key (hash, "skull10");
7876: test_02_02_check_key (hash, "jar10");
7877: test_02_02_check_key (hash, "bottle10");
7878: test_02_02_check_key (hash, "fairy10");
7879: test_02_02_check_key (hash, "potion10");
7880: test_02_02_check_key (hash, "water10");
7881: test_02_02_check_key (hash, "spoon10");
7882: test_02_02_check_key (hash, "book10");
7883: test_02_02_check_key (hash, "spear10");
7884: test_02_02_check_key (hash, "dagger10");
7885: test_02_02_check_key (hash, "katana10");
7886: test_02_02_check_key (hash, "helmet10");
7887: test_02_02_check_key (hash, "chain10");
7888: test_02_02_check_key (hash, "halberd10");
7889: test_02_02_check_key (hash, "pipe10");
7890: test_02_02_check_key (hash, "hat10");
7891: test_02_02_check_key (hash, "eyeofnewt10");
7892: test_02_02_check_key (hash, "soup10");
7893: test_02_02_check_key (hash, "wolfbane10");
7894: test_02_02_check_key (hash, "instantcoffee10");
7895: test_02_02_check_key (hash, "bugspray10");
7896: test_02_02_check_key (hash, "flint10");
7897: test_02_02_check_key (hash, "soap10");
7898: test_02_02_check_key (hash, "bones10");
7899: test_02_02_check_key (hash, "orb10");
7900: test_02_02_check_key (hash, "gold10");
7901: test_02_02_check_key (hash, "silver10");
7902: test_02_02_check_key (hash, "wine10");
7903: test_02_02_check_key (hash, "bread10");
7904:
7905: test_02_02_check_key (hash, "bag11");
7906: test_02_02_check_key (hash, "sword11");
7907: test_02_02_check_key (hash, "mace11");
7908: test_02_02_check_key (hash, "axe11");
7909: test_02_02_check_key (hash, "arrow11");
7910: test_02_02_check_key (hash, "shield11");
7911: test_02_02_check_key (hash, "bag11");
7912: test_02_02_check_key (hash, "stone11");
7913: test_02_02_check_key (hash, "key11");
7914: test_02_02_check_key (hash, "skull11");
7915: test_02_02_check_key (hash, "jar11");
7916: test_02_02_check_key (hash, "bottle11");
7917: test_02_02_check_key (hash, "fairy11");
7918: test_02_02_check_key (hash, "potion11");
7919: test_02_02_check_key (hash, "water11");
7920: test_02_02_check_key (hash, "spoon11");
7921: test_02_02_check_key (hash, "book11");
7922: test_02_02_check_key (hash, "spear11");
7923: test_02_02_check_key (hash, "dagger11");
7924: test_02_02_check_key (hash, "katana11");
7925: test_02_02_check_key (hash, "helmet11");
7926: test_02_02_check_key (hash, "chain11");
7927: test_02_02_check_key (hash, "halberd11");
7928: test_02_02_check_key (hash, "pipe11");
7929: test_02_02_check_key (hash, "hat11");
7930: test_02_02_check_key (hash, "eyeofnewt11");
7931: test_02_02_check_key (hash, "soup11");
7932: test_02_02_check_key (hash, "wolfbane11");
7933: test_02_02_check_key (hash, "instantcoffee11");
7934: test_02_02_check_key (hash, "bugspray11");
7935: test_02_02_check_key (hash, "flint11");
7936: test_02_02_check_key (hash, "soap11");
7937: test_02_02_check_key (hash, "bones11");
7938: test_02_02_check_key (hash, "orb11");
7939: test_02_02_check_key (hash, "gold11");
7940: test_02_02_check_key (hash, "silver11");
7941: test_02_02_check_key (hash, "wine11");
7942: test_02_02_check_key (hash, "bread11");
7943:
7944: /* update iterator */
7945: iterator++;
7946: }
7947:
7948: /* destroy the hash */
7949: axl_hash_free (hash);
7950:
7951: /* check integer hash */
7952: hash = axl_hash_new (axl_hash_int, axl_hash_equal_int);
7953: axl_hash_insert (hash, INT_TO_PTR (-1), "menos uno");
7954: axl_hash_insert (hash, INT_TO_PTR (8), "ocho");
7955:
7956: /* check values stored */
7957: value = (const char *) axl_hash_get (hash, INT_TO_PTR (-1));
7958: if (! axl_cmp (value, "menos uno")) {
7959: printf ("Expected to find %s but found %s\n", "menos uno", value);
7960: return axl_false;
7961: }
7962:
7963: /* check values stored */
7964: value = (const char *) axl_hash_get (hash, INT_TO_PTR (8));
7965: if (! axl_cmp (value, "ocho")) {
7966: printf ("Expected to find %s but found %s\n", "ocho", value);
7967: return axl_false;
7968: }
7969:
7970: /* free hash */
7971: axl_hash_free (hash);
7972:
7973: /* terminated test */
7974: return axl_true;
7975: }
7976:
7977: axlPointer test_02_01_copy_key (axlPointer key, axlDestroyFunc key_destroy, axlPointer data, axlDestroyFunc data_destroy)
7978: {
7979: if (key_destroy == NULL)
7980: return key;
7981:
7982: return axl_strdup (key);
7983: }
7984:
7985: axlPointer test_02_01_copy_value (axlPointer key, axlDestroyFunc key_destroy, axlPointer data, axlDestroyFunc data_destroy)
7986: {
7987: if (data_destroy == NULL)
7988: return data;
7989:
7990: return axl_strdup (data);
7991: }
7992:
7993:
7994: /**
7995: * @brief Checks normal hash operations.
7996: *
7997: *
7998: * @return \ref axl_true if it was ok.
7999: */
8000: axl_bool test_02_01 ()
8001: {
8002: axlHash * hash;
8003: axlHash * hash2;
8004: axlPointer * data;
8005:
8006: /* create a hash */
8007: hash = axl_hash_new (axl_hash_string, axl_hash_equal_string);
8008:
8009: /* perform operations on empty state */
8010: if (axl_hash_exists (hash, "value")) {
8011: printf ("Found that the hash returns that item exist but it is empty\n");
8012: return axl_false;
8013: }
8014:
8015: /* perform a remove operation */
8016: axl_hash_remove (hash, "value");
8017:
8018: /* get data associated */
8019: data = axl_hash_get (hash, "value");
8020: if (data != NULL) {
8021: printf ("Found that the hash returns that item exist but it is empty\n");
8022: return axl_false;
8023: }
8024:
8025: /* add items to the hash */
8026: axl_hash_insert_full (hash, "value", NULL, axl_strdup ("value"), axl_free);
8027: axl_hash_insert_full (hash, "value2", NULL, axl_strdup ("value2"), axl_free);
8028: axl_hash_insert_full (hash, "value3", NULL, axl_strdup ("value3"), axl_free);
8029:
8030: /* check items stored */
8031: test_02_02_check_key (hash, "value");
8032: test_02_02_check_key (hash, "value2");
8033: test_02_02_check_key (hash, "value3");
8034:
8035: /* copy the hash */
8036: hash2 = axl_hash_copy (hash, test_02_01_copy_key, test_02_01_copy_value);
8037:
8038: /* check items stored */
8039: test_02_02_check_key (hash2, "value");
8040: test_02_02_check_key (hash2, "value2");
8041: test_02_02_check_key (hash2, "value3");
8042:
8043:
8044: /* destroy the hash */
8045: axl_hash_free (hash);
8046:
8047: /* destroy the hash2 */
8048: axl_hash_free (hash2);
8049:
8050: return axl_true;
8051: }
8052:
8053: /**
8054: * @brief Test current libaxl hash implementation.
8055: *
8056: * @return axl_true if it works properly or axl_false if not.
8057: */
8058: axl_bool test_02_03 ()
8059: {
8060: axlHash * hash;
8061:
8062: /* create the hash */
8063: hash = axl_hash_new (axl_hash_string, axl_hash_equal_string);
8064:
8065: axl_hash_insert (hash, "value", "value");
8066: axl_hash_insert (hash, "value", "value");
8067: axl_hash_insert (hash, "value", "value");
8068: axl_hash_insert (hash, "value", "value");
8069: axl_hash_insert (hash, "value", "value");
8070: axl_hash_insert (hash, "value", "value");
8071: axl_hash_insert (hash, "value", "value");
8072: axl_hash_insert (hash, "value", "value");
8073: axl_hash_insert (hash, "value", "value");
8074: axl_hash_insert (hash, "value", "value");
8075:
8076: axl_hash_show_status (hash);
8077:
8078: if (axl_hash_items (hash) != 1) {
8079: printf ("ERROR: expected to find a hash size of 1 but found: %d\n",
8080: axl_hash_items (hash));
8081: return axl_false;
8082: }
8083:
8084: /* free the hash */
8085: axl_hash_free (hash);
8086:
8087: return axl_true;
8088: }
8089:
8090: axl_bool test_02_03a ()
8091: {
8092: axlHash * hash;
8093:
8094: hash = axl_hash_new (axl_hash_int, axl_hash_equal_int);
8095:
8096: axl_hash_insert (hash, INT_TO_PTR (10), INT_TO_PTR (10));
8097:
8098: axl_hash_insert (hash, INT_TO_PTR (1032), INT_TO_PTR (1032));
8099:
8100: axl_hash_insert (hash, INT_TO_PTR (1048), INT_TO_PTR (1048));
8101:
8102: axl_hash_insert (hash, INT_TO_PTR (10320), INT_TO_PTR (10320));
8103:
8104: /* remove */
8105: if (axl_hash_remove (hash, INT_TO_PTR (10321))) {
8106: printf ("ERROR: expected to not find a true result from removing an item that do not exists..");
8107: return axl_false;
8108: }
8109:
8110: if (! axl_hash_remove (hash, INT_TO_PTR (10320))) {
8111: printf ("ERROR: expected to find a true result from removing an item that do not exists..");
8112: return axl_false;
8113: }
8114:
8115: if (axl_hash_remove (hash, INT_TO_PTR (10320))) {
8116: printf ("ERROR: expected to NOT find a true result from removing an item that do not exists..");
8117: return axl_false;
8118: }
8119:
8120: if (! axl_hash_remove (hash, INT_TO_PTR (1048))) {
8121: printf ("ERROR: expected to find a true result from removing an item that do not exists..");
8122: return axl_false;
8123: }
8124:
8125: if (axl_hash_remove (hash, INT_TO_PTR (1048))) {
8126: printf ("ERROR: expected to NOT find a true result from removing an item that do not exists..");
8127: return axl_false;
8128: }
8129:
8130: if (! axl_hash_remove (hash, INT_TO_PTR (1032))) {
8131: printf ("ERROR: expected to find a true result from removing an item that do not exists..");
8132: return axl_false;
8133: }
8134:
8135: if (axl_hash_remove (hash, INT_TO_PTR (1032))) {
8136: printf ("ERROR: expected to NOT find a true result from removing an item that do not exists..");
8137: return axl_false;
8138: }
8139:
8140: if (! axl_hash_remove (hash, INT_TO_PTR (10))) {
8141: printf ("ERROR: expected to find a true result from removing an item that do not exists..");
8142: return axl_false;
8143: }
8144:
8145: if (axl_hash_remove (hash, INT_TO_PTR (10))) {
8146: printf ("ERROR: expected to NOT find a true result from removing an item that do not exists..");
8147: return axl_false;
8148: }
8149:
8150: axl_hash_free (hash);
8151:
8152: return axl_true;
8153: }
8154:
8155: void show_item_test_02_04 (axlPointer key, axlPointer data)
8156: {
8157: __axl_log ("hash-test", AXL_LEVEL_DEBUG, " %s -> %s", (char *) key, (char *) data);
8158: }
8159:
8160: axl_bool test_02_04 ()
8161: {
8162: axlHash * hash;
8163:
8164: /* create the hash */
8165: hash = axl_hash_new (axl_hash_string, axl_hash_equal_string);
8166:
8167: /* insert data */
8168: axl_hash_insert (hash, "sword", "sword");
8169: axl_hash_insert (hash, "mace", "mace");
8170: axl_hash_insert (hash, "axe", "axe");
8171: axl_hash_insert (hash, "arrow", "arrow");
8172: axl_hash_insert (hash, "shield", "shield");
8173: axl_hash_insert (hash, "bag", "bag");
8174: axl_hash_insert (hash, "stone", "stone");
8175: axl_hash_insert (hash, "key", "key");
8176: axl_hash_insert (hash, "skull", "skull");
8177: axl_hash_insert (hash, "jar", "jar");
8178: axl_hash_insert (hash, "bottle", "bottle");
8179: axl_hash_insert (hash, "fairy", "fairy");
8180: axl_hash_insert (hash, "potion", "potion");
8181: axl_hash_insert (hash, "water", "water");
8182: axl_hash_insert (hash, "spoon", "spoon");
8183: axl_hash_insert (hash, "book", "book");
8184: axl_hash_insert (hash, "spear", "spear");
8185: axl_hash_insert (hash, "dagger", "dagger");
8186: axl_hash_insert (hash, "katana", "katana");
8187: axl_hash_insert (hash, "helmet", "helmet");
8188: axl_hash_insert (hash, "chain", "chain");
8189: axl_hash_insert (hash, "halberd", "halberd");
8190: axl_hash_insert (hash, "pipe", "pipe");
8191: axl_hash_insert (hash, "hat", "hat");
8192: axl_hash_insert (hash, "eyeofnewt", "eyeofnewt");
8193: axl_hash_insert (hash, "soup", "soup");
8194: axl_hash_insert (hash, "wolfbane", "wolfbane");
8195: axl_hash_insert (hash, "instantcoffee", "instantcoffee");
8196: axl_hash_insert (hash, "bugspray", "bugspray");
8197: axl_hash_insert (hash, "flint", "flint");
8198: axl_hash_insert (hash, "soap", "soap");
8199: axl_hash_insert (hash, "bones", "bones");
8200: axl_hash_insert (hash, "orb", "orb");
8201: axl_hash_insert (hash, "gold", "gold");
8202: axl_hash_insert (hash, "silver", "silver");
8203: axl_hash_insert (hash, "wine", "wine");
8204: axl_hash_insert (hash, "bread", "bread");
8205:
8206: axl_hash_show_status_full (hash, show_item_test_02_04);
8207:
8208: axl_hash_free (hash);
8209:
8210: return axl_true;
8211:
8212: }
8213:
8214: axl_bool test_02_04_1 ()
8215: {
8216: axlHash * hash;
8217: int iterator;
8218:
8219: hash = axl_hash_new (axl_hash_string, axl_hash_equal_string);
8220: iterator = 0;
8221: while (iterator < 1000) {
8222: /* check the value do not exists */
8223: if (axl_hash_exists (hash, "status-ok")) {
8224: printf ("ERROR (1): expected to not find key value 'status-ok', but found..\n");
8225: return axl_false;
8226: } /* end if */
8227:
8228: axl_hash_insert_full (hash, "status-ok", NULL, INT_TO_PTR (1), NULL);
8229:
8230: if (! axl_hash_exists (hash, "status-ok")) {
8231: printf ("ERROR (2): expected to find key value 'status-ok', but not found..\n");
8232: return axl_false;
8233: } /* end if */
8234:
8235: axl_hash_remove (hash, "status-ok");
8236:
8237: if (axl_hash_exists (hash, "status-ok")) {
8238: printf ("ERROR (3): expected to NOT find key value 'status-ok', but found..\n");
8239: return axl_false;
8240: } /* end if */
8241:
8242: /* next iterator */
8243: iterator++;
8244: } /* end while */
8245:
8246: printf ("Test 02-04-1: capacity %d, items stored: %d\n", axl_hash_capacity (hash), axl_hash_items (hash));
8247:
8248: /* now store 10 items */
8249: axl_hash_insert (hash, "value", INT_TO_PTR (1));
8250: axl_hash_insert (hash, "value2", INT_TO_PTR (2));
8251: axl_hash_insert (hash, "value3", INT_TO_PTR (3));
8252: axl_hash_insert (hash, "value4", INT_TO_PTR (4));
8253: axl_hash_insert (hash, "value5", INT_TO_PTR (5));
8254: axl_hash_insert (hash, "value6", INT_TO_PTR (6));
8255: axl_hash_insert (hash, "value7", INT_TO_PTR (7));
8256: axl_hash_insert (hash, "value8", INT_TO_PTR (8));
8257: axl_hash_insert (hash, "value9", INT_TO_PTR (9));
8258: axl_hash_insert (hash, "value10", INT_TO_PTR (10));
8259:
8260: /* check capacity */
8261: printf ("Test 02-04-1: Items stored %d\n", axl_hash_items (hash));
8262: if (axl_hash_items (hash) != 10) {
8263: printf ("ERROR (3): expected to find 10 items but found %d..\n",
8264: axl_hash_items (hash));
8265: return axl_false;
8266: } /* end if */
8267:
8268: /* check here available internal store */
8269: if (__axl_hash_spare_max (hash) != 9 || __axl_hash_spare_next (hash) != -1) {
8270: printf ("ERROR (5): expected to find either max spare 9 or next spare -1 but found %d and %d..\n",
8271: __axl_hash_spare_max (hash), __axl_hash_spare_next (hash));
8272: return axl_false;
8273: } /* end if */
8274:
8275: /* remove items */
8276: printf ("Test 02-04-1: Calling to remove items..\n");
8277: axl_hash_remove (hash, "value");
8278: axl_hash_remove (hash, "value2");
8279: axl_hash_remove (hash, "value3");
8280: axl_hash_remove (hash, "value4");
8281: axl_hash_remove (hash, "value5");
8282: axl_hash_remove (hash, "value6");
8283: axl_hash_remove (hash, "value7");
8284: axl_hash_remove (hash, "value8");
8285: axl_hash_remove (hash, "value9");
8286: axl_hash_remove (hash, "value10");
8287:
8288: if (axl_hash_items (hash) != 0) {
8289: printf ("ERROR (4): expected to find 0 items but found %d..\n",
8290: axl_hash_items (hash));
8291: return axl_false;
8292: } /* end if */
8293:
8294: /* check here available internal store */
8295: if (__axl_hash_spare_max (hash) != 9 || __axl_hash_spare_next (hash) != 9) {
8296: printf ("ERROR (5): expected to find either max spare 9 or next spare 9 but found %d and %d..\n",
8297: __axl_hash_spare_max (hash), __axl_hash_spare_next (hash));
8298: return axl_false;
8299: } /* end if */
8300:
8301: /* check capacity */
8302: printf ("Test 02-04-1: Items stored %d\n", axl_hash_items (hash));
8303:
8304: /* insert lot of items */
8305: axl_hash_insert (hash, "value", INT_TO_PTR (1));
8306: axl_hash_insert (hash, "value2", INT_TO_PTR (2));
8307: axl_hash_insert (hash, "value3", INT_TO_PTR (3));
8308: axl_hash_insert (hash, "value4", INT_TO_PTR (4));
8309: axl_hash_insert (hash, "value5", INT_TO_PTR (5));
8310: axl_hash_insert (hash, "value6", INT_TO_PTR (6));
8311: axl_hash_insert (hash, "value7", INT_TO_PTR (7));
8312: axl_hash_insert (hash, "value8", INT_TO_PTR (8));
8313: axl_hash_insert (hash, "value9", INT_TO_PTR (9));
8314: axl_hash_insert (hash, "value10", INT_TO_PTR (10));
8315: axl_hash_insert (hash, "value11", INT_TO_PTR (1));
8316: axl_hash_insert (hash, "value12", INT_TO_PTR (2));
8317: axl_hash_insert (hash, "value13", INT_TO_PTR (3));
8318: axl_hash_insert (hash, "value14", INT_TO_PTR (4));
8319: axl_hash_insert (hash, "value15", INT_TO_PTR (5));
8320: axl_hash_insert (hash, "value16", INT_TO_PTR (6));
8321: axl_hash_insert (hash, "value17", INT_TO_PTR (7));
8322: axl_hash_insert (hash, "value18", INT_TO_PTR (8));
8323: axl_hash_insert (hash, "value19", INT_TO_PTR (9));
8324: axl_hash_insert (hash, "value20", INT_TO_PTR (10));
8325:
8326: /* check here available internal store */
8327: printf ("Test 02-04-1: Max spares %d, next spares %d..\n",
8328: __axl_hash_spare_max (hash), __axl_hash_spare_next (hash));
8329: if (__axl_hash_spare_max (hash) != 9 || __axl_hash_spare_next (hash) != -1) {
8330: printf ("ERROR (5): expected to find either max spare 9 or next spare -1 but found %d and %d..\n",
8331: __axl_hash_spare_max (hash), __axl_hash_spare_next (hash));
8332: return axl_false;
8333: } /* end if */
8334:
8335: /* insert lot of items */
8336: axl_hash_remove (hash, "value");
8337: axl_hash_remove (hash, "value2");
8338: axl_hash_remove (hash, "value3");
8339: axl_hash_remove (hash, "value4");
8340: axl_hash_remove (hash, "value5");
8341: axl_hash_remove (hash, "value6");
8342: axl_hash_remove (hash, "value7");
8343: axl_hash_remove (hash, "value8");
8344: axl_hash_remove (hash, "value9");
8345: axl_hash_remove (hash, "value10");
8346: axl_hash_remove (hash, "value11");
8347: axl_hash_remove (hash, "value12");
8348: axl_hash_remove (hash, "value13");
8349: axl_hash_remove (hash, "value14");
8350: axl_hash_remove (hash, "value15");
8351: axl_hash_remove (hash, "value16");
8352: axl_hash_remove (hash, "value17");
8353: axl_hash_remove (hash, "value18");
8354: axl_hash_remove (hash, "value19");
8355: axl_hash_remove (hash, "value20");
8356:
8357: printf ("Test 02-04-1: Max spares %d, next spares %d..\n",
8358: __axl_hash_spare_max (hash), __axl_hash_spare_next (hash));
8359:
8360: if (__axl_hash_spare_max (hash) != 27 || __axl_hash_spare_next (hash) != 19) {
8361: printf ("ERROR (6): expected to find either max spare 27 or next spare 19 but found %d and %d..\n",
8362: __axl_hash_spare_max (hash), __axl_hash_spare_next (hash));
8363: return axl_false;
8364: } /* end if */
8365:
8366: /* insert lot of items */
8367: axl_hash_insert (hash, "value", INT_TO_PTR (1));
8368: axl_hash_insert (hash, "value2", INT_TO_PTR (2));
8369: axl_hash_insert (hash, "value3", INT_TO_PTR (3));
8370: axl_hash_insert (hash, "value4", INT_TO_PTR (4));
8371: axl_hash_insert (hash, "value5", INT_TO_PTR (5));
8372: axl_hash_insert (hash, "value6", INT_TO_PTR (6));
8373: axl_hash_insert (hash, "value7", INT_TO_PTR (7));
8374: axl_hash_insert (hash, "value8", INT_TO_PTR (8));
8375: axl_hash_insert (hash, "value9", INT_TO_PTR (9));
8376: axl_hash_insert (hash, "value10", INT_TO_PTR (10));
8377: axl_hash_insert (hash, "value11", INT_TO_PTR (1));
8378: axl_hash_insert (hash, "value12", INT_TO_PTR (2));
8379: axl_hash_insert (hash, "value13", INT_TO_PTR (3));
8380: axl_hash_insert (hash, "value14", INT_TO_PTR (4));
8381: axl_hash_insert (hash, "value15", INT_TO_PTR (5));
8382: axl_hash_insert (hash, "value16", INT_TO_PTR (6));
8383: axl_hash_insert (hash, "value17", INT_TO_PTR (7));
8384: axl_hash_insert (hash, "value18", INT_TO_PTR (8));
8385: axl_hash_insert (hash, "value19", INT_TO_PTR (9));
8386: axl_hash_insert (hash, "value20", INT_TO_PTR (10));
8387:
8388: printf ("Test 02-04-1: Max spares %d, next spares %d..\n",
8389: __axl_hash_spare_max (hash), __axl_hash_spare_next (hash));
8390:
8391: if (__axl_hash_spare_max (hash) != 27 || __axl_hash_spare_next (hash) != -1) {
8392: printf ("ERROR (6): expected to find either max spare 27 or next spare 19 but found %d and %d..\n",
8393: __axl_hash_spare_max (hash), __axl_hash_spare_next (hash));
8394: return axl_false;
8395: } /* end if */
8396:
8397: /* insert lot of items */
8398: axl_hash_remove (hash, "value");
8399: axl_hash_remove (hash, "value2");
8400: axl_hash_remove (hash, "value3");
8401: axl_hash_remove (hash, "value4");
8402: axl_hash_remove (hash, "value5");
8403: axl_hash_remove (hash, "value6");
8404: axl_hash_remove (hash, "value7");
8405: axl_hash_remove (hash, "value8");
8406: axl_hash_remove (hash, "value9");
8407: axl_hash_remove (hash, "value10");
8408: axl_hash_remove (hash, "value11");
8409: axl_hash_remove (hash, "value12");
8410: axl_hash_remove (hash, "value13");
8411: axl_hash_remove (hash, "value14");
8412: axl_hash_remove (hash, "value15");
8413: axl_hash_remove (hash, "value16");
8414: axl_hash_remove (hash, "value17");
8415: axl_hash_remove (hash, "value18");
8416: axl_hash_remove (hash, "value19");
8417: axl_hash_remove (hash, "value20");
8418:
8419: if (__axl_hash_spare_max (hash) != 27 || __axl_hash_spare_next (hash) != 19) {
8420: printf ("ERROR (7): expected to find either max spare 27 or next spare 19 but found %d and %d..\n",
8421: __axl_hash_spare_max (hash), __axl_hash_spare_next (hash));
8422: return axl_false;
8423: } /* end if */
8424:
8425: axl_hash_free (hash);
8426:
8427: return axl_true;
8428: }
8429:
8430: axl_bool test_02_05 ()
8431: {
8432: axlHash * hash;
8433: axlHashCursor * cursor;
8434: int iterator;
8435: char * key, * value;
8436:
8437: /* create the hash */
8438: hash = axl_hash_new (axl_hash_string, axl_hash_equal_string);
8439:
8440: /* insert data */
8441: axl_hash_insert (hash, "sword", "sword");
8442: axl_hash_insert (hash, "mace", "mace");
8443: axl_hash_insert (hash, "axe", "axe");
8444: axl_hash_insert (hash, "arrow", "arrow");
8445: axl_hash_insert (hash, "shield", "shield");
8446: axl_hash_insert (hash, "bag", "bag");
8447: axl_hash_insert (hash, "stone", "stone");
8448: axl_hash_insert (hash, "key", "key");
8449: axl_hash_insert (hash, "skull", "skull");
8450: axl_hash_insert (hash, "jar", "jar");
8451: axl_hash_insert (hash, "bottle", "bottle");
8452: axl_hash_insert (hash, "fairy", "fairy");
8453: axl_hash_insert (hash, "potion", "potion");
8454: axl_hash_insert (hash, "water", "water");
8455: axl_hash_insert (hash, "spoon", "spoon");
8456: axl_hash_insert (hash, "book", "book");
8457: axl_hash_insert (hash, "spear", "spear");
8458: axl_hash_insert (hash, "dagger", "dagger");
8459: axl_hash_insert (hash, "katana", "katana");
8460: axl_hash_insert (hash, "helmet", "helmet");
8461: axl_hash_insert (hash, "chain", "chain");
8462: axl_hash_insert (hash, "halberd", "halberd");
8463: axl_hash_insert (hash, "pipe", "pipe");
8464: axl_hash_insert (hash, "hat", "hat");
8465: axl_hash_insert (hash, "eyeofnewt", "eyeofnewt");
8466: axl_hash_insert (hash, "soup", "soup");
8467: axl_hash_insert (hash, "wolfbane", "wolfbane");
8468: axl_hash_insert (hash, "instantcoffee", "instantcoffee");
8469: axl_hash_insert (hash, "bugspray", "bugspray");
8470: axl_hash_insert (hash, "flint", "flint");
8471: axl_hash_insert (hash, "soap", "soap");
8472: axl_hash_insert (hash, "bones", "bones");
8473: axl_hash_insert (hash, "orb", "orb");
8474: axl_hash_insert (hash, "gold", "gold");
8475: axl_hash_insert (hash, "silver", "silver");
8476: axl_hash_insert (hash, "wine", "wine");
8477: axl_hash_insert (hash, "bread", "bread");
8478:
8479: /* create a cursor */
8480: cursor = axl_hash_cursor_new (hash);
8481: iterator = 0;
8482: while (axl_hash_cursor_has_item (cursor)) {
8483: /* first item */
8484: if (! axl_cmp (axl_hash_cursor_get_key (cursor),
8485: axl_hash_cursor_get_value (cursor))) {
8486: printf ("error: supposed to find key and value equal (%s==%s), but not found..\n",
8487: (char*)axl_hash_cursor_get_key (cursor),
8488: (char*)axl_hash_cursor_get_value (cursor));
8489: return axl_false;
8490: } /* end if */
8491:
8492: /* get next */
8493: axl_hash_cursor_next (cursor);
8494:
8495: iterator++;
8496:
8497: if (iterator == 38) {
8498: printf ("error: found more items than actually expected..\n");
8499: return axl_false;
8500: }
8501: } /* end while */
8502:
8503: if (iterator != 37) {
8504: printf ("error: found more items than actually expected..\n");
8505: return axl_false;
8506: }
8507:
8508: iterator = 0;
8509: axl_hash_cursor_first (cursor);
8510: while (axl_hash_cursor_has_item (cursor)) {
8511: /* first item */
8512: if (! axl_cmp (axl_hash_cursor_get_key (cursor),
8513: axl_hash_cursor_get_value (cursor))) {
8514: printf ("error: supposed to find key and value equal (%s==%s), but not found..\n",
8515: (char*)axl_hash_cursor_get_key (cursor),
8516: (char*)axl_hash_cursor_get_value (cursor));
8517: return axl_false;
8518: } /* end if */
8519:
8520: iterator++;
8521:
8522: if (iterator < 37) {
8523: if (! axl_hash_cursor_has_next (cursor)) {
8524: printf ("error: expected to find next node on iterator (%d)\n", iterator);
8525: return axl_false;
8526: } /* end if */
8527: } /* end if */
8528:
8529: /* get next */
8530: axl_hash_cursor_next (cursor);
8531:
8532: if (iterator == 38) {
8533: printf ("error: found more items than actually expected..\n");
8534: return axl_false;
8535: }
8536: } /* end while */
8537:
8538: if (iterator != 37) {
8539: printf ("error: found different count of items than actually expected (%d != 37)..\n", iterator);
8540: return axl_false;
8541: }
8542:
8543: /* check last api */
8544: axl_hash_cursor_last (cursor);
8545: if (! axl_hash_cursor_has_item (cursor)) {
8546: printf ("error: expected to find last element defined..\n");
8547: return axl_false;
8548: }
8549:
8550: /* check last */
8551: if (! axl_cmp ("flint", axl_hash_cursor_get_key (cursor))) {
8552: printf ("error: expected to find last element \"flint\"=\"%s\"\n", (char*) axl_hash_cursor_get_key (cursor));
8553: return axl_false;
8554: }
8555:
8556:
8557: if (axl_hash_cursor_has_next (cursor)) {
8558: printf ("error: expected to not find next element defined..\n");
8559: return axl_false;
8560: } /* end if */
8561:
8562: axl_hash_cursor_first (cursor);
8563: while (axl_hash_cursor_has_item (cursor)) {
8564: /* first item */
8565: if (! axl_cmp (axl_hash_cursor_get_key (cursor),
8566: axl_hash_cursor_get_value (cursor))) {
8567: printf ("error: supposed to find key and value equal (%s==%s), but not found..\n",
8568: (char*)axl_hash_cursor_get_key (cursor),
8569: (char*)axl_hash_cursor_get_value (cursor));
8570: return axl_false;
8571: } /* end if */
8572:
8573: /* get value */
8574: key = axl_hash_cursor_get_key (cursor);
8575: value = axl_hash_cursor_get_value (cursor);
8576:
8577: /* check key to exists */
8578: if (! axl_hash_exists (axl_hash_cursor_hash (cursor), key)) {
8579: printf ("error: expected to find key defined=<%s>\n", key);
8580: return axl_false;
8581: }
8582:
8583: /* check value to exists */
8584: if (! axl_cmp (axl_hash_get (axl_hash_cursor_hash (cursor), key), value)) {
8585: printf ("error: expected to find value not found: <%s>!=<%s>\n",
8586: value, (char*) axl_hash_get (axl_hash_cursor_hash (cursor), key));
8587: return axl_false;
8588: } /* end if */
8589:
8590:
8591: /* remove items */
8592: axl_hash_cursor_remove (cursor);
8593:
8594: } /* end while */
8595:
8596: if (axl_hash_items (hash) != 0) {
8597: printf ("error: expected to find hash with 0 size (but found: %d)\n",
8598: axl_hash_items (hash));
8599: return axl_false;
8600: } /* end if */
8601:
8602: /* free cursor */
8603: axl_hash_cursor_free (cursor);
8604:
8605: /* free the hash */
8606: axl_hash_free (hash);
8607:
8608: /* now check the cursor with only one item */
8609: hash = axl_hash_new (axl_hash_string, axl_hash_equal_string);
8610: axl_hash_insert (hash, "12:BB:DD:8A:1D:E5:64:0C:7E:F5:EB:B3:21:C7:67:7E", "test");
8611: cursor = axl_hash_cursor_new (hash);
8612:
8613: iterator = 0;
8614: while (axl_hash_cursor_has_item (cursor) && iterator < 10) {
8615:
8616: axl_hash_cursor_get_value (cursor);
8617:
8618: /* get next cursor */
8619: axl_hash_cursor_next (cursor);
8620: iterator++;
8621: }
8622:
8623: if (iterator != 1) {
8624: printf ("Expected to find only one iteration inside the hash but the limit was found\n");
8625: return axl_false;
8626: }
8627:
8628: axl_hash_free (hash);
8629: axl_hash_cursor_free (cursor);
8630:
8631: /* test ok */
8632: return axl_true;
8633: }
8634:
8635: /**
8636: * @brief Allows to check current binary stack used by the library.
8637: *
8638: *
8639: * @return axl_true if tests are ok.
8640: */
8641: axl_bool test_02_06 ()
8642: {
8643: axl_bool value;
8644: axlBinaryStack * bstack;
8645: int iterator;
8646:
8647: /* create a bstack */
8648: bstack = axl_binary_stack_new ();
8649:
8650: /* push 10 axl_true values */
8651: axl_binary_stack_push (bstack, axl_true);
8652: axl_binary_stack_push (bstack, axl_true);
8653: axl_binary_stack_push (bstack, axl_true);
8654: axl_binary_stack_push (bstack, axl_true);
8655: axl_binary_stack_push (bstack, axl_true);
8656:
8657: axl_binary_stack_push (bstack, axl_true);
8658: axl_binary_stack_push (bstack, axl_true);
8659: axl_binary_stack_push (bstack, axl_true);
8660: axl_binary_stack_push (bstack, axl_true);
8661: axl_binary_stack_push (bstack, axl_true);
8662:
8663: /* check count */
8664: if (axl_binary_stack_size (bstack) != 10) {
8665: printf ("Expected to find %d items but found: %d",
8666: 10, axl_binary_stack_size (bstack));
8667: return axl_false;
8668: } /* end if */
8669:
8670: /* push values */
8671:
8672: axl_binary_stack_push (bstack, axl_false);
8673: axl_binary_stack_push (bstack, axl_true);
8674: axl_binary_stack_push (bstack, axl_true);
8675:
8676: axl_binary_stack_push (bstack, axl_true);
8677: axl_binary_stack_push (bstack, axl_false);
8678: axl_binary_stack_push (bstack, axl_false);
8679:
8680: /* check count */
8681: if (axl_binary_stack_size (bstack) != 16) {
8682: printf ("Expected to find %d items but found: %d\n",
8683: 16, axl_binary_stack_size (bstack));
8684: return axl_false;
8685: } /* end if */
8686:
8687: /* pop data */
8688: value = axl_binary_stack_pop (bstack);
8689: if (value != axl_false) {
8690: printf ("Expected to find %d, but found %d (1)\n", axl_false, value);
8691: return axl_false;
8692: }
8693:
8694: value = axl_binary_stack_pop (bstack);
8695: if (value != axl_false) {
8696: printf ("Expected to find %d, but found %d (2)\n", axl_false, value);
8697: return axl_false;
8698: }
8699:
8700: value = axl_binary_stack_pop (bstack);
8701: if (value != axl_true) {
8702: printf ("Expected to find %d, but found %d (3)\n", axl_true, value);
8703: return axl_false;
8704: }
8705:
8706: value = axl_binary_stack_pop (bstack);
8707: if (value != axl_true) {
8708: printf ("Expected to find %d, but found %d (4)\n", axl_true, value);
8709: return axl_false;
8710: }
8711:
8712: value = axl_binary_stack_pop (bstack);
8713: if (value != axl_true) {
8714: printf ("Expected to find %d, but found %d (5)\n", axl_true, value);
8715: return axl_false;
8716: }
8717:
8718: value = axl_binary_stack_pop (bstack);
8719: if (value != axl_false) {
8720: printf ("Expected to find %d, but found %d (6)\n", axl_false, value);
8721: return axl_false;
8722: }
8723:
8724: /* check count */
8725: if (axl_binary_stack_size (bstack) != 10) {
8726: printf ("Expected to find %d items but found: %d\n",
8727: 10, axl_binary_stack_size (bstack));
8728: return axl_false;
8729: } /* end if */
8730:
8731: iterator = 0;
8732: while (iterator < 10) {
8733: /* get the value */
8734: value = axl_binary_stack_pop (bstack);
8735: if (value != axl_true) {
8736: printf ("Expected to find %d, but found %d (3)\n", axl_true, value);
8737: return axl_false;
8738: } /* end if */
8739:
8740: iterator++;
8741: } /* end while */
8742:
8743: /* check count */
8744: if (axl_binary_stack_size (bstack) != 0) {
8745: printf ("Expected to find %d items but found: %d\n",
8746: 0, axl_binary_stack_size (bstack));
8747: return axl_false;
8748: } /* end if */
8749:
8750: /* free binary stack */
8751: axl_binary_stack_free (bstack);
8752:
8753: return axl_true;
8754: }
8755:
8756: /**
8757: * Test01: Initial xml header checking.
8758: */
8759: int main (int argc, char ** argv)
8760: {
8761: axlError * error;
8762:
8763: printf ("** LibAxl: Another XML library (regression test).\n");
8764: printf ("** Copyright (C) 2008 Advanced Software Production Line, S.L.\n**\n");
8765: printf ("** Axl regression tests: version=%s\n**\n",
8766: VERSION);
8767: printf ("** To gather information about time performance you can use:\n**\n");
8768: printf ("** >> time ./test_01\n**\n");
8769: printf ("** To gather information about memory consumed (and leaks) use:\n**\n");
8770: printf ("** >> libtool --mode=execute valgrind --leak-check=yes --error-limit=no ./test_01\n**\n");
8771: printf ("**\n");
8772: printf ("** Report bugs to:\n**\n");
8773: printf ("** <axl@lists.aspl.es> Axl mailing list\n**\n");
8774:
8775:
8776: /* initialize axl library */
8777: if (! axl_init ()) {
8778: printf ("Unable to initialize Axl library\n");
8779: return -1;
8780: }
8781:
8782: /* DATA STRUCTURE TESTS */
8783: if (test_01_01 ()) {
8784: printf ("Test 01-01: LibAxl list implementation [ OK ]\n");
8785: }else {
8786: printf ("Test 01-01 ##: LibAxl list implementation [ FAILED ]\n");
8787: return -1;
8788: }
8789:
8790: if (test_01_02 ()) {
8791: printf ("Test 01-02: LibAxl FIFO implementation [ OK ]\n");
8792: }else {
8793: printf ("Test 01-02: LibAxl list implementation [ FAILED ]\n");
8794: return -1;
8795: }
8796:
8797: if (test_01_03 ()) {
8798: printf ("Test 01-03: LibAxl string functions [ OK ]\n");
8799: }else {
8800: printf ("Test 01-03: LibAxl string functions [ FAILED ]\n");
8801: return -1;
8802: }
8803:
8804: if (test_01_04 ()) {
8805: printf ("Test 01-04: LibAxl list implementation (II) [ OK ]\n");
8806: }else {
8807: printf ("Test 01-04: LibAxl list implementation (II) [ FAILED ]\n");
8808: return -1;
8809: }
8810:
8811: if (test_01_04_a ()) {
8812: printf ("Test 01-04-a: LibAxl list implementation (III) [ OK ]\n");
8813: }else {
8814: printf ("Test 01-04-a: LibAxl list implementation (III) [ FAILED ]\n");
8815: return -1;
8816: }
8817:
8818: if (test_01_05 ()) {
8819: printf ("Test 01-05: LibAxl error reporting [ OK ]\n");
8820: }else {
8821: printf ("Test 01-05: LibAxl error reporting [ FAILED ]\n");
8822: return -1;
8823: }
8824:
8825: /* HASH IMPLEMENTATION CHECKS */
8826: if (test_02_01 ()) {
8827: printf ("Test 02-01: LibAxl hash implementation [ OK ]\n");
8828: }else {
8829: printf ("Test 02-01: LibAxl hash implementation [ FAILEDp ]\n");
8830: return -1;
8831: }
8832:
8833: if (test_02_02 ()) {
8834: printf ("Test 02-02: LibAxl hash implementation (lookup) [ OK ]\n");
8835: }else {
8836: printf ("Test 02-02: LibAxl hash implementation (lookup) [ FAILED ]\n");
8837: return -1;
8838: }
8839:
8840: if (test_02_03 ()) {
8841: printf ("Test 02-03: LibAxl hash implementation (replace) [ OK ]\n");
8842: }else {
8843: printf ("Test 02-03: LibAxl hash implementation (replace) [ FAILED ]\n");
8844: return -1;
8845: }
8846:
8847: if (test_02_03a ()) {
8848: printf ("Test 02-03-a: LibAxl hash remove notification [ OK ]\n");
8849: }else {
8850: printf ("Test 02-03-a: LibAxl hash remove notification [ FAILED ]\n");
8851: return -1;
8852: }
8853:
8854: if (test_02_04 ()) {
8855: printf ("Test 02-04: LibAxl hash implementation (remove) [ OK ]\n");
8856: }else {
8857: printf ("Test 02-04: LibAxl hash implementation (remove) [ FAILED ]\n");
8858: return -1;
8859: }
8860:
8861: if (test_02_04_1 ()) {
8862: printf ("Test 02-04-1: LibAxl hash implementation (insert-remove cycle) [ OK ]\n");
8863: }else {
8864: printf ("Test 02-04-1: LibAxl hash implementation (insert-remove cycle) [ FAILED ]\n");
8865: return -1;
8866: }
8867:
8868: if (test_02_05 ()) {
8869: printf ("Test 02-05: LibAxl hash cursor [ OK ]\n");
8870: }else {
8871: printf ("Test 02-05: LibAxl hash cursor [ FAILED ]\n");
8872: return -1;
8873: }
8874:
8875: /* binary stack checks */
8876: if (test_02_06 ()) {
8877: printf ("Test 02-06: LibAxl binary stack [ OK ]\n");
8878: }else {
8879: printf ("Test 02-06: LibAxl binary stack [ FAILED ]\n");
8880: return -1;
8881: }
8882:
8883: /* LIBRARY TESTS */
8884: if (test_01 (&error))
8885: printf ("Test 01: basic xml parsing [ OK ]\n");
8886: else {
8887: printf ("Test 01: basic xml parsing [ FAILED ]\n (code: %d) %s\n",
8888: axl_error_get_code (error), axl_error_get (error));
8889: axl_error_free (error);
8890: return -1;
8891: }
8892:
8893: if (test_01a (&error)) {
8894: printf ("Test 01-a: Axl Stream boundary checks [ OK ]\n");
8895: } else {
8896: printf ("Test 01-a: Axl Stream boundary checks [ FAILED ]\n (CODE: %d) %s\n",
8897: axl_error_get_code (error), axl_error_get (error));
8898: axl_error_free (error);
8899: return -1;
8900: }
8901:
8902: if (test_01b (&error)) {
8903: printf ("Test 01-b: Basic XML parsing, XML document position [ OK ]\n");
8904: } else {
8905: printf ("Test 01-b: Basic XML parsing, XML document position [ FAILED ]\n (CODE: %d) %s\n",
8906: axl_error_get_code (error), axl_error_get (error));
8907: axl_error_free (error);
8908: return -1;
8909: }
8910:
8911: if (test_01c (&error)) {
8912: printf ("Test 01-c: Basic XML parsing, XML document traversing [ OK ]\n");
8913: } else {
8914: printf ("Test 01-c: Basic XML parsing, XML document traversing [ FAILED ]\n (CODE: %d) %s\n",
8915: axl_error_get_code (error), axl_error_get (error));
8916: axl_error_free (error);
8917: return -1;
8918: }
8919:
8920: if (test_01d (&error)) {
8921: printf ("Test 01-d: Basic XML parsing, node nth access [ OK ]\n");
8922: } else {
8923: printf ("Test 01-d: Basic XML parsing, node nth access [ FAILED ]\n (CODE: %d) %s\n",
8924: axl_error_get_code (error), axl_error_get (error));
8925: axl_error_free (error);
8926: return -1;
8927: }
8928:
8929: if (test_01e (&error)) {
8930: printf ("Test 01-e: Basic XML parsing, large content [ OK ]\n");
8931: } else {
8932: printf ("Test 01-e: Basic XML parsing, large content [ FAILED ]\n (CODE: %d) %s\n",
8933: axl_error_get_code (error), axl_error_get (error));
8934: axl_error_free (error);
8935: return -1;
8936: } /* end if */
8937:
8938: if (test_01f (&error)) {
8939: printf ("Test 01-f: Basic XML parsing, white space node content [ OK ]\n");
8940: } else {
8941: printf ("Test 01-f: Basic XML parsing, white space node content [ FAILED ]\n (CODE: %d) %s\n",
8942: axl_error_get_code (error), axl_error_get (error));
8943: axl_error_free (error);
8944: return -1;
8945: } /* end if */
8946:
8947: if (test_02 (&error))
8948: printf ("Test 02: basic xml error detection [ OK ]\n");
8949: else {
8950: printf ("Test 02: basic xml error detection [ FAILED ]\n (CODE: %d) %s\n",
8951: axl_error_get_code (error), axl_error_get (error));
8952: axl_error_free (error);
8953: return -1;
8954: }
8955:
8956: if (test_03 (&error))
8957: printf ("Test 03: complex xml error detection [ OK ]\n");
8958: else {
8959: printf ("Test 03: complex xml error detection [ FAILED ]\n (CODE: %d) %s\n",
8960: axl_error_get_code (error), axl_error_get (error));
8961: axl_error_free (error);
8962: return -1;
8963: }
8964:
8965: if (test_04 (&error))
8966: printf ("Test 04: complex xml parsing [ OK ]\n");
8967: else {
8968: printf ("Test 04: complex xml parsing [ FAILED ]\n (CODE: %d) %s\n",
8969: axl_error_get_code (error), axl_error_get (error));
8970: axl_error_free (error);
8971: return -1;
8972: }
8973:
8974: if (test_05 (&error))
8975: printf ("Test 05: DTD basic parsing [ OK ]\n");
8976: else {
8977: printf ("Test 05: DTD basic parsing [ FAILED ]\n (CODE: %d) %s\n",
8978: axl_error_get_code (error), axl_error_get (error));
8979: axl_error_free (error);
8980: return -1;
8981: }
8982:
8983: if (test_06 (&error))
8984: printf ("Test 06: DTD basic parsing (2) [ OK ]\n");
8985: else {
8986: printf ("Test 06: DTD basic parsing (2) [ FAILED ]\n (CODE: %d) %s\n",
8987: axl_error_get_code (error), axl_error_get (error));
8988: axl_error_free (error);
8989: return -1;
8990: }
8991:
8992: if (test_07 (&error))
8993: printf ("Test 07: DTD validation (I) [ OK ]\n");
8994: else {
8995: printf ("Test 07: DTD validation (I) [ FAILED ]\n (CODE: %d) %s\n",
8996: axl_error_get_code (error), axl_error_get (error));
8997: axl_error_free (error);
8998: return -1;
8999: }
9000:
9001: if (test_08 (&error))
9002: printf ("Test 08: Large XML file loading [ OK ]\n");
9003: else {
9004: printf ("Test 08: Large XML file loading [ FAILED ]\n (CODE: %d) %s\n",
9005: axl_error_get_code (error), axl_error_get (error));
9006: axl_error_free (error);
9007: return -1;
9008: }
9009:
9010:
9011:
9012: if (test_09 (&error))
9013: printf ("Test 09: Complex DTD validation [ OK ]\n");
9014: else {
9015: printf ("Test 09: Complex DTD validation [ FAILED ]\n (CODE: %d) %s\n",
9016: axl_error_get_code (error), axl_error_get (error));
9017: axl_error_free (error);
9018: return -1;
9019: }
9020:
9021:
9022: if (test_10 (&error))
9023: printf ("Test 10: Complex DTD validation (II) [ OK ]\n");
9024: else {
9025: printf ("Test 10: Complex DTD validation (II) [ FAILED ]\n (CODE: %d) %s\n",
9026: axl_error_get_code (error), axl_error_get (error));
9027: axl_error_free (error);
9028: return -1;
9029: }
9030:
9031: if (test_11 (&error))
9032: printf ("Test 11: Complex DTD validation (III) [ OK ]\n");
9033: else {
9034: printf ("Test 11: Complex DTD validation (III) [ FAILED ]\n (CODE: %d) %s\n",
9035: axl_error_get_code (error), axl_error_get (error));
9036: axl_error_free (error);
9037: return -1;
9038: }
9039:
9040: if (test_12 (&error))
9041: printf ("Test 12: Complex DTD validation (IV) [ OK ]\n");
9042: else {
9043: printf ("Test 12: Complex DTD validation (IV) [ FAILED ]\n (CODE: %d) %s\n",
9044: axl_error_get_code (error), axl_error_get (error));
9045: axl_error_free (error);
9046: return -1;
9047: }
9048:
9049: if (test_13 (&error))
9050: printf ("Test 13: XML memory dumping [ OK ]\n");
9051: else {
9052: printf ("Test 13: XML memory dumping [ FAILED ]\n (CODE: %d) %s\n",
9053: axl_error_get_code (error), axl_error_get (error));
9054: axl_error_free (error);
9055: return -1;
9056: }
9057:
9058: if (test_14 (&error)) {
9059: printf ("Test 14: quotation and escape sequences (&,',\",<,>) [ OK ]\n");
9060: } else {
9061: printf ("Test 14: quotation and escape sequences (&,',\",<,>) [ FAILED ]\n (CODE: %d) %s\n",
9062: axl_error_get_code (error), axl_error_get (error));
9063: axl_error_free (error);
9064: return -1;
9065: }
9066:
9067: if (test_15 (&error)) {
9068: printf ("Test 15: DTD validation fail checks (25/04/2006) [ OK ]\n");
9069: } else {
9070: printf ("Test 15: DTD validation fail checks (25/04/2006) [ FAILED ]\n (CODE: %d) %s\n",
9071: axl_error_get_code (error), axl_error_get (error));
9072: axl_error_free (error);
9073: return -1;
9074: }
9075:
9076:
9077: if (test_16 (&error)) {
9078: printf ("Test 16: DTD validation fail checks (03/05/2006) [ OK ]\n");
9079: } else {
9080: printf ("Test 16: DTD validation fail checks (03/05/2006) [ FAILED ]\n (CODE: %d) %s\n",
9081: axl_error_get_code (error), axl_error_get (error));
9082: axl_error_free (error);
9083: return -1;
9084: }
9085:
9086: if (test_17 (&error)) {
9087: printf ("Test 17: DTD validation fail checks (02/07/2006) [ OK ]\n");
9088: } else {
9089: printf ("Test 17: DTD validation fail checks (02/07/2006) [ FAILED ]\n (CODE: %d) %s\n",
9090: axl_error_get_code (error), axl_error_get (error));
9091: axl_error_free (error);
9092: return -1;
9093: }
9094:
9095: if (test_18 (&error)) {
9096: printf ("Test 18: DTD ENTITY support [ OK ]\n");
9097: } else {
9098: printf ("Test 18: DTD ENTITY support [ FAILED ]\n (CODE: %d) %s\n",
9099: axl_error_get_code (error), axl_error_get (error));
9100: axl_error_free (error);
9101: return -1;
9102: }
9103:
9104: if (test_19 (&error)) {
9105: printf ("Test 19: Axl document node replacing [ OK ]\n");
9106: } else {
9107: printf ("Test 19: Axl document node replacing [ FAILED ]\n (CODE: %d) %s\n",
9108: axl_error_get_code (error), axl_error_get (error));
9109: axl_error_free (error);
9110: return -1;
9111: }
9112:
9113:
9114: if (test_20 (&error)) {
9115: printf ("Test 20: Axl node copy and anotation data [ OK ]\n");
9116: } else {
9117: printf ("Test 20: Axl node copy and anotation data [ FAILED ]\n (CODE: %d) %s\n",
9118: axl_error_get_code (error), axl_error_get (error));
9119: axl_error_free (error);
9120: return -1;
9121: }
9122:
9123: if (test_20b (&error)) {
9124: printf ("Test 20b: Axl node copy 2 [ OK ]\n");
9125: } else {
9126: printf ("Test 20b: Axl node copy 2 [ FAILED ]\n (CODE: %d) %s\n",
9127: axl_error_get_code (error), axl_error_get (error));
9128: axl_error_free (error);
9129: return -1;
9130: }
9131:
9132: if (test_21 (&error)) {
9133: printf ("Test 21: Axl node mixed content [ OK ]\n");
9134: } else {
9135: printf ("Test 21: Axl node mixed content [ FAILED ]\n (CODE: %d) %s\n",
9136: axl_error_get_code (error), axl_error_get (error));
9137: axl_error_free (error);
9138: return -1;
9139: }
9140:
9141: if (test_22 (&error)) {
9142: printf ("Test 22: Axl node attributes [ OK ]\n");
9143: } else {
9144: printf ("Test 22: Axl node attributes [ FAILED ]\n (CODE: %d) %s\n",
9145: axl_error_get_code (error), axl_error_get (error));
9146: axl_error_free (error);
9147: return -1;
9148: }
9149:
9150: if (test_23 (&error)) {
9151: printf ("Test 23: Axl item modification [ OK ]\n");
9152: } else {
9153: printf ("Test 23: Axl item modification [ FAILED ]\n (CODE: %d) %s\n",
9154: axl_error_get_code (error), axl_error_get (error));
9155: axl_error_free (error);
9156: return -1;
9157: }
9158:
9159: if (test_24 (&error)) {
9160: printf ("Test 24: Invalid sequences detection [ OK ]\n");
9161: }else {
9162: printf ("Test 24: Invalid sequences detection [ FAILED ]\n (CODE: %d) %s\n",
9163: axl_error_get_code (error), axl_error_get (error));
9164: axl_error_free (error);
9165: return -1;
9166: }
9167:
9168: if (test_25 (&error)) {
9169: printf ("Test 25: Lookup functions [ OK ]\n");
9170: }else {
9171: printf ("Test 25: Lookup [ FAILED ]\n (CODE: %d) %s\n",
9172: axl_error_get_code (error), axl_error_get (error));
9173: axl_error_free (error);
9174: return -1;
9175: }
9176:
9177: #ifdef AXL_NS_SUPPORT
9178: if (test_26 (&error)) {
9179: printf ("Test 26: Namespace support (basic) [ OK ]\n");
9180: }else {
9181: printf ("Test 26: Namespace support (basic) [ FAILED ]\n (CODE: %d) %s\n",
9182: axl_error_get_code (error), axl_error_get (error));
9183: axl_error_free (error);
9184: return -1;
9185: }
9186:
9187: if (test_27 (&error)) {
9188: printf ("Test 27: Namespace support [ OK ]\n");
9189: }else {
9190: printf ("Test 27: Namespace support [ FAILED ]\n (CODE: %d) %s\n",
9191: axl_error_get_code (error), axl_error_get (error));
9192: axl_error_free (error);
9193: return -1;
9194: }
9195:
9196: if (test_28 (&error)) {
9197: printf ("Test 28: Namespace defaulting support [ OK ]\n");
9198: }else {
9199: printf ("Test 28: Namespace defaulting support [ FAILED ]\n (CODE: %d) %s\n",
9200: axl_error_get_code (error), axl_error_get (error));
9201: axl_error_free (error);
9202: return -1;
9203: }
9204:
9205: if (test_29 (&error)) {
9206: printf ("Test 29: Namespace lookup support [ OK ]\n");
9207: }else {
9208: printf ("Test 29: Namespace lookup support [ FAILED ]\n (CODE: %d) %s\n",
9209: axl_error_get_code (error), axl_error_get (error));
9210: axl_error_free (error);
9211: return -1;
9212: }
9213:
9214: #endif /* end #ifdef AXL_NS_SUPPORT */
9215:
9216: if (test_30 (&error)) {
9217: printf ("Test 30: DTD attribute validation support [ OK ]\n");
9218: }else {
9219: printf ("Test 30: DTD attribute validation support [ FAILED ]\n (CODE: %d) %s\n",
9220: axl_error_get_code (error), axl_error_get (error));
9221: axl_error_free (error);
9222: return -1;
9223: }
9224:
9225: if (test_31 (&error)) {
9226: printf ("Test 31: DTD attribute validation (ID support) [ OK ]\n");
9227: }else {
9228: printf ("Test 31: DTD attribute validation (ID support) [ FAILED ]\n (CODE: %d) %s\n",
9229: axl_error_get_code (error), axl_error_get (error));
9230: axl_error_free (error);
9231: return -1;
9232: }
9233:
9234: if (test_32 (&error)) {
9235: printf ("Test 32: DTD attribute validation (IDREF support) [ OK ]\n");
9236: }else {
9237: printf ("Test 32: DTD attribute validation (IDREF support) [ FAILED ]\n (CODE: %d) %s\n",
9238: axl_error_get_code (error), axl_error_get (error));
9239: axl_error_free (error);
9240: return -1;
9241: }
9242:
9243: if (test_33 (&error)) {
9244: printf ("Test 33: Recursive root node replace [ OK ]\n");
9245: }else {
9246: printf ("Test 33: Recursive root node replace [ FAILED ]\n (CODE: %d) %s\n",
9247: axl_error_get_code (error), axl_error_get (error));
9248: axl_error_free (error);
9249: return -1;
9250: }
9251:
9252: if (test_34 (&error)) {
9253: printf ("Test 34: axl trim bug (19/06/2007) [ OK ]\n");
9254: }else {
9255: printf ("Test 34: axl trim bug (19/06/2007) [ FAILED ]\n (CODE: %d) %s\n",
9256: axl_error_get_code (error), axl_error_get (error));
9257: axl_error_free (error);
9258: return -1;
9259: }
9260:
9261: if (test_35 (&error)) {
9262: printf ("Test 35: axl_doc_parse_from_file bug (20/06/2007) [ OK ]\n");
9263: }else {
9264: printf ("Test 35: axl_doc_parse_from_file bug (20/06/2007) [ FAILED ]\n (CODE: %d) %s\n",
9265: axl_error_get_code (error), axl_error_get (error));
9266: axl_error_free (error);
9267: return -1;
9268: }
9269:
9270: if (test_36 (&error)) {
9271: printf ("Test 36: deattach root node [ OK ]\n");
9272: }else {
9273: printf ("Test 36: deattach root node [ FAILED ]\n (CODE: %d) %s\n",
9274: axl_error_get_code (error), axl_error_get (error));
9275: axl_error_free (error);
9276: return -1;
9277: }
9278:
9279: if (test_37 (&error)) {
9280: printf ("Test 37: clearing xml node content [ OK ]\n");
9281: }else {
9282: printf ("Test 37: clearing xml node content [ FAILED ]\n (CODE: %d) %s\n",
9283: axl_error_get_code (error), axl_error_get (error));
9284: axl_error_free (error);
9285: return -1;
9286: }
9287:
9288: if (test_38 (&error)) {
9289: printf ("Test 38: IDREF dtd error found (23/06/2007) [ OK ]\n");
9290: }else {
9291: printf ("Test 38: IDREF dtd error found (23/06/2007) [ FAILED ]\n (CODE: %d) %s\n",
9292: axl_error_get_code (error), axl_error_get (error));
9293: axl_error_free (error);
9294: return -1;
9295: }
9296:
9297: if (test_39 (&error)) {
9298: printf ("Test 39: Inline dtd support [ OK ]\n");
9299: }else {
9300: printf ("Test 39: Inline dtd support [ FAILED ]\n (CODE: %d) %s\n",
9301: axl_error_get_code (error), axl_error_get (error));
9302: axl_error_free (error);
9303: return -1;
9304: }
9305:
9306: if (test_40 (&error)) {
9307: printf ("Test 40: Avoid recursive content inclusion into coments [ OK ]\n");
9308: }else {
9309: printf ("Test 40: Avoid recursive content inclusion into coments [ FAILED ]\n (CODE: %d) %s\n",
9310: axl_error_get_code (error), axl_error_get (error));
9311: axl_error_free (error);
9312: return -1;
9313: }
9314:
9315: if (test_41 (&error)) {
9316: printf ("Test 41: Extended encoding support (through axl-babel) [ OK ]\n");
9317: }else {
9318: printf ("Test 41: Extended encoding support (through axl-babel) [ FAILED ]\n (CODE: %d) %s\n",
9319: axl_error_get_code (error), axl_error_get (error));
9320: axl_error_free (error);
9321: return -1;
9322: }
9323:
9324: if (test_42 (&error)) {
9325: printf ("Test 42: Checking nested CDATA support (including ']]>', '<![CDATA[' or xml documents with '<![CDATA[..]]>' decls) [ OK ]\n");
9326: }else {
9327: printf ("Test 42: Checking nested CDATA support CDATA declaration (including ']]>', '<![CDATA[' or xml documents with '<![CDATA[..]]>' decls) [ FAILED ]\n (CODE: %d) %s\n",
9328: axl_error_get_code (error), axl_error_get (error));
9329: axl_error_free (error);
9330: return -1;
9331: }
9332:
9333: if (test_43 (&error)) {
9334: printf ("Test 43: Memory leak check with root nodes [ OK ]\n");
9335: }else {
9336: printf ("Test 43: Memory leak check with root nodes [ FAILED ]\n (CODE: %d) %s\n",
9337: axl_error_get_code (error), axl_error_get (error));
9338: axl_error_free (error);
9339: return -1;
9340: }
9341:
9342: if (test_44 (&error)) {
9343: printf ("Test 44: DTD fix (optional child after one to many child spec) [ OK ]\n");
9344: }else {
9345: printf ("Test 44: DTD fix (optional child after one to many child spec) [ FAILED ]\n (CODE: %d) %s\n",
9346: axl_error_get_code (error), axl_error_get (error));
9347: axl_error_free (error);
9348: return -1;
9349: }
9350:
9351: if (test_45 (&error)) {
9352: printf ("Test 45: Fix attribute added twice [ OK ]\n");
9353: }else {
9354: printf ("Test 45: Fix attribute added twice [ FAILED ]\n (CODE: %d) %s\n",
9355: axl_error_get_code (error), axl_error_get (error));
9356: axl_error_free (error);
9357: return -1;
9358: }
9359:
9360: /* cleanup axl library */
9361: axl_end ();
9362: return 0;
9363: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>