diff --git a/MissionEditor/INIMeta.h b/MissionEditor/INIMeta.h index 57528b5..6339d69 100644 --- a/MissionEditor/INIMeta.h +++ b/MissionEditor/INIMeta.h @@ -103,12 +103,17 @@ public: const CString& m_section; }; - IniSectionGroup(const IniFileGroup& source, const CString& secName) : - m_source(source), + IniSectionGroup(IniFileGroup&& source, const CString& secName) : + m_source(std::move(source)), m_section(secName) { } + IniSectionGroup(const IniFileGroup& source, const CString& secName) : + IniSectionGroup(IniFileGroup(source), secName) + { + } + Iterator begin() const { auto groupBeg = m_source.begin(); auto [secItBeg, secItEnd] = acquireNextKvGroup(groupBeg); @@ -146,6 +151,6 @@ private: return acquireNextKvGroup(m_section, beg, m_source.end()); } - const IniFileGroup& m_source; + const IniFileGroup m_source; CString m_section; }; diff --git a/UnitTest/CIni_Meta_Test.cpp b/UnitTest/CIni_Meta_Test.cpp index 41a6142..c20d274 100644 --- a/UnitTest/CIni_Meta_Test.cpp +++ b/UnitTest/CIni_Meta_Test.cpp @@ -29,12 +29,18 @@ TEST(IniFileGroup, ValidIniWithValidContentTest) { auto const bldTypes = group.GetSection("BuildingTypes"); auto idx = 0; - //for (auto const& [key, val] : bldTypes) { + for (auto it = bldTypes.begin(); it != bldTypes.end(); ++it) { auto const& [key, val] = *it; EXPECT_EQ(val, referenceList[idx++]); } + // This is to test RHS issue + idx = 0; + for (auto const& [key, val] : group.GetSection("BuildingTypes")) { + EXPECT_EQ(val, referenceList[idx++]); + } + EXPECT_EQ(group.GetString("GACNST", "Strength"), "2000"); } #endif