summaryrefslogtreecommitdiff
path: root/tests/test_write.cpp
AgeCommit message (Collapse)Author
2015-03-18Do not emit surrounding whitespace for text nodesArseny Kapoulkine
Previously we omitted extra whitespace for single PCDATA/CDATA children, but in mixed content there was extra indentation before/after text nodes. One of the problems with that is that the text that you saved is not exactly the same as the parsing result using default flags (parse_trim_pcdata helps). Another problem is that parse-format cycles do not have a fixed point for mixed content - the result expands indefinitely. Some XML libraries, like Python minidom, have the same issue, but this is definitely a problem. Pretty-printing mixed content is hard. It seems that the only other sensible choice is to switch mixed content nodes to raw formatting. In a way the code in this change is a weaker version of that - it removes indentation around text nodes but still keeps it around element siblings/children. Thus we can switch to mixed-raw formatting at some point later, which will be a superset of the current behavior. To do this we have to either switch at the first text node (.NET XmlDocument does that), or scan the children of each element for a possible text node and switch before we output the first child. The former behavior seems non-intuitive (and a bit broken); unfortunately, the latter behavior can cost up to 20% of the output time for trees *without* mixed content. Fixes #13.
2015-03-10Escape ?> sequence in PI value during printingArseny Kapoulkine
This prevents malformed PI value from breaking the document structure.
2015-01-24Use string::append in implementations of xml_writerArseny Kapoulkine
The current code is not optimal; since users actually read samples/tests change them to use faster (and shorter!) code.
2014-11-17Rename xml_document::load to load_stringArseny Kapoulkine
This should completely eliminate the confusion between load and load_file. Of course, for compatibility reasons we have to preserve the old variant - it will be deprecated in a future version and subsequently removed.
2014-10-27Optimize node printing by using raw pointersArseny Kapoulkine
This lets us do fewer null pointer checks (making printing 2% faster with -O3) and removes a lot of function calls (making printing 20% faster with -O0).
2014-10-14tests: Add a test for printing comments that contain --Arseny Kapoulkine
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1059 99668b35-9821-0410-8761-19e4c4f06640
2014-10-03tests: Fix MSVC6 compilationArseny Kapoulkine
Also fixes PUGIXML_NO_STL compilation and makes it possible to build with any version of new Windows SDK. git-svn-id: https://pugixml.googlecode.com/svn/trunk@1044 99668b35-9821-0410-8761-19e4c4f06640
2014-09-21tests: Fix PUGIXML_WCHAR_MODE buildArseny Kapoulkine
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1017 99668b35-9821-0410-8761-19e4c4f06640
2014-09-21tests: Add test for custom indentation stringsArseny Kapoulkine
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1016 99668b35-9821-0410-8761-19e4c4f06640
2014-09-21tests: Add a test for stackless write.Arseny Kapoulkine
This test previously caused a stack overflow on x86/MSVC. git-svn-id: https://pugixml.googlecode.com/svn/trunk@1015 99668b35-9821-0410-8761-19e4c4f06640
2014-02-11Implement document fragment parsing.Arseny Kapoulkine
Introduce a notable behavior change in default parsing mode: documents without a document element node are now considered invalid. This is technically a breaking change, however the amount of documents it affects is very small, all parsed data still persists, and lack of this check results in very confusing behavior in a number of cases. In order to be able to parse documents without an element node, a fragment parsing flag is introduced. Parsing a buffer in fragment mode treats the buffer as a fragment of a valid XML. As a consequence, top-level PCDATA is added to the tree; additionally, there are no restrictions on the number of nodes -- so documents without a document element are considered valid. Due to the way parsing works internally, load_buffer_inplace occasionally can not preserve the document contents if it's parsed in a fragment mode. While unfortunate, this problem is fundamental; since the use case is relatively obscure, hopefully documenting this shortcoming will be enough. git-svn-id: https://pugixml.googlecode.com/svn/trunk@980 99668b35-9821-0410-8761-19e4c4f06640
2012-03-06tests: Android compilation fixesarseny.kapoulkine@gmail.com
git-svn-id: http://pugixml.googlecode.com/svn/trunk@846 99668b35-9821-0410-8761-19e4c4f06640
2012-03-06tests: Fixed compilation errors for BadaSDKarseny.kapoulkine@gmail.com
git-svn-id: http://pugixml.googlecode.com/svn/trunk@839 99668b35-9821-0410-8761-19e4c4f06640
2011-12-20Introduced encoding_latin1 support (conversion on loading, conversion on ↵arseny.kapoulkine
saving, encoding name in declaration in document::save) git-svn-id: http://pugixml.googlecode.com/svn/trunk@829 99668b35-9821-0410-8761-19e4c4f06640
2011-09-10Added format_no_escapes flagarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@819 99668b35-9821-0410-8761-19e4c4f06640
2010-10-19If an element node has the only child, and it is of CDATA type, then the ↵arseny.kapoulkine
extra indentation is omitted (previously this behavior only held for PCDATA children) git-svn-id: http://pugixml.googlecode.com/svn/trunk@770 99668b35-9821-0410-8761-19e4c4f06640
2010-09-26tests: Added node_doctype and parse_doctype testsarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@757 99668b35-9821-0410-8761-19e4c4f06640
2010-08-02tests: More miscellaneous testsarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@619 99668b35-9821-0410-8761-19e4c4f06640
2010-07-22tests: Added more CDATA writing testsarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@617 99668b35-9821-0410-8761-19e4c4f06640
2010-07-19Set svn:eol-style to native for all text filesarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@607 99668b35-9821-0410-8761-19e4c4f06640
2010-05-30tests: Extended wchar_t mode tests (broken UTF16 test, some tests were ↵arseny.kapoulkine
erroneously utf8-only), added final Xalan tests git-svn-id: http://pugixml.googlecode.com/svn/trunk@475 99668b35-9821-0410-8761-19e4c4f06640
2010-05-21Nodes/attributes with empty names now are printed as :anonymousarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@441 99668b35-9821-0410-8761-19e4c4f06640
2010-05-06Integrated changes from unicode branch to trunkarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@383 99668b35-9821-0410-8761-19e4c4f06640
2009-10-29tests: Supported all pugixml compilation modesarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@191 99668b35-9821-0410-8761-19e4c4f06640
2009-10-20tests: Added more testsarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@162 99668b35-9821-0410-8761-19e4c4f06640
2009-10-12tests: Refactored checking macros, added writing testsarseny.kapoulkine
git-svn-id: http://pugixml.googlecode.com/svn/trunk@152 99668b35-9821-0410-8761-19e4c4f06640