Implemented IniMeta helpers to fetch combination of ini files .

This commit is contained in:
Zero Fanker 2024-04-25 22:14:06 -04:00
parent d1a32df54b
commit 90fa8eb408
10 changed files with 308 additions and 4 deletions

View file

@ -0,0 +1,70 @@
#include "stdafx.h"
#include "../MissionEditor/INIMeta.h"
#if 1
TEST(IniFileGroup, ValidIniWithValidContentTest) {
CIniFile iniFile1;
CIniFile iniFile2;
const CString referenceList[] = {
CString("GANCST"),
CString("GAPOWR"),
CString("NACNST"),
CString("NAPOWR"),
};
iniFile1.SetString("BuildingTypes", "0", "GANCST");
iniFile1.SetString("BuildingTypes", "1", "GAPOWR");
iniFile1.SetString("GACNST", "Strength", "1000");
iniFile1.SetString("E2", "Strength", "100");
iniFile2.SetString("BuildingTypes", "2", "NACNST");
iniFile2.SetString("BuildingTypes", "3", "NAPOWR");
iniFile2.SetString("GACNST", "Strength", "2000");
iniFile2.SetString("NEWIFV", "Cost", "1000");
IniFileGroup group;
group.Append(iniFile1);
group.Append(iniFile2);
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++]);
}
EXPECT_EQ(group.GetString("GACNST", "Strength"), "2000");
}
#endif
TEST(IniFileGroup, EmptyIniContentTest) {
CIniFile iniFile1;
CIniFile iniFile2;
IniFileGroup group;
group.Append(iniFile1);
group.Append(iniFile2);
auto const bldTypes = group.GetSection("BuildingTypes");
auto contentCount = 0;
for (auto it = bldTypes.begin(); it != bldTypes.end(); ++it) {
auto const& [key, val] = *it;
cout << key << "=" << val << endl;
contentCount++;
}
EXPECT_EQ(contentCount, 0);
iniFile1.SetString("BuildingTypes", "0", "GANCST");
contentCount = 0;
for (auto it = bldTypes.begin(); it != bldTypes.end(); ++it) {
auto const& [key, val] = *it;
cout << key << "=" << val << endl;
contentCount++;
}
EXPECT_EQ(contentCount, 1);
}

View file

@ -27,6 +27,9 @@
#include <iostream>
#include <afxwin.h>
using std::cout;
using std::endl;
#if !defined(ASSERT)
#define ASSERT(x) if (!(x)) throw("assertion failed");
#endif

View file

@ -102,9 +102,9 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;_AFXDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_DEBUG;NOMINMAX;_CONSOLE;_AFXDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(SolutionDir)googletest\x64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)googletest\x64\include;$(SolutionDir)MissionEditorPackLib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PrecompiledHeader>Create</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<LanguageStandard>stdcpp20</LanguageStandard>
@ -133,11 +133,14 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\MissionEditor\IniFile.cpp" />
<ClCompile Include="..\MissionEditor\INIMeta.cpp" />
<ClCompile Include="CIni_Meta_Test.cpp" />
<ClCompile Include="CIni_Test.cpp" />
<ClCompile Include="UnitTest.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\MissionEditor\IniFile.h" />
<ClInclude Include="..\MissionEditor\INIMeta.h" />
<ClInclude Include="StdAfx.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

View file

@ -24,6 +24,12 @@
<ClCompile Include="..\MissionEditor\IniFile.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="CIni_Meta_Test.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="..\MissionEditor\INIMeta.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="StdAfx.h">
@ -32,5 +38,8 @@
<ClInclude Include="..\MissionEditor\IniFile.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="..\MissionEditor\INIMeta.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
</Project>