1+ /*
2+ MIT License
3+
4+ Copyright (c) 2019-2025 wsjcpp
5+
6+ Permission is hereby granted, free of charge, to any person obtaining a copy
7+ of this software and associated documentation files (the "Software"), to deal
8+ in the Software without restriction, including without limitation the rights
9+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+ copies of the Software, and to permit persons to whom the Software is
11+ furnished to do so, subject to the following conditions:
12+
13+ The above copyright notice and this permission notice shall be included in all
14+ copies or substantial portions of the Software.
15+
16+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+ SOFTWARE.
23+
24+ Official Source Code: https://github.com/wsjcpp/wsjcpp-yaml
25+ */
26+
27+ #include < iostream>
28+ #include < wsjcpp_yaml.h>
29+
30+ int main () {
31+ // https://github.com/wsjcpp/wsjcpp-yaml/issues/24
32+
33+ std::string sInput =
34+ " # commet1:\n "
35+ " val1: 1\n "
36+ ;
37+
38+ WsjcppYaml yaml;
39+ std::string sError ;
40+ if (!yaml.loadFromString (" input.yml" , sInput , sError )) {
41+ std::cerr << sError << std::endl;
42+ return -1 ;
43+ }
44+
45+ yaml[" val1" ].val (" some\n some" );
46+ yaml.getRoot ()->setElementValue (" v\n g" , " opa\n done" );
47+
48+ std::string sOutput = " " ;
49+ if (!yaml.saveToString (sOutput , sError )) {
50+ std::cerr << sError << std::endl;
51+ return -1 ;
52+ }
53+
54+ std::string sExpected =
55+ " # commet1:\n "
56+ " val1: \" some\\ nsome\"\n "
57+ " \" v\\ ng\" : \" opa\\ ndone\"\n "
58+ ;
59+
60+ if (sOutput != sExpected ) {
61+ std::cerr << " sOutput != sExpected" << std::endl;
62+ std::cerr << " Got: \n ----\n " << sOutput << " \n ------\n Expected\n -----\n " << sExpected << " \n ------\n " << std::endl;
63+ return -1 ;
64+ }
65+ return 0 ;
66+ }
0 commit comments