Fixed issue with YAML::Node reference usage.

This commit is contained in:
Pras Velagapudi 2022-02-13 05:25:31 -05:00
parent 7f23f3694b
commit f03461bb01
3 changed files with 10 additions and 7 deletions

View File

@ -98,7 +98,7 @@ include_directories(include SYSTEM
thirdparty/picojson-1.3.0 thirdparty/picojson-1.3.0
thirdparty/nlohmann-json-3.1.2 thirdparty/nlohmann-json-3.1.2
thirdparty/yaml-cpp-0.7.0/include thirdparty/yaml-cpp-0.7.0/include
) )
if(valijson_BUILD_TESTS) if(valijson_BUILD_TESTS)
if(NOT valijson_EXCLUDE_BOOST) if(NOT valijson_EXCLUDE_BOOST)

View File

@ -115,7 +115,7 @@ class YamlCppArray
} }
/// Reference to the contained value /// Reference to the contained value
const YAML::Node &m_value; const YAML::Node m_value;
}; };
/** /**
@ -203,7 +203,7 @@ class YamlCppObject
} }
/// Reference to the contained object /// Reference to the contained object
const YAML::Node &m_value; const YAML::Node m_value;
}; };
/** /**
@ -222,7 +222,8 @@ class YamlCppFrozenValue : public FrozenValue
* *
* @param source the YamlCpp value to be copied * @param source the YamlCpp value to be copied
*/ */
explicit YamlCppFrozenValue(YAML::Node source) : m_value(std::move(source)) explicit YamlCppFrozenValue(YAML::Node source)
: m_value(YAML::Clone(source))
{ {
} }
@ -444,7 +445,7 @@ class YamlCppValue
} }
/// Reference to the contained YamlCpp value. /// Reference to the contained YamlCpp value.
const YAML::Node &m_value; const YAML::Node m_value;
}; };
/** /**
@ -689,4 +690,4 @@ YamlCppObject::find(const std::string &propertyName) const
} }
} // namespace adapters } // namespace adapters
} // namespace valijson } // namespace valijson

View File

@ -74,7 +74,9 @@ TEST_F(TestYamlCppAdapter, BasicObjectIteration)
unsigned int expectedValue = 0; unsigned int expectedValue = 0;
for (const valijson::adapters::YamlCppAdapter::ObjectMember member : for (const valijson::adapters::YamlCppAdapter::ObjectMember member :
adapter.getObject()) { adapter.getObject()) {
ASSERT_TRUE(member.second.isNumber()); ASSERT_TRUE(member.second.isString());
ASSERT_FALSE(member.second.isNumber());
ASSERT_TRUE(member.second.maybeDouble());
EXPECT_EQ(std::to_string(expectedValue), member.first); EXPECT_EQ(std::to_string(expectedValue), member.first);
EXPECT_EQ(double(expectedValue), member.second.getDouble()); EXPECT_EQ(double(expectedValue), member.second.getDouble());
expectedValue++; expectedValue++;