Annotation of gpl/axl/test/test_01.c, revision 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>