1 | BOOST_AUTO_TEST_CASE(ReadAndWriteWithSpecialCharacters)
|
---|
2 | {
|
---|
3 | using boost::property_tree::ptree;
|
---|
4 |
|
---|
5 | // the xml that will be turned into a ptree. Note the linefeed between Level_1 and Level_2 tags
|
---|
6 | std::string XmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Level_1>\n<Level_2><Item>0</Item></Level_2></Level_1>";
|
---|
7 |
|
---|
8 | std::stringstream StringStream1(XmlString);
|
---|
9 | std::stringstream StringStream2;
|
---|
10 |
|
---|
11 | // read the xml string
|
---|
12 | ptree Level1Tree;
|
---|
13 | read_xml(StringStream1,Level1Tree);
|
---|
14 |
|
---|
15 | // write the sub-tree at level 1 to string stream 2 as an xml
|
---|
16 | ptree Level2Tree = Level1Tree.get_child("Level_1");
|
---|
17 | write_xml(StringStream2,Level2Tree);
|
---|
18 |
|
---|
19 | // show that the xml string has an xml declaration followed by \n (boost version 1.56)
|
---|
20 | // or an xml declaration followed by \n\n (boost version 1.55 and earlier)
|
---|
21 | std::string Level2XmlString = StringStream2.str();
|
---|
22 |
|
---|
23 | if (BOOST_VERSION >= 105600)
|
---|
24 | {
|
---|
25 | BOOST_CHECK(Level2XmlString == "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n <Level_2><Item>0</Item></Level_2>");
|
---|
26 | }
|
---|
27 | else
|
---|
28 | {
|
---|
29 | BOOST_CHECK(Level2XmlString == "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Level_2><Item>0</Item></Level_2>");
|
---|
30 | }
|
---|
31 |
|
---|
32 | // reading the xml from string stream 2 throws an exception in boost 1.56 but not in boost 1.55
|
---|
33 | ptree OutputTree;
|
---|
34 | BOOST_CHECK_NO_THROW(read_xml(StringStream2,OutputTree));
|
---|
35 | }
|
---|