summaryrefslogtreecommitdiff
path: root/test/testutils/load.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/testutils/load.c')
-rw-r--r--test/testutils/load.c151
1 files changed, 151 insertions, 0 deletions
diff --git a/test/testutils/load.c b/test/testutils/load.c
new file mode 100644
index 0000000..74cc009
--- /dev/null
+++ b/test/testutils/load.c
@@ -0,0 +1,151 @@
+/*
+ * This file is part of libdom test suite.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sys/types.h>
+#include <sys/uio.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#include <libwapcaplet/libwapcaplet.h>
+
+// For parsers
+#include <dom/dom.h>
+#include <xmlparser.h>
+#include <parser.h>
+#include <errors.h>
+
+#include "utils.h"
+
+extern lwc_context *ctx;
+
+/**
+ * Load the file as it is a XML file
+ *
+ * \param file The file path
+ * \param willBeModified Whether this file will be modified, not used
+ */
+dom_document *load_xml(char *file, bool willBeModified)
+{
+ dom_xml_parser *parser = NULL;
+ int handle;
+ int readed;
+ dom_xml_error error;
+ dom_document *ret;
+ char buffer[1024];
+
+ UNUSED(willBeModified);
+
+ parser = dom_xml_parser_create(NULL, NULL,
+ myrealloc, NULL, mymsg, NULL, ctx);
+ if (parser == NULL) {
+ fprintf(stderr, "Can't create XMLParser\n");
+ return NULL;
+ }
+
+ handle = open(file, O_RDONLY);
+ if (handle == -1) {
+ dom_xml_parser_destroy(parser);
+ fprintf(stderr, "Can't open test input file: %s\n", file);
+ return NULL;
+ }
+
+ readed = read(handle, buffer, 1024);
+ error = dom_xml_parser_parse_chunk(parser, buffer, readed);
+ if (error != DOM_XML_OK) {
+ dom_xml_parser_destroy(parser);
+ fprintf(stderr, "Parsing errors occur\n");
+ return NULL;
+ }
+
+ while(readed == 1024) {
+ readed = read(handle, buffer, 1024);
+ error = dom_xml_parser_parse_chunk(parser, buffer, readed);
+ if (error != DOM_XML_OK) {
+ dom_xml_parser_destroy(parser);
+ fprintf(stderr, "Parsing errors occur\n");
+ return NULL;
+ }
+ }
+
+ error = dom_xml_parser_completed(parser);
+ if (error != DOM_XML_OK) {
+ dom_xml_parser_destroy(parser);
+ fprintf(stderr, "Parsing error when construct DOM\n");
+ return NULL;
+ }
+
+ ret = dom_xml_parser_get_document(parser);
+ dom_xml_parser_destroy(parser);
+
+ return ret;
+}
+
+/**
+ * Load the file as it is a HTML file
+ *
+ * \param file The file path
+ * \param willBeModified Whether this file will be modified, not used
+ */
+dom_document *load_html(char *file, bool willBeModified)
+{
+ dom_hubbub_parser *parser = NULL;
+ int handle;
+ int readed;
+ dom_hubbub_error error;
+ dom_document *ret;
+ char buffer[1024];
+
+ UNUSED(willBeModified);
+
+ parser = dom_hubbub_parser_create("data/Aliases", NULL, true,
+ myrealloc, NULL, mymsg, NULL, ctx);
+ if (parser == NULL) {
+ fprintf(stderr, "Can't create XMLParser\n");
+ return NULL;
+ }
+
+ handle = open(file, O_RDONLY);
+ if (handle == -1) {
+ dom_hubbub_parser_destroy(parser);
+ fprintf(stderr, "Can't open test input file: %s\n", file);
+ return NULL;
+ }
+
+ readed = read(handle, buffer, 1024);
+ error = dom_hubbub_parser_parse_chunk(parser, buffer, readed);
+ if (error != DOM_HUBBUB_OK) {
+ dom_hubbub_parser_destroy(parser);
+ fprintf(stderr, "Parsing errors occur\n");
+ return NULL;
+ }
+
+ while(readed == 1024) {
+ readed = read(handle, buffer, 1024);
+ error = dom_hubbub_parser_parse_chunk(parser, buffer, readed);
+ if (error != DOM_HUBBUB_OK) {
+ dom_hubbub_parser_destroy(parser);
+ fprintf(stderr, "Parsing errors occur\n");
+ return NULL;
+ }
+ }
+
+ error = dom_hubbub_parser_completed(parser);
+ if (error != DOM_HUBBUB_OK) {
+ dom_hubbub_parser_destroy(parser);
+ fprintf(stderr, "Parsing error when construct DOM\n");
+ return NULL;
+ }
+
+ ret = dom_hubbub_parser_get_document(parser);
+ dom_hubbub_parser_destroy(parser);
+
+ return ret;
+}