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+
32+ std::string sInput =
33+ " some: \n "
34+ " - n1: 1\n "
35+ " n2: 2\n "
36+ " \n "
37+ " some2: r \n "
38+ ;
39+
40+ WsjcppYaml yaml;
41+ std::string sError ;
42+ if (!yaml.loadFromString (" test_append_element_issue_30.yml" , sInput , sError )) {
43+ std::cerr << sError << std::endl;
44+ return -1 ;
45+ }
46+
47+ WsjcppYamlNode *pSome = yaml.getRoot ()->getElement (" some" )->getElement (0 );
48+ pSome->setElementValue (" n3" , " 3" );
49+
50+ std::string sExpectedYaml =
51+ " some:\n "
52+ " - n1: 1\n "
53+ " n2: 2\n "
54+ " n3: 3\n "
55+ " \n "
56+ " some2: r"
57+ ;
58+
59+ std::string sSaved = yaml.getRoot ()->toString ();
60+
61+ if (sSaved != sExpectedYaml ) {
62+ std::cerr << " ERROR (1). Not equal. Expected: \n ---\n " << sExpectedYaml << " \n ---\n , but got \n ---\n " << sSaved << " \n ---\n " << std::endl;
63+ return -1 ;
64+ }
65+
66+ return 0 ;
67+ }
0 commit comments