diff options
| author | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-09 15:28:38 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-09 15:28:38 +0100 |
| commit | 210404a73706993d197c1290d5a411394e176fbe (patch) | |
| tree | 93c3ea9fc4691ca42f26dd92c6e14627af0b47af /libs/xml.c | |
| parent | a65e876f3277a7d7fca6e5129ac3e200dae2d0dc (diff) | |
remove unused lib files
Diffstat (limited to 'libs/xml.c')
| -rw-r--r-- | libs/xml.c/.github/workflows/ci.yaml | 24 | ||||
| -rw-r--r-- | libs/xml.c/.gitignore | 2 | ||||
| -rw-r--r-- | libs/xml.c/.mc/rebuild.sh | 21 | ||||
| -rw-r--r-- | libs/xml.c/.mc/ubuntu-22.04.yaml | 8 | ||||
| -rw-r--r-- | libs/xml.c/CMakeLists.txt | 51 | ||||
| -rw-r--r-- | libs/xml.c/test/CMakeLists.txt | 128 | ||||
| -rw-r--r-- | libs/xml.c/test/example.c | 96 | ||||
| -rw-r--r-- | libs/xml.c/test/test-attributes.xml | 1 | ||||
| -rw-r--r-- | libs/xml.c/test/test-huitre39.c | 181 | ||||
| -rw-r--r-- | libs/xml.c/test/test-xml-c.c | 265 | ||||
| -rw-r--r-- | libs/xml.c/test/test-xml-cpp.cpp | 222 | ||||
| -rw-r--r-- | libs/xml.c/test/test.xml | 7 |
12 files changed, 0 insertions, 1006 deletions
diff --git a/libs/xml.c/.github/workflows/ci.yaml b/libs/xml.c/.github/workflows/ci.yaml deleted file mode 100644 index 2f9a4a9..0000000 --- a/libs/xml.c/.github/workflows/ci.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: CI - -# Controls when the action will run. Triggers the workflow on push or pull -# request events but only for the main branch -on: - push: - branches: - - master - pull_request: - branches: [ master ] - schedule: - - cron: '0 0 15 * *' - - -jobs: - ci: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v2 - - - name: Build and Test - run: npx --package mini-cross@0.15.2 mc --no-tty ubuntu-22.04 .mc/rebuild.sh - diff --git a/libs/xml.c/.gitignore b/libs/xml.c/.gitignore deleted file mode 100644 index bdc5af0..0000000 --- a/libs/xml.c/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*~ -build diff --git a/libs/xml.c/.mc/rebuild.sh b/libs/xml.c/.mc/rebuild.sh deleted file mode 100644 index 67443c3..0000000 --- a/libs/xml.c/.mc/rebuild.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -e - - -# @see https://stackoverflow.com/a/1482133 -DIRECTORY_OF_SCRIPT=`dirname "$(readlink -f "$0")"` - -SOURCE_DIRECTORY="${DIRECTORY_OF_SCRIPT}/.." -BUILD_DIRECTORY="${DIRECTORY_OF_SCRIPT}/../build" - - -if [ -d "${BUILD_DIRECTORY}" ]; then - rm -rf "${BUILD_DIRECTORY}" -fi -mkdir "${BUILD_DIRECTORY}" - -(cd "${BUILD_DIRECTORY}" && cmake -DCMAKE_BUILD_TYPE=Release ..) -make --directory "${BUILD_DIRECTORY}" --silent -make --directory "${BUILD_DIRECTORY}" --silent test - diff --git a/libs/xml.c/.mc/ubuntu-22.04.yaml b/libs/xml.c/.mc/ubuntu-22.04.yaml deleted file mode 100644 index 762305c..0000000 --- a/libs/xml.c/.mc/ubuntu-22.04.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -base: ubuntu:22.04 -install: - - cmake - - g++ - - gcc - - valgrind ---- diff --git a/libs/xml.c/CMakeLists.txt b/libs/xml.c/CMakeLists.txt deleted file mode 100644 index 698dc78..0000000 --- a/libs/xml.c/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -# Project setup -project(xml C CXX) -set(VERSION_MAJOR "0") -set(VERSION_MINOR "2") -set(VERSION_PATCH "0") -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) - - -# Define main library target -add_library(xml STATIC "") - - -# Compiler setup -target_compile_options( - xml - PRIVATE - -std=c11 -) - - -# Options -option(XML_PARSER_VERBOSE "Enable to be told everything the xml parser does" OFF) - -if(XML_PARSER_VERBOSE) - target_compile_definitions( - xml - PRIVATE - XML_PARSER_VERBOSE - ) -endif(XML_PARSER_VERBOSE) - - -# Sources -target_sources( - xml - PRIVATE - "${CMAKE_CURRENT_LIST_DIR}/src/xml.c" -) - - -target_include_directories( - xml - PUBLIC - "${CMAKE_CURRENT_LIST_DIR}/src/" -) - - -# Build unit cases -enable_testing() -add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/test") - diff --git a/libs/xml.c/test/CMakeLists.txt b/libs/xml.c/test/CMakeLists.txt deleted file mode 100644 index 09097d0..0000000 --- a/libs/xml.c/test/CMakeLists.txt +++ /dev/null @@ -1,128 +0,0 @@ -# xml.c / test -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) - - - -# Example -add_executable( - "${PROJECT_NAME}-example" - "${CMAKE_CURRENT_LIST_DIR}/example.c" -) - -target_compile_options( - "${PROJECT_NAME}-example" - PRIVATE - -std=c11 -) - -target_link_libraries( - "${PROJECT_NAME}-example" - PRIVATE - xml -) - -add_test( - NAME "${PROJECT_NAME}-example" - COMMAND "${PROJECT_NAME}-example" -) - - - -# Test cases -FILE( COPY "${CMAKE_CURRENT_LIST_DIR}/test.xml" - DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" -) - -FILE( COPY "${CMAKE_CURRENT_LIST_DIR}/test-attributes.xml" - DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" -) - - - -# Test (C) -add_executable( - "${PROJECT_NAME}-test-c" - "${CMAKE_CURRENT_LIST_DIR}/test-xml-c.c" -) - -target_compile_options( - "${PROJECT_NAME}-test-c" - PRIVATE - -std=c11 -) - -target_link_libraries( - "${PROJECT_NAME}-test-c" - PRIVATE - xml -) - - -add_test( - NAME "${PROJECT_NAME}-test-c" - COMMAND "${PROJECT_NAME}-test-c" -) - -add_test( - NAME "${PROJECT_NAME}-test-c-valgrind" - COMMAND valgrind --tool=memcheck --leak-check=full --track-origins=yes -v "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-test-c" -) - - - -# Test (C++) -add_executable( - "${PROJECT_NAME}-test-cpp" - "${CMAKE_CURRENT_LIST_DIR}/test-xml-cpp.cpp" -) - -target_compile_options( - "${PROJECT_NAME}-test-cpp" - PRIVATE - -std=c++11 -) - -target_link_libraries( - "${PROJECT_NAME}-test-cpp" - PRIVATE - xml -) - - -add_test( - NAME "${PROJECT_NAME}-test-cpp" - COMMAND "${PROJECT_NAME}-test-cpp" -) - - -add_test( - NAME "${PROJECT_NAME}-test-cpp-valgrind" - COMMAND valgrind --tool=memcheck --leak-check=full --track-origins=yes -v "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-test-cpp" -) - - - -# Test huitre39 -add_executable( - "${PROJECT_NAME}-test-huitre39" - "${CMAKE_CURRENT_LIST_DIR}/test-huitre39.c" -) - -target_compile_options( - "${PROJECT_NAME}-test-huitre39" - PRIVATE - -std=c11 -) - -target_link_libraries( - "${PROJECT_NAME}-test-huitre39" - PRIVATE - xml -) - - -add_test( - NAME "${PROJECT_NAME}-test-huitre39" - COMMAND "${PROJECT_NAME}-test-huitre39" -) - diff --git a/libs/xml.c/test/example.c b/libs/xml.c/test/example.c deleted file mode 100644 index ebf605c..0000000 --- a/libs/xml.c/test/example.c +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Copyright (c) 2012 ooxi/xml.c - * https://github.com/ooxi/xml.c - * - * This software is provided 'as-is', without any express or implied warranty. - * In no event will the authors be held liable for any damages arising from the - * use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software in a - * product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source distribution. - */ -#include <stdbool.h> -#include <stdio.h> -#include <stdlib.h> -#include <xml.h> - - - -int main(int argc, char** argv) { - - /* XML source, could be read from disk - */ - uint8_t* source = "" - "<Root>" - "<Hello>World</Hello>" - "<This>" - "<Is>:-)</Is>" - "<An>:-O</An>" - "<Example>:-D</Example>" - "</This>" - "</Root>" - ; - - - /* Parse the document - * - * Watch out: Remember not to free the source until you have freed the - * document itself. If you have to free the source before, supply a - * copy to xml_parse_document which can be freed together with the - * document (`free_buffer' argument to `xml_document_free') - */ - struct xml_document* document = xml_parse_document(source, strlen(source)); - - /* You _have_ to check the result of `xml_parse_document', if it's 0 - * then the source could not be parsed. If you think this is a bug in - * xml.c, than use a debug build (cmake -DCMAKE_BUILD_TYPE=Debug) which - * will verbosely tell you about the parsing process - */ - if (!document) { - printf("Could parse document\n"); - exit(EXIT_FAILURE); - } - struct xml_node* root = xml_document_root(document); - - - /* Say Hello World :-) - */ - struct xml_node* root_hello = xml_node_child(root, 0); - struct xml_string* hello = xml_node_name(root_hello); - struct xml_string* world = xml_node_content(root_hello); - - /* Watch out: `xml_string_copy' will not 0-terminate your buffers! (but - * `calloc' will :-) - */ - uint8_t* hello_0 = calloc(xml_string_length(hello) + 1, sizeof(uint8_t)); - uint8_t* world_0 = calloc(xml_string_length(world) + 1, sizeof(uint8_t)); - xml_string_copy(hello, hello_0, xml_string_length(hello)); - xml_string_copy(world, world_0, xml_string_length(world)); - - printf("%s %s\n", hello_0, world_0); - free(hello_0); - free(world_0); - - - /* Extract amount of Root/This children - */ - struct xml_node* root_this = xml_node_child(root, 1); - printf("Root/This has %lu children\n", (unsigned long)xml_node_children(root_this)); - - - /* Remember to free the document or you'll risk a memory leak - */ - xml_document_free(document, false); -} - diff --git a/libs/xml.c/test/test-attributes.xml b/libs/xml.c/test/test-attributes.xml deleted file mode 100644 index 7832c02..0000000 --- a/libs/xml.c/test/test-attributes.xml +++ /dev/null @@ -1 +0,0 @@ -<Test value="2" value_2="Hello"></Test> diff --git a/libs/xml.c/test/test-huitre39.c b/libs/xml.c/test/test-huitre39.c deleted file mode 100644 index 43b9ae7..0000000 --- a/libs/xml.c/test/test-huitre39.c +++ /dev/null @@ -1,181 +0,0 @@ -#include <stdbool.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "./xml.h" - - - - - -/** - * Will halt the program iff assertion fails - */ -static void _assert_that(_Bool condition, char const* message, char const* func, char const* file, int line) { - if (!condition) { - fprintf(stderr, "Assertion failed: %s, in %s (%s:%i)\n", message, func, file, line); - exit(EXIT_FAILURE); - } -} - -#define assert_that(condition, message) \ - _assert_that(condition, message, __func__, __FILE__, __LINE__) - - - - - -/** - * Behaves similar to `getElementsByTagName`, however returns just the first and - * not all elements with a given tag name - * - * @param base Node in tree which should be the start of te recursive search - * @param 0-terminated tag name, case sensitive - * - * @return First node below `base` iff found, otherwise 0 - * @warning Depth-First search! - * - * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName - */ -static struct xml_node* get_node_by_name(struct xml_node* base, uint8_t* name) { - - - /* Check whether `base` already has the tag name we are searching for - */ - size_t const name_length = strlen(name); - - uint8_t* base_name = xml_easy_name(base); - size_t const base_name_length = strlen(base_name); - - - /* Length of `name` and `base_name` do match, we should now do a real - * comparison - */ - if (name_length == base_name_length) { - int const rs = memcmp(name, base_name, name_length); - - /* Names match! We have found an element which fullfills our - * search criteria - */ - if (!rs) { - free(base_name); - return base; - } - } - - - /* Unfortunately, `base` is not the element we are looking for :-( - */ - free(base_name); - - - /* Let's take a look at the children of `base` - */ - size_t const number_of_children = xml_node_children(base); - - - /* No children → No luck with base - */ - if (!number_of_children) { - return 0; - } - - - /* Recursivly look through all children - */ - size_t child = 0; for (; child < number_of_children; ++child) { - struct xml_node* child_node = xml_node_child(base, child); - - /* Maybe this child does contain the element we are looking for? - */ - struct xml_node* search_result = get_node_by_name( - child_node, name - ); - - /* We are lucky! - */ - if (search_result) { - return search_result; - } - } - - - /* No luck :-( - */ - return 0; -} - - - - - -int main(int argc, char** argv) { - - /* XML source, could be read from disk - */ - uint8_t* source = "" - "<Root>" - "<Hello>World</Hello>" - - "<Functions>" - "<Function>" - "<as>testas one</as>" - "<os>testos</os>" - "</Function>" - - "<Function>" - "<is>testis</is>" - "<us>testus</us>" - "<ls>testls</ls>" - "</Function>" - - "<Function>" - "<mn>testmn</mn>" - "<as>testas two</as>" - "</Function>" - "</Functions>" - "</Root>" - ; - - struct xml_document* document = xml_parse_document(source, strlen(source)); - - if (!document) { - printf("Could parse document\n"); - exit(EXIT_FAILURE); - } - struct xml_node* root = xml_document_root(document); - - - - /* We expect to find Root / Functions / Function#1 / us - */ - struct xml_node* us = get_node_by_name(root, "us"); - assert_that(us, "Did not find element by tag name `us'"); - - uint8_t* us_content = xml_easy_content(us); - assert_that(us_content, "`us' should have content"); - assert_that(!strcmp(us_content, "testus"), "Unexpected content for node `us'"); - free(us_content); - - - /* We expect to find Root / Functions / Function#0 / as - */ - struct xml_node* as = get_node_by_name(root, "as"); - assert_that(as, "Did not find element by tag name `as'"); - - uint8_t* as_content = xml_easy_content(as); - assert_that(as_content, "`as' should have content"); - assert_that(!strcmp(as_content, "testas one"), "Unexpected content for first `as' node"); - free(as_content); - - - /* We do not expect do find a node with tag name `does_not_exist' - */ - struct xml_node* does_not_exist = get_node_by_name(root, "does_not_exist"); - assert_that(!does_not_exist, "Found node that should not exist"); - - - - xml_document_free(document, false); -} - diff --git a/libs/xml.c/test/test-xml-c.c b/libs/xml.c/test/test-xml-c.c deleted file mode 100644 index ee54bac..0000000 --- a/libs/xml.c/test/test-xml-c.c +++ /dev/null @@ -1,265 +0,0 @@ -/** - * Copyright (c) 2012 ooxi/xml.c - * https://github.com/ooxi/xml.c - * - * This software is provided 'as-is', without any express or implied warranty. - * In no event will the authors be held liable for any damages arising from the - * use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software in a - * product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source distribution. - */ -#include <alloca.h> -#include <stdbool.h> -#include <stdio.h> -#include <stdlib.h> -#include <xml.h> - - - - - -/** - * Will halt the program iff assertion fails - */ -static void _assert_that(_Bool condition, char const* message, char const* func, char const* file, int line) { - if (!condition) { - fprintf(stderr, "Assertion failed: %s, in %s (%s:%i)\n", message, func, file, line); - exit(EXIT_FAILURE); - } -} - -#define assert_that(condition, message) \ - _assert_that(condition, message, __func__, __FILE__, __LINE__) - - - -/** - * @return true iff xml string equals the c string - */ -static _Bool string_equals(struct xml_string* a, char const* b) { - size_t a_length = xml_string_length(a); - size_t b_length = strlen(b); - - uint8_t* a_buffer = alloca((a_length + 1) * sizeof(uint8_t)); - xml_string_copy(a, a_buffer, a_length); - a_buffer[a_length] = 0; - - if (a_length != b_length) { - fprintf(stderr, "string_equals: %s#%i <> %s#%i\n", a_buffer, (int)a_length, b, (int)b_length); - return false; - } - - size_t i = 0; for (; i < a_length; ++i) { - if (a_buffer[i] != b[i]) { - fprintf(stderr, "string_equals: %s <> %s\n", a_buffer, b); - return false; - } - } - - return true; -} - - - -/** - * Converts a static character array to an uint8_t data source - */ -#define SOURCE(source, content) \ - uint8_t* source = calloc(strlen(content) + 1, sizeof(uint8_t)); \ - { char const* content_string = content; \ - memcpy(source, content_string, strlen(content) + 1); \ - } - - - -/** - * Tries to parse a simple document containing only one tag - */ -static void test_xml_parse_document_0() { - SOURCE(source, "<Hello>World</Hello>"); -// uint8_t* source = malloc((1 + strlen("<Hello>World</Hello>")) * sizeof(uint8_t)); -// { char const* content_string = "<Hello>World</Hello>"; -// memcpy(source, content_string, strlen("<Hello>World</Hello>") + 1); -// } - - struct xml_document* document = xml_parse_document(source, strlen(source)); - assert_that(document, "Could not parse document"); - - struct xml_node* root = xml_document_root(document); - assert_that(string_equals(xml_node_name(root), "Hello"), "root node name must be `Hello'"); - assert_that(string_equals(xml_node_content(root), "World"), "root node content must be `World'"); - - xml_document_free(document, true); -} - -/** - * Tries to parse a document containing multiple tags - */ -static void test_xml_parse_document_1() { - SOURCE(source, "" - "<Parent>\n" - "\t<Child>\n" - "\t\tFirst content\n" - "\t</Child>\n" - "\t<Child>\n" - "\t\tSecond content\n" - "\t</Child>\n" - "</Parent>\n" - ); - struct xml_document* document = xml_parse_document(source, strlen(source)); - assert_that(document, "Could not parse document"); - - struct xml_node* root = xml_document_root(document); - assert_that(string_equals(xml_node_name(root), "Parent"), "root node name must be `Parent'"); - assert_that(2 == xml_node_children(root), "root must have two children"); - - struct xml_node* first_child = xml_node_child(root, 0); - struct xml_node* second_child = xml_node_child(root, 1); - assert_that(first_child && second_child, "Failed retrieving the children of root"); - - struct xml_node* third_child = xml_node_child(root, 2); - assert_that(!third_child, "root has a third child where non should be"); - - assert_that(string_equals(xml_node_name(first_child), "Child"), "first_child node name must be `Child'"); - assert_that(string_equals(xml_node_content(first_child), "First content"), "first_child node content must be `First content'"); - assert_that(string_equals(xml_node_name(second_child), "Child"), "second_child node name must be `Child'"); - assert_that(string_equals(xml_node_content(second_child), "Second content"), "second_child node content must be `tSecond content'"); - - xml_document_free(document, true); -} - - - -/** - * Tests the eas functionality - */ -static void test_xml_parse_document_2() { - SOURCE(source, "" - "<Parent>\n" - "\t<Child>\n" - "\t\tFirst content\n" - "\t</Child>\n" - "\t<This><Is>\n" - "<A><Test>Content A</Test></A>\n" - "<B><Test>Content B</Test></B>\n" - "\t</Is></This>\n" - "\t<Child>\n" - "\t\tSecond content\n" - "\t</Child>\n" - "</Parent>\n" - ); - struct xml_document* document = xml_parse_document(source, strlen(source)); - assert_that(document, "Could not parse document"); - - struct xml_node* root = xml_document_root(document); - assert_that(string_equals(xml_node_name(root), "Parent"), "root node name must be `Parent'"); - assert_that(3 == xml_node_children(root), "root must have two children"); - - struct xml_node* test_a = xml_easy_child(root, "This", "Is", "A", "Test", 0); - assert_that(test_a, "Cannot find Parent/This/Is/A/Test"); - assert_that(string_equals(xml_node_content(test_a), "Content A"), "Content of Parent/This/Is/A/Test must be `Content A'"); - - struct xml_node* test_b = xml_easy_child(root, "This", "Is", "B", "Test", 0); - assert_that(test_b, "Cannot find Parent/This/Is/B/Test"); - assert_that(string_equals(xml_node_content(test_b), "Content B"), "Content of Parent/This/Is/B/Test must be `Content B'"); - - struct xml_node* test_c = xml_easy_child(root, "This", "Is", "C", "Test", 0); - assert_that(!test_c, "Must not find Parent/This/Is/C/Test because no such path exists"); - - struct xml_node* must_be_null = xml_easy_child(root, "Child"); - assert_that(!must_be_null, "Parent/Child cannot be a valid expression, because there are two children named `Child' in `Parent'"); - - uint8_t* name_is = xml_easy_name(xml_easy_child(root, "This", "Is", 0)); - assert_that(!strcmp(name_is, "Is"), "Name of Parent/This/Is must be `Is'"); - free(name_is); - - uint8_t* content_a = xml_easy_content(test_a); - assert_that(!strcmp(content_a, "Content A"), "Content of Parent/This/Is/A/Test must be `Content A'"); - free(content_a); - - xml_document_free(document, true); -} - - - -/** - * Tests the xml_open_document functionality - */ -static void test_xml_parse_document_3() { - #define FILE_NAME "test.xml" - FILE* handle = fopen(FILE_NAME, "rb"); - assert_that(handle, "Cannot open " FILE_NAME); - - struct xml_document* document = xml_open_document(handle); - assert_that(document, "Cannot parse " FILE_NAME); - - struct xml_node* element = xml_easy_child( - xml_document_root(document), "Element", "With", 0 - ); - assert_that(element, "Cannot find Document/Element/With"); - assert_that(string_equals(xml_node_content(element), "Child"), "Content of Document/Element/With must be `Child'"); - - xml_document_free(document, true); - #undef FILE_NAME -} - - - -/** - * Test parsing of attributes - * - * @author Isty001 - * @see https://github.com/Isty001/ - */ -static void test_xml_parse_attributes() { - #define FILE_NAME "test-attributes.xml" - FILE* handle = fopen(FILE_NAME, "rb"); - assert_that(handle, "Cannot open " FILE_NAME); - - struct xml_document* document = xml_open_document(handle); - assert_that(document, "Cannot parse " FILE_NAME); - - struct xml_node* element = xml_easy_child( - xml_document_root(document), 0 - ); - - assert_that(element, "Cannot find Document/Element/With"); - assert_that(2 == xml_node_attributes(element), "Should have 2 attributes"); - - assert_that(string_equals(xml_node_attribute_name(element, 0), "value"), "Content of Document/Element/With must be `Child'"); - assert_that(string_equals(xml_node_attribute_content(element, 0), "2"), "First attribute's content should be \"2\""); - - assert_that(string_equals(xml_node_attribute_name(element, 1), "value_2"), "Content of Document/Element/With must be `Child'"); - assert_that(string_equals(xml_node_attribute_content(element, 1), "Hello"), "Second attribute's content should be Hello"); - - xml_document_free(document, true); - #undef FILE_NAME -} - - - -/** - * Console interface - */ -int main(int argc, char** argv) { - test_xml_parse_document_0(); - test_xml_parse_document_1(); - test_xml_parse_document_2(); - test_xml_parse_document_3(); - test_xml_parse_attributes(); - - fprintf(stdout, "All tests passed :-)\n"); - exit(EXIT_SUCCESS); -} diff --git a/libs/xml.c/test/test-xml-cpp.cpp b/libs/xml.c/test/test-xml-cpp.cpp deleted file mode 100644 index 513d14b..0000000 --- a/libs/xml.c/test/test-xml-cpp.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/** - * Copyright (c) 2012 ooxi/xml.c - * https://github.com/ooxi/xml.c - * - * This software is provided 'as-is', without any express or implied warranty. - * In no event will the authors be held liable for any damages arising from the - * use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software in a - * product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source distribution. - */ - -#include <iostream> -#include <cstdlib> -#include <cstdio> -#include <xml.h> - -/** - * Will halt the program iff assertion fails - */ -static void _assert_that(bool condition, const char* message, - const char* func, const char* file, int line) { - if (!condition) { - std::cerr << "Assertion failed: " << message << ", in " << func << " (" - << file << ":" << line << ")\n"; - exit(EXIT_FAILURE); - } -} - -#define assert_that(condition, message) \ - _assert_that(condition, message, __func__, __FILE__, __LINE__) - -/** - * @return true iff xml string equals the c string - */ -static bool string_equals(struct xml_string* a, const char* b) { - size_t a_length = xml_string_length(a); - size_t b_length = strlen(b); - uint8_t* a_buffer = new uint8_t[((a_length + 1) * sizeof(uint8_t))]; - xml_string_copy(a, a_buffer, a_length); - a_buffer[a_length] = 0; - if (a_length != b_length) { - std::cerr << "string_equals: " << a_buffer << "#" << a_length << " <> " - << b << "#" << b_length << "\n"; - delete[] a_buffer; - return false; - } - size_t i = 0; for (; i < a_length; ++i) { - if (a_buffer[i] != b[i]) { - std::cerr << "string_equals: " << a_buffer << " <> " << b << "\n"; - delete[] a_buffer; - return false; - } - } - delete[] a_buffer; - return true; -} - - -/** - * Converts a static character array to an uint8_t data source which can be - * freed - */ -#define SOURCE(source, content) \ - uint8_t* source = (uint8_t*)calloc(strlen(content) + 1, sizeof(uint8_t)); \ - memcpy(source, (content), strlen(content) + 1); \ - - -/** - * Tries to parse a simple document containing only one tag - */ -static void test_xml_parse_document_0() { - SOURCE(source, "<Hello>World</Hello>"); - // uint8_t* source = malloc((1 + strlen("<Hello>World</Hello>")) * - // sizeof(uint8_t)); - // { - // const char* content_string = "<Hello>World</Hello>"; - // memcpy(source, content_string, strlen("<Hello>World</Hello>") + 1); - // } - struct xml_document* document = xml_parse_document(source, - strlen((const char *)source)); - assert_that(document, "Could not parse document"); - struct xml_node* root = xml_document_root(document); - assert_that(string_equals(xml_node_name(root), "Hello"), - "root node name must be `Hello'"); - assert_that(string_equals(xml_node_content(root), "World"), - "root node content must be `World'"); - xml_document_free(document, true); -} - -/** - * Tries to parse a document containing multiple tags - */ -static void test_xml_parse_document_1() { - SOURCE(source, "" - "<Parent>\n" - "\t<Child>\n" - "\t\tFirst content\n" - "\t</Child>\n" - "\t<Child>\n" - "\t\tSecond content\n" - "\t</Child>\n" - "</Parent>\n" - ); - struct xml_document* document = xml_parse_document(source, - strlen((const char *)source)); - assert_that(document, "Could not parse document"); - struct xml_node* root = xml_document_root(document); - assert_that(string_equals(xml_node_name(root), "Parent"), - "root node name must be `Parent'"); - assert_that(2 == xml_node_children(root), "root must have two children"); - struct xml_node* first_child = xml_node_child(root, 0); - struct xml_node* second_child = xml_node_child(root, 1); - assert_that(first_child && second_child, - "Failed retrieving the children of root"); - struct xml_node* third_child = xml_node_child(root, 2); - assert_that(!third_child, "root has a third child where non should be"); - assert_that(string_equals(xml_node_name(first_child), "Child"), - "first_child node name must be `Child'"); - assert_that(string_equals(xml_node_content(first_child), "First content"), - "first_child node content must be `First content'"); - assert_that(string_equals(xml_node_name(second_child), "Child"), - "second_child node name must be `Child'"); - assert_that(string_equals(xml_node_content(second_child), "Second content"), - "second_child node content must be `tSecond content'"); - xml_document_free(document, true); -} - -/** - * Tests the eas functionality - */ -static void test_xml_parse_document_2() { - SOURCE(source, "" - "<Parent>\n" - "\t<Child>\n" - "\t\tFirst content\n" - "\t</Child>\n" - "\t<This><Is>\n" - "<A><Test>Content A</Test></A>\n" - "<B><Test>Content B</Test></B>\n" - "\t</Is></This>\n" - "\t<Child>\n" - "\t\tSecond content\n" - "\t</Child>\n" - "</Parent>\n" - ); - struct xml_document* document = xml_parse_document(source, - strlen((const char *)source)); - assert_that(document, "Could not parse document"); - struct xml_node* root = xml_document_root(document); - assert_that(string_equals(xml_node_name(root), "Parent"), - "root node name must be `Parent'"); - assert_that(3 == xml_node_children(root), - "root must have two children"); - struct xml_node* test_a = xml_easy_child(root, (uint8_t *)"This", - (uint8_t *)"Is", (uint8_t *)"A", (uint8_t *)"Test", 0); - assert_that(test_a, "Cannot find Parent/This/Is/A/Test"); - assert_that(string_equals(xml_node_content(test_a), "Content A"), - "Content of Parent/This/Is/A/Test must be `Content A'"); - struct xml_node* test_b = xml_easy_child(root, (uint8_t *)"This", - (uint8_t *)"Is", (uint8_t *)"B", (uint8_t *)"Test", 0); - assert_that(test_b, "Cannot find Parent/This/Is/B/Test"); - assert_that(string_equals(xml_node_content(test_b), "Content B"), - "Content of Parent/This/Is/B/Test must be `Content B'"); - struct xml_node* test_c = xml_easy_child(root, (uint8_t *)"This", - (uint8_t *)"Is", (uint8_t *)"C", (uint8_t *)"Test", 0); - assert_that(!test_c, - "Must not find Parent/This/Is/C/Test because no such path exists"); - struct xml_node* must_be_null = xml_easy_child(root, (uint8_t *)"Child"); - assert_that(!must_be_null, - "Parent/Child cannot be a valid expression, because there are two children " - "named `Child' in `Parent'"); - uint8_t* name_is = xml_easy_name(xml_easy_child(root, (uint8_t *)"This", - (uint8_t *)"Is", 0)); - assert_that(!strcmp((const char*)name_is, "Is"), - "Name of Parent/This/Is must be `Is'"); - free(name_is); - uint8_t* content_a = xml_easy_content(test_a); - assert_that(!strcmp((const char*)content_a, "Content A"), - "Content of Parent/This/Is/A/Test must be `Content A'"); - free(content_a); - xml_document_free(document, true); -} - -/** - * Tests the xml_open_document functionality - */ -static void test_xml_parse_document_3() { - #define FILE_NAME "test.xml" - FILE* handle = fopen(FILE_NAME, "rb"); - assert_that(handle, "Cannot open " FILE_NAME); - struct xml_document* document = xml_open_document(handle); - assert_that(document, "Cannot parse " FILE_NAME); - struct xml_node* element = xml_easy_child(xml_document_root(document), - (uint8_t *)"Element", (uint8_t *)"With", 0); - assert_that(element, "Cannot find Document/Element/With"); - assert_that(string_equals(xml_node_content(element), "Child"), - "Content of Document/Element/With must be `Child'"); - xml_document_free(document, true); - #undef FILE_NAME -} - -int main(int argc, char **argv) { - test_xml_parse_document_0(); - test_xml_parse_document_1(); - test_xml_parse_document_2(); - test_xml_parse_document_3(); - std::cout << "All tests passed :-)\n"; - exit(EXIT_SUCCESS); -} - diff --git a/libs/xml.c/test/test.xml b/libs/xml.c/test/test.xml deleted file mode 100644 index a0e1ab8..0000000 --- a/libs/xml.c/test/test.xml +++ /dev/null @@ -1,7 +0,0 @@ -<Document> - <Prefix></Prefix> - <Element> - <With>Child</With> - </Element> -</Document> - |
