react-native-nitro-xlsx 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NitroXlsx.podspec +26 -27
- package/Package.swift +31 -10
- package/README.md +1 -1
- package/android/CMakeLists.txt +20 -27
- package/package.json +2 -2
- package/scripts/run-cpp-tests.sh +1 -1
- package/thirdparty/OpenXLSX/.clang-format +118 -0
- package/thirdparty/OpenXLSX/.clang-tidy +28 -0
- package/thirdparty/OpenXLSX/.gitignore +130 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
- package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
- package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
- package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
- package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
- package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
- package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
- package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
- package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
- package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
- package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
- package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
- package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
- package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
- package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
- package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
- package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
- package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
- package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
- package/thirdparty/OpenXLSX/LICENSE.md +29 -0
- package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
- package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
- package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
- package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
- package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
- package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
- package/thirdparty/OpenXLSX/README.md +1279 -0
- package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
- package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
- package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
- package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
- package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
- package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
- package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
- package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
- package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
- package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
- package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
- package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
- package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
- package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
- package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
- package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
- package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
- package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
- package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
- package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
- package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
- package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
- package/thirdparty/OpenXLSX/vcpkg.json +24 -0
- package/thirdparty/README.md +42 -0
- package/thirdparty/miniz/.clang-format +47 -0
- package/thirdparty/miniz/.travis.yml +2 -0
- package/thirdparty/miniz/CMakeLists.txt +333 -0
- package/thirdparty/miniz/CMakePresets.json +31 -0
- package/thirdparty/miniz/ChangeLog.md +272 -0
- package/thirdparty/miniz/Config.cmake.in +1 -0
- package/thirdparty/miniz/LICENSE +22 -0
- package/thirdparty/miniz/amalgamate.sh +57 -0
- package/thirdparty/miniz/examples/example1.c +105 -0
- package/thirdparty/miniz/examples/example2.c +164 -0
- package/thirdparty/miniz/examples/example3.c +269 -0
- package/thirdparty/miniz/examples/example4.c +102 -0
- package/thirdparty/miniz/examples/example5.c +327 -0
- package/thirdparty/miniz/examples/example6.c +189 -0
- package/thirdparty/miniz/meson.build +21 -0
- package/thirdparty/miniz/miniz.c +646 -0
- package/thirdparty/miniz/miniz.h +615 -0
- package/thirdparty/miniz/miniz.pc.in +13 -0
- package/thirdparty/miniz/miniz_common.h +89 -0
- package/thirdparty/miniz/miniz_export.h +20 -0
- package/thirdparty/miniz/miniz_tdef.c +1602 -0
- package/thirdparty/miniz/miniz_tdef.h +199 -0
- package/thirdparty/miniz/miniz_tinfl.c +778 -0
- package/thirdparty/miniz/miniz_tinfl.h +150 -0
- package/thirdparty/miniz/miniz_zip.c +4895 -0
- package/thirdparty/miniz/miniz_zip.h +454 -0
- package/thirdparty/miniz/readme.md +46 -0
- package/thirdparty/miniz/test.sh +36 -0
- package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
- package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
- package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
- package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
- package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
- package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
- package/thirdparty/miniz/tests/fuzz_main.c +55 -0
- package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
- package/thirdparty/miniz/tests/main.cpp +185 -0
- package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
- package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
- package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
- package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
- package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
- package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
- package/thirdparty/miniz/tests/timer.cpp +152 -0
- package/thirdparty/miniz/tests/timer.h +40 -0
- package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
- package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
- package/thirdparty/miniz/tests/zip.dict +9 -0
- package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
- package/thirdparty/pugixml/.codecov.yml +7 -0
- package/thirdparty/pugixml/.gitattributes +1 -0
- package/thirdparty/pugixml/CMakeLists.txt +330 -0
- package/thirdparty/pugixml/LICENSE.md +24 -0
- package/thirdparty/pugixml/Makefile +98 -0
- package/thirdparty/pugixml/README.md +81 -0
- package/thirdparty/pugixml/SECURITY.md +9 -0
- package/thirdparty/pugixml/appveyor.yml +50 -0
- package/thirdparty/pugixml/docs/config.adoc +7 -0
- package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
- package/thirdparty/pugixml/docs/manual.adoc +3326 -0
- package/thirdparty/pugixml/docs/manual.html +6395 -0
- package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
- package/thirdparty/pugixml/docs/quickstart.html +1107 -0
- package/thirdparty/pugixml/docs/samples/character.xml +8 -0
- package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
- package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
- package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
- package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
- package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
- package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
- package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
- package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
- package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
- package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
- package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
- package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
- package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
- package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
- package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
- package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
- package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
- package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
- package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
- package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
- package/thirdparty/pugixml/readme.txt +50 -0
- package/thirdparty/pugixml/scripts/archive.py +54 -0
- package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
- package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
- package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
- package/thirdparty/pugixml/scripts/premake4.lua +92 -0
- package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
- package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
- package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
- package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
- package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
- package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
- package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
- package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
- package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
- package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
- package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
- package/thirdparty/pugixml/tests/allocator.cpp +175 -0
- package/thirdparty/pugixml/tests/allocator.hpp +10 -0
- package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
- package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
- package/thirdparty/pugixml/tests/data/empty.xml +0 -0
- package/thirdparty/pugixml/tests/data/large.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
- package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
- package/thirdparty/pugixml/tests/data/small.xml +1 -0
- package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
- package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
- package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
- package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
- package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
- package/thirdparty/pugixml/tests/helpers.hpp +114 -0
- package/thirdparty/pugixml/tests/main.cpp +218 -0
- package/thirdparty/pugixml/tests/test.cpp +220 -0
- package/thirdparty/pugixml/tests/test.hpp +175 -0
- package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
- package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
- package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
- package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
- package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
- package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
- package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
- package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
- package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
- package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
- package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
- package/thirdparty/pugixml/tests/test_version.cpp +5 -0
- package/thirdparty/pugixml/tests/test_write.cpp +757 -0
- package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
- package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
- package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
- package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
- package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
- package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
- package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
- package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
- package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
- package/scripts/prepare-openxlsx.js +0 -126
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
#include "test.hpp"
|
|
2
|
+
#include "allocator.hpp"
|
|
3
|
+
|
|
4
|
+
#include <stdio.h>
|
|
5
|
+
#include <stdlib.h>
|
|
6
|
+
#include <float.h>
|
|
7
|
+
#include <assert.h>
|
|
8
|
+
|
|
9
|
+
#include <string>
|
|
10
|
+
|
|
11
|
+
#ifndef PUGIXML_NO_EXCEPTIONS
|
|
12
|
+
# include <exception>
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
#ifdef _WIN32_WCE
|
|
16
|
+
# undef DebugBreak
|
|
17
|
+
# pragma warning(disable: 4201) // nonstandard extension used: nameless struct/union
|
|
18
|
+
# include <windows.h>
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
test_runner* test_runner::_tests = 0;
|
|
22
|
+
size_t test_runner::_memory_fail_threshold = 0;
|
|
23
|
+
bool test_runner::_memory_fail_triggered = false;
|
|
24
|
+
jmp_buf test_runner::_failure_buffer;
|
|
25
|
+
const char* test_runner::_failure_message;
|
|
26
|
+
const char* test_runner::_temp_path;
|
|
27
|
+
|
|
28
|
+
static size_t g_memory_total_size = 0;
|
|
29
|
+
static size_t g_memory_total_count = 0;
|
|
30
|
+
static size_t g_memory_fail_triggered = false;
|
|
31
|
+
|
|
32
|
+
static void* custom_allocate(size_t size)
|
|
33
|
+
{
|
|
34
|
+
if (test_runner::_memory_fail_threshold > 0 && test_runner::_memory_fail_threshold < g_memory_total_size + size)
|
|
35
|
+
{
|
|
36
|
+
g_memory_fail_triggered = true;
|
|
37
|
+
test_runner::_memory_fail_triggered = true;
|
|
38
|
+
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
else
|
|
42
|
+
{
|
|
43
|
+
void* ptr = memory_allocate(size);
|
|
44
|
+
if (!ptr) return 0;
|
|
45
|
+
|
|
46
|
+
g_memory_total_size += memory_size(ptr);
|
|
47
|
+
g_memory_total_count++;
|
|
48
|
+
|
|
49
|
+
return ptr;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
#ifndef PUGIXML_NO_EXCEPTIONS
|
|
54
|
+
static void* custom_allocate_throw(size_t size)
|
|
55
|
+
{
|
|
56
|
+
void* result = custom_allocate(size);
|
|
57
|
+
|
|
58
|
+
if (!result)
|
|
59
|
+
throw std::bad_alloc();
|
|
60
|
+
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
#endif
|
|
64
|
+
|
|
65
|
+
static void custom_deallocate(void* ptr)
|
|
66
|
+
{
|
|
67
|
+
assert(ptr);
|
|
68
|
+
|
|
69
|
+
g_memory_total_size -= memory_size(ptr);
|
|
70
|
+
g_memory_total_count--;
|
|
71
|
+
|
|
72
|
+
memory_deallocate(ptr);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
static void replace_memory_management()
|
|
76
|
+
{
|
|
77
|
+
// create some document to touch original functions
|
|
78
|
+
{
|
|
79
|
+
pugi::xml_document doc;
|
|
80
|
+
doc.append_child().set_name(STR("node"));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// replace functions
|
|
84
|
+
pugi::set_memory_management_functions(custom_allocate, custom_deallocate);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
#if defined(_MSC_VER) && _MSC_VER > 1200 && _MSC_VER < 1400 && !defined(__INTEL_COMPILER) && !defined(__DMC__)
|
|
88
|
+
#include <exception>
|
|
89
|
+
|
|
90
|
+
namespace std
|
|
91
|
+
{
|
|
92
|
+
_CRTIMP2 _Prhand _Raise_handler;
|
|
93
|
+
_CRTIMP2 void __cdecl _Throw(const exception&) {}
|
|
94
|
+
}
|
|
95
|
+
#endif
|
|
96
|
+
|
|
97
|
+
static bool run_test(test_runner* test, const char* test_name, pugi::allocation_function allocate)
|
|
98
|
+
{
|
|
99
|
+
#ifndef PUGIXML_NO_EXCEPTIONS
|
|
100
|
+
try
|
|
101
|
+
{
|
|
102
|
+
#endif
|
|
103
|
+
g_memory_total_size = 0;
|
|
104
|
+
g_memory_total_count = 0;
|
|
105
|
+
g_memory_fail_triggered = false;
|
|
106
|
+
test_runner::_memory_fail_threshold = 0;
|
|
107
|
+
test_runner::_memory_fail_triggered = false;
|
|
108
|
+
|
|
109
|
+
pugi::set_memory_management_functions(allocate, custom_deallocate);
|
|
110
|
+
|
|
111
|
+
#ifdef _MSC_VER
|
|
112
|
+
# pragma warning(push)
|
|
113
|
+
# pragma warning(disable: 4611) // interaction between _setjmp and C++ object destruction is non-portable
|
|
114
|
+
# pragma warning(disable: 4793) // function compiled as native: presence of '_setjmp' makes a function unmanaged
|
|
115
|
+
#endif
|
|
116
|
+
|
|
117
|
+
volatile int result = setjmp(test_runner::_failure_buffer);
|
|
118
|
+
|
|
119
|
+
#ifdef _MSC_VER
|
|
120
|
+
# pragma warning(pop)
|
|
121
|
+
#endif
|
|
122
|
+
|
|
123
|
+
if (result)
|
|
124
|
+
{
|
|
125
|
+
printf("Test %s failed: %s\n", test_name, test_runner::_failure_message);
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
test->run();
|
|
130
|
+
|
|
131
|
+
if (test_runner::_memory_fail_triggered)
|
|
132
|
+
{
|
|
133
|
+
printf("Test %s failed: unguarded memory fail triggered\n", test_name);
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (g_memory_total_size != 0 || g_memory_total_count != 0)
|
|
138
|
+
{
|
|
139
|
+
printf("Test %s failed: memory leaks found (%u bytes in %u allocations)\n", test_name, static_cast<unsigned int>(g_memory_total_size), static_cast<unsigned int>(g_memory_total_count));
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return true;
|
|
144
|
+
#ifndef PUGIXML_NO_EXCEPTIONS
|
|
145
|
+
}
|
|
146
|
+
catch (const std::exception& e)
|
|
147
|
+
{
|
|
148
|
+
printf("Test %s failed: exception %s\n", test_name, e.what());
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
catch (...)
|
|
152
|
+
{
|
|
153
|
+
printf("Test %s failed for unknown reason\n", test_name);
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
#endif
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
#if defined(__CELLOS_LV2__) && defined(PUGIXML_NO_EXCEPTIONS) && !defined(__SNC__)
|
|
160
|
+
#include <exception>
|
|
161
|
+
|
|
162
|
+
void std::exception::_Raise() const
|
|
163
|
+
{
|
|
164
|
+
abort();
|
|
165
|
+
}
|
|
166
|
+
#endif
|
|
167
|
+
|
|
168
|
+
int main(int, char** argv)
|
|
169
|
+
{
|
|
170
|
+
#ifdef __BORLANDC__
|
|
171
|
+
_control87(MCW_EM | PC_53, MCW_EM | MCW_PC);
|
|
172
|
+
#endif
|
|
173
|
+
|
|
174
|
+
// setup temp path as the executable folder
|
|
175
|
+
std::string temp = argv[0];
|
|
176
|
+
std::string::size_type slash = temp.find_last_of("\\/");
|
|
177
|
+
temp.erase((slash != std::string::npos) ? slash + 1 : 0);
|
|
178
|
+
|
|
179
|
+
test_runner::_temp_path = temp.c_str();
|
|
180
|
+
|
|
181
|
+
replace_memory_management();
|
|
182
|
+
|
|
183
|
+
unsigned int total = 0;
|
|
184
|
+
unsigned int passed = 0;
|
|
185
|
+
|
|
186
|
+
test_runner* test = 0; // gcc3 "variable might be used uninitialized in this function" bug workaround
|
|
187
|
+
|
|
188
|
+
for (test = test_runner::_tests; test; test = test->_next)
|
|
189
|
+
{
|
|
190
|
+
total++;
|
|
191
|
+
passed += run_test(test, test->_name, custom_allocate);
|
|
192
|
+
|
|
193
|
+
if (g_memory_fail_triggered)
|
|
194
|
+
{
|
|
195
|
+
// run tests that trigger memory failures twice - with an allocator that returns NULL and with an allocator that throws
|
|
196
|
+
#ifndef PUGIXML_NO_EXCEPTIONS
|
|
197
|
+
total++;
|
|
198
|
+
passed += run_test(test, (test->_name + std::string(" (throw)")).c_str(), custom_allocate_throw);
|
|
199
|
+
#endif
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
unsigned int failed = total - passed;
|
|
204
|
+
|
|
205
|
+
if (failed != 0)
|
|
206
|
+
printf("FAILURE: %u out of %u tests failed.\n", failed, total);
|
|
207
|
+
else
|
|
208
|
+
printf("Success: %u tests passed.\n", total);
|
|
209
|
+
|
|
210
|
+
return failed;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
#ifdef _WIN32_WCE
|
|
214
|
+
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
|
215
|
+
{
|
|
216
|
+
return main(0, NULL);
|
|
217
|
+
}
|
|
218
|
+
#endif
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
#define _SCL_SECURE_NO_WARNINGS
|
|
2
|
+
#define _SCL_SECURE_NO_DEPRECATE
|
|
3
|
+
|
|
4
|
+
#include "test.hpp"
|
|
5
|
+
|
|
6
|
+
#include "writer_string.hpp"
|
|
7
|
+
|
|
8
|
+
#include <math.h>
|
|
9
|
+
#include <float.h>
|
|
10
|
+
#include <string.h>
|
|
11
|
+
#include <wchar.h>
|
|
12
|
+
|
|
13
|
+
#include <algorithm>
|
|
14
|
+
#include <vector>
|
|
15
|
+
|
|
16
|
+
#ifndef PUGIXML_NO_XPATH
|
|
17
|
+
static void build_document_order(std::vector<pugi::xpath_node>& result, pugi::xml_node root)
|
|
18
|
+
{
|
|
19
|
+
result.push_back(pugi::xpath_node());
|
|
20
|
+
|
|
21
|
+
pugi::xml_node cur = root;
|
|
22
|
+
|
|
23
|
+
for (;;)
|
|
24
|
+
{
|
|
25
|
+
result.push_back(cur);
|
|
26
|
+
|
|
27
|
+
for (pugi::xml_attribute a = cur.first_attribute(); a; a = a.next_attribute())
|
|
28
|
+
result.push_back(pugi::xpath_node(a, cur));
|
|
29
|
+
|
|
30
|
+
if (cur.first_child())
|
|
31
|
+
cur = cur.first_child();
|
|
32
|
+
else if (cur.next_sibling())
|
|
33
|
+
cur = cur.next_sibling();
|
|
34
|
+
else
|
|
35
|
+
{
|
|
36
|
+
while (cur && !cur.next_sibling()) cur = cur.parent();
|
|
37
|
+
cur = cur.next_sibling();
|
|
38
|
+
|
|
39
|
+
if (!cur) break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
#endif
|
|
44
|
+
|
|
45
|
+
bool test_string_equal(const pugi::char_t* lhs, const pugi::char_t* rhs)
|
|
46
|
+
{
|
|
47
|
+
return (!lhs || !rhs) ? lhs == rhs :
|
|
48
|
+
#ifdef PUGIXML_WCHAR_MODE
|
|
49
|
+
wcscmp(lhs, rhs) == 0;
|
|
50
|
+
#else
|
|
51
|
+
strcmp(lhs, rhs) == 0;
|
|
52
|
+
#endif
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
bool test_node(const pugi::xml_node& node, const pugi::char_t* contents, const pugi::char_t* indent, unsigned int flags)
|
|
56
|
+
{
|
|
57
|
+
xml_writer_string writer;
|
|
58
|
+
|
|
59
|
+
node.print(writer, indent, flags, get_native_encoding());
|
|
60
|
+
|
|
61
|
+
return writer.as_string() == contents;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
bool test_double_nan(double value)
|
|
65
|
+
{
|
|
66
|
+
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
|
67
|
+
return _isnan(value) != 0;
|
|
68
|
+
#else
|
|
69
|
+
return value != value;
|
|
70
|
+
#endif
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
#ifndef PUGIXML_NO_XPATH
|
|
74
|
+
static size_t strlength(const pugi::char_t* s)
|
|
75
|
+
{
|
|
76
|
+
#ifdef PUGIXML_WCHAR_MODE
|
|
77
|
+
return wcslen(s);
|
|
78
|
+
#else
|
|
79
|
+
return strlen(s);
|
|
80
|
+
#endif
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
bool test_xpath_string(const pugi::xpath_node& node, const pugi::char_t* query, pugi::xpath_variable_set* variables, const pugi::char_t* expected)
|
|
84
|
+
{
|
|
85
|
+
pugi::xpath_query q(query, variables);
|
|
86
|
+
if (!q) return false;
|
|
87
|
+
|
|
88
|
+
const size_t capacity = 64;
|
|
89
|
+
pugi::char_t result[capacity];
|
|
90
|
+
|
|
91
|
+
size_t size = q.evaluate_string(result, capacity, node);
|
|
92
|
+
|
|
93
|
+
if (size != strlength(expected) + 1)
|
|
94
|
+
return false;
|
|
95
|
+
|
|
96
|
+
if (size <= capacity)
|
|
97
|
+
return test_string_equal(result, expected);
|
|
98
|
+
|
|
99
|
+
std::basic_string<pugi::char_t> buffer(size, ' ');
|
|
100
|
+
|
|
101
|
+
return q.evaluate_string(&buffer[0], size, node) == size && test_string_equal(buffer.c_str(), expected);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
bool test_xpath_boolean(const pugi::xpath_node& node, const pugi::char_t* query, pugi::xpath_variable_set* variables, bool expected)
|
|
105
|
+
{
|
|
106
|
+
pugi::xpath_query q(query, variables);
|
|
107
|
+
if (!q) return false;
|
|
108
|
+
|
|
109
|
+
return q.evaluate_boolean(node) == expected;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
bool test_xpath_number(const pugi::xpath_node& node, const pugi::char_t* query, pugi::xpath_variable_set* variables, double expected)
|
|
113
|
+
{
|
|
114
|
+
pugi::xpath_query q(query, variables);
|
|
115
|
+
if (!q) return false;
|
|
116
|
+
|
|
117
|
+
double value = q.evaluate_number(node);
|
|
118
|
+
double absolute_error = fabs(value - expected);
|
|
119
|
+
|
|
120
|
+
const double tolerance = 1e-15;
|
|
121
|
+
return absolute_error < tolerance || absolute_error < fabs(expected) * tolerance;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
bool test_xpath_number_nan(const pugi::xpath_node& node, const pugi::char_t* query, pugi::xpath_variable_set* variables)
|
|
125
|
+
{
|
|
126
|
+
pugi::xpath_query q(query, variables);
|
|
127
|
+
if (!q) return false;
|
|
128
|
+
|
|
129
|
+
return test_double_nan(q.evaluate_number(node));
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
bool test_xpath_fail_compile(const pugi::char_t* query, pugi::xpath_variable_set* variables)
|
|
133
|
+
{
|
|
134
|
+
#ifdef PUGIXML_NO_EXCEPTIONS
|
|
135
|
+
return !pugi::xpath_query(query, variables);
|
|
136
|
+
#else
|
|
137
|
+
try
|
|
138
|
+
{
|
|
139
|
+
pugi::xpath_query q(query, variables);
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
catch (const pugi::xpath_exception&)
|
|
143
|
+
{
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
#endif
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
void xpath_node_set_tester::check(bool condition)
|
|
150
|
+
{
|
|
151
|
+
if (!condition)
|
|
152
|
+
{
|
|
153
|
+
test_runner::_failure_message = message;
|
|
154
|
+
longjmp(test_runner::_failure_buffer, 1);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
xpath_node_set_tester::xpath_node_set_tester(const pugi::xpath_node_set& set, const char* message_): last(0), message(message_)
|
|
159
|
+
{
|
|
160
|
+
result = set;
|
|
161
|
+
|
|
162
|
+
// only sort unsorted sets so that we're able to verify reverse order for some axes
|
|
163
|
+
if (result.type() == pugi::xpath_node_set::type_unsorted) result.sort();
|
|
164
|
+
|
|
165
|
+
if (result.empty())
|
|
166
|
+
{
|
|
167
|
+
document_order = 0;
|
|
168
|
+
document_size = 0;
|
|
169
|
+
}
|
|
170
|
+
else
|
|
171
|
+
{
|
|
172
|
+
std::vector<pugi::xpath_node> order;
|
|
173
|
+
build_document_order(order, (result[0].attribute() ? result[0].parent() : result[0].node()).root());
|
|
174
|
+
|
|
175
|
+
document_order = new pugi::xpath_node[order.size()];
|
|
176
|
+
std::copy(order.begin(), order.end(), document_order);
|
|
177
|
+
|
|
178
|
+
document_size = order.size();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
xpath_node_set_tester::~xpath_node_set_tester()
|
|
183
|
+
{
|
|
184
|
+
// check that we processed everything
|
|
185
|
+
check(last == result.size());
|
|
186
|
+
|
|
187
|
+
delete[] document_order;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
xpath_node_set_tester& xpath_node_set_tester::operator%(unsigned int expected)
|
|
191
|
+
{
|
|
192
|
+
// check element count
|
|
193
|
+
check(last < result.size());
|
|
194
|
+
|
|
195
|
+
// check document order
|
|
196
|
+
check(expected < document_size);
|
|
197
|
+
check(result.begin()[last] == document_order[expected]);
|
|
198
|
+
|
|
199
|
+
// continue to the next element
|
|
200
|
+
last++;
|
|
201
|
+
|
|
202
|
+
return *this;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
#endif
|
|
206
|
+
|
|
207
|
+
bool is_little_endian()
|
|
208
|
+
{
|
|
209
|
+
unsigned int ui = 1;
|
|
210
|
+
return *reinterpret_cast<char*>(&ui) == 1;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
pugi::xml_encoding get_native_encoding()
|
|
214
|
+
{
|
|
215
|
+
#ifdef PUGIXML_WCHAR_MODE
|
|
216
|
+
return pugi::encoding_wchar;
|
|
217
|
+
#else
|
|
218
|
+
return pugi::encoding_utf8;
|
|
219
|
+
#endif
|
|
220
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
#ifndef HEADER_TEST_TEST_HPP
|
|
2
|
+
#define HEADER_TEST_TEST_HPP
|
|
3
|
+
|
|
4
|
+
#include "../src/pugixml.hpp"
|
|
5
|
+
|
|
6
|
+
#include <setjmp.h>
|
|
7
|
+
|
|
8
|
+
#ifndef PUGIXML_NO_EXCEPTIONS
|
|
9
|
+
#include <new>
|
|
10
|
+
#endif
|
|
11
|
+
|
|
12
|
+
struct test_runner
|
|
13
|
+
{
|
|
14
|
+
test_runner(const char* name)
|
|
15
|
+
{
|
|
16
|
+
_name = name;
|
|
17
|
+
_next = _tests;
|
|
18
|
+
_tests = this;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
virtual ~test_runner() {}
|
|
22
|
+
|
|
23
|
+
virtual void run() = 0;
|
|
24
|
+
|
|
25
|
+
const char* _name;
|
|
26
|
+
test_runner* _next;
|
|
27
|
+
|
|
28
|
+
static test_runner* _tests;
|
|
29
|
+
static size_t _memory_fail_threshold;
|
|
30
|
+
static bool _memory_fail_triggered;
|
|
31
|
+
static jmp_buf _failure_buffer;
|
|
32
|
+
static const char* _failure_message;
|
|
33
|
+
|
|
34
|
+
static const char* _temp_path;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
bool test_string_equal(const pugi::char_t* lhs, const pugi::char_t* rhs);
|
|
38
|
+
|
|
39
|
+
template <typename Node> inline bool test_node_name_value(const Node& node, const pugi::char_t* name, const pugi::char_t* value)
|
|
40
|
+
{
|
|
41
|
+
return test_string_equal(node.name(), name) && test_string_equal(node.value(), value);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
bool test_node(const pugi::xml_node& node, const pugi::char_t* contents, const pugi::char_t* indent, unsigned int flags);
|
|
45
|
+
bool test_double_nan(double value);
|
|
46
|
+
|
|
47
|
+
#ifndef PUGIXML_NO_XPATH
|
|
48
|
+
bool test_xpath_string(const pugi::xpath_node& node, const pugi::char_t* query, pugi::xpath_variable_set* variables, const pugi::char_t* expected);
|
|
49
|
+
bool test_xpath_boolean(const pugi::xpath_node& node, const pugi::char_t* query, pugi::xpath_variable_set* variables, bool expected);
|
|
50
|
+
bool test_xpath_number(const pugi::xpath_node& node, const pugi::char_t* query, pugi::xpath_variable_set* variables, double expected);
|
|
51
|
+
bool test_xpath_number_nan(const pugi::xpath_node& node, const pugi::char_t* query, pugi::xpath_variable_set* variables);
|
|
52
|
+
|
|
53
|
+
bool test_xpath_fail_compile(const pugi::char_t* query, pugi::xpath_variable_set* variables);
|
|
54
|
+
|
|
55
|
+
struct xpath_node_set_tester
|
|
56
|
+
{
|
|
57
|
+
pugi::xpath_node* document_order;
|
|
58
|
+
size_t document_size;
|
|
59
|
+
|
|
60
|
+
pugi::xpath_node_set result;
|
|
61
|
+
unsigned int last;
|
|
62
|
+
const char* message;
|
|
63
|
+
|
|
64
|
+
void check(bool condition);
|
|
65
|
+
|
|
66
|
+
xpath_node_set_tester(const pugi::xpath_node_set& set, const char* message);
|
|
67
|
+
~xpath_node_set_tester();
|
|
68
|
+
|
|
69
|
+
xpath_node_set_tester& operator%(unsigned int expected);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
struct dummy_fixture {};
|
|
75
|
+
|
|
76
|
+
#define TEST_FIXTURE(name, fixture) \
|
|
77
|
+
struct test_runner_helper_##name: fixture \
|
|
78
|
+
{ \
|
|
79
|
+
void run(); \
|
|
80
|
+
}; \
|
|
81
|
+
static struct test_runner_##name: test_runner \
|
|
82
|
+
{ \
|
|
83
|
+
test_runner_##name(): test_runner(#name) {} \
|
|
84
|
+
\
|
|
85
|
+
virtual void run() PUGIXML_OVERRIDE \
|
|
86
|
+
{ \
|
|
87
|
+
test_runner_helper_##name helper; \
|
|
88
|
+
helper.run(); \
|
|
89
|
+
} \
|
|
90
|
+
} test_runner_instance_##name; \
|
|
91
|
+
void test_runner_helper_##name::run()
|
|
92
|
+
|
|
93
|
+
#define TEST(name) TEST_FIXTURE(name, dummy_fixture)
|
|
94
|
+
|
|
95
|
+
#define TEST_XML_FLAGS(name, xml, flags) \
|
|
96
|
+
struct test_fixture_##name \
|
|
97
|
+
{ \
|
|
98
|
+
pugi::xml_document doc; \
|
|
99
|
+
\
|
|
100
|
+
test_fixture_##name() \
|
|
101
|
+
{ \
|
|
102
|
+
CHECK(doc.load_string(PUGIXML_TEXT(xml), flags)); \
|
|
103
|
+
} \
|
|
104
|
+
\
|
|
105
|
+
private: \
|
|
106
|
+
test_fixture_##name(const test_fixture_##name&); \
|
|
107
|
+
test_fixture_##name& operator=(const test_fixture_##name&); \
|
|
108
|
+
}; \
|
|
109
|
+
\
|
|
110
|
+
TEST_FIXTURE(name, test_fixture_##name)
|
|
111
|
+
|
|
112
|
+
#define TEST_XML(name, xml) TEST_XML_FLAGS(name, xml, pugi::parse_default)
|
|
113
|
+
|
|
114
|
+
#define CHECK_JOIN(text, file, line) text " at " file ":" #line
|
|
115
|
+
#define CHECK_JOIN2(text, file, line) CHECK_JOIN(text, file, line)
|
|
116
|
+
#define CHECK_TEXT(condition, text) if (condition) ; else test_runner::_failure_message = CHECK_JOIN2(text, __FILE__, __LINE__), longjmp(test_runner::_failure_buffer, 1)
|
|
117
|
+
#define CHECK_FORCE_FAIL(text) test_runner::_failure_message = CHECK_JOIN2(text, __FILE__, __LINE__), longjmp(test_runner::_failure_buffer, 1)
|
|
118
|
+
|
|
119
|
+
#if (defined(_MSC_VER) && _MSC_VER == 1200) || defined(__MWERKS__) || (defined(__BORLANDC__) && __BORLANDC__ <= 0x540)
|
|
120
|
+
# define STRINGIZE(value) "??" // Some compilers have issues with stringizing expressions that contain strings w/escaping inside
|
|
121
|
+
#else
|
|
122
|
+
# define STRINGIZE(value) #value
|
|
123
|
+
#endif
|
|
124
|
+
|
|
125
|
+
#define CHECK(condition) CHECK_TEXT(condition, STRINGIZE(condition) " is false")
|
|
126
|
+
#define CHECK_STRING(value, expected) CHECK_TEXT(test_string_equal(value, expected), STRINGIZE(value) " is not equal to " STRINGIZE(expected))
|
|
127
|
+
#define CHECK_DOUBLE(value, expected) CHECK_TEXT((value > expected ? value - expected : expected - value) < 1e-6, STRINGIZE(value) " is not equal to " STRINGIZE(expected))
|
|
128
|
+
#define CHECK_DOUBLE_NAN(value) CHECK_TEXT(test_double_nan(value), STRINGIZE(value) " is not equal to NaN")
|
|
129
|
+
#define CHECK_NAME_VALUE(node, name, value) CHECK_TEXT(test_node_name_value(node, name, value), STRINGIZE(node) " name/value do not match " STRINGIZE(name) " and " STRINGIZE(value))
|
|
130
|
+
#define CHECK_NODE_EX(node, expected, indent, flags) CHECK_TEXT(test_node(node, expected, indent, flags), STRINGIZE(node) " contents does not match " STRINGIZE(expected))
|
|
131
|
+
#define CHECK_NODE(node, expected) CHECK_NODE_EX(node, expected, PUGIXML_TEXT(""), pugi::format_raw)
|
|
132
|
+
|
|
133
|
+
#ifndef PUGIXML_NO_XPATH
|
|
134
|
+
#define CHECK_XPATH_STRING_VAR(node, query, variables, expected) CHECK_TEXT(test_xpath_string(node, query, variables, expected), STRINGIZE(query) " does not evaluate to " STRINGIZE(expected) " in context " STRINGIZE(node))
|
|
135
|
+
#define CHECK_XPATH_BOOLEAN_VAR(node, query, variables, expected) CHECK_TEXT(test_xpath_boolean(node, query, variables, expected), STRINGIZE(query) " does not evaluate to " STRINGIZE(expected) " in context " STRINGIZE(node))
|
|
136
|
+
#define CHECK_XPATH_NUMBER_VAR(node, query, variables, expected) CHECK_TEXT(test_xpath_number(node, query, variables, expected), STRINGIZE(query) " does not evaluate to " STRINGIZE(expected) " in context " STRINGIZE(node))
|
|
137
|
+
#define CHECK_XPATH_NUMBER_NAN_VAR(node, query, variables) CHECK_TEXT(test_xpath_number_nan(node, query, variables), STRINGIZE(query) " does not evaluate to NaN in context " STRINGIZE(node))
|
|
138
|
+
#define CHECK_XPATH_NODESET_VAR(node, query, variables) xpath_node_set_tester(pugi::xpath_query(query, variables).evaluate_node_set(node), CHECK_JOIN2(STRINGIZE(query) " does not evaluate to expected set in context " STRINGIZE(node), __FILE__, __LINE__))
|
|
139
|
+
#define CHECK_XPATH_FAIL_VAR(query, variables) CHECK_TEXT(test_xpath_fail_compile(query, variables), STRINGIZE(query) " should not compile")
|
|
140
|
+
|
|
141
|
+
#define CHECK_XPATH_STRING(node, query, expected) CHECK_XPATH_STRING_VAR(node, query, 0, expected)
|
|
142
|
+
#define CHECK_XPATH_BOOLEAN(node, query, expected) CHECK_XPATH_BOOLEAN_VAR(node, query, 0, expected)
|
|
143
|
+
#define CHECK_XPATH_NUMBER(node, query, expected) CHECK_XPATH_NUMBER_VAR(node, query, 0, expected)
|
|
144
|
+
#define CHECK_XPATH_NUMBER_NAN(node, query) CHECK_XPATH_NUMBER_NAN_VAR(node, query, 0)
|
|
145
|
+
#define CHECK_XPATH_NODESET(node, query) CHECK_XPATH_NODESET_VAR(node, query, 0)
|
|
146
|
+
#define CHECK_XPATH_FAIL(query) CHECK_XPATH_FAIL_VAR(query, 0)
|
|
147
|
+
#endif
|
|
148
|
+
|
|
149
|
+
#ifdef PUGIXML_NO_EXCEPTIONS
|
|
150
|
+
#define CHECK_ALLOC_FAIL(code) do { CHECK(!test_runner::_memory_fail_triggered); code; CHECK(test_runner::_memory_fail_triggered); test_runner::_memory_fail_triggered = false; } while (test_runner::_memory_fail_triggered)
|
|
151
|
+
#else
|
|
152
|
+
#define CHECK_ALLOC_FAIL(code) do { CHECK(!test_runner::_memory_fail_triggered); try { code; } catch (std::bad_alloc&) {} CHECK(test_runner::_memory_fail_triggered); test_runner::_memory_fail_triggered = false; } while (test_runner::_memory_fail_triggered)
|
|
153
|
+
#endif
|
|
154
|
+
|
|
155
|
+
#define STR(text) PUGIXML_TEXT(text)
|
|
156
|
+
|
|
157
|
+
#if defined(__DMC__) || defined(__BORLANDC__)
|
|
158
|
+
#define U_LITERALS // DMC does not understand \x01234 (it parses first three digits), but understands \u01234
|
|
159
|
+
#endif
|
|
160
|
+
|
|
161
|
+
#if (defined(_MSC_VER) && _MSC_VER == 1200) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER == 800) || defined(__BORLANDC__)
|
|
162
|
+
// NaN comparison on MSVC6 is incorrect, see http://www.nabble.com/assertDoubleEquals,-NaN---Microsoft-Visual-Studio-6-td9137859.html
|
|
163
|
+
// IC8 and BCC are also affected by the same bug
|
|
164
|
+
# define MSVC6_NAN_BUG
|
|
165
|
+
#endif
|
|
166
|
+
|
|
167
|
+
inline wchar_t wchar_cast(unsigned int value)
|
|
168
|
+
{
|
|
169
|
+
return static_cast<wchar_t>(value); // to avoid C4310 on MSVC
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
bool is_little_endian();
|
|
173
|
+
pugi::xml_encoding get_native_encoding();
|
|
174
|
+
|
|
175
|
+
#endif
|