mirror of
https://github.com/electronicarts/CNC_TS_and_RA2_Mission_Editor.git
synced 2025-05-01 01:21:41 -04:00
enriched more Ini UT, fixed value remove issue .
This commit is contained in:
parent
a2571dfc0f
commit
c3a31ef172
3 changed files with 108 additions and 3 deletions
|
@ -172,14 +172,17 @@ public:
|
|||
|
||||
void RemoveAt(size_t idx) {
|
||||
ASSERT(idx < value_pairs.size());
|
||||
for (auto affectedIdx = idx + 1; affectedIdx < value_pairs.size(); ++affectedIdx) {
|
||||
// delete from record first;
|
||||
auto const& pair = value_pairs.at(idx);
|
||||
ASSERT(value_pos.erase(pair.first) == 1);
|
||||
value_pairs.erase(value_pairs.begin() + idx);
|
||||
// now update all key-pos indexing, dec 1
|
||||
for (auto affectedIdx = idx; affectedIdx < value_pairs.size(); ++affectedIdx) {
|
||||
auto const& kvPair = value_pairs[affectedIdx];
|
||||
auto const it = value_pos.find(kvPair.first);
|
||||
ASSERT(it != value_pos.end());
|
||||
it->second--;
|
||||
}
|
||||
auto const itErased = value_pairs.erase(value_pairs.begin() + idx);
|
||||
ASSERT(value_pos.erase(itErased->first) == 1);
|
||||
}
|
||||
|
||||
void RemoveByKey(const CString& key) {
|
||||
|
|
|
@ -137,3 +137,104 @@ Count=10
|
|||
EXPECT_EQ(false, file.GetBool("Debug", "DisplayAllOverlay"));
|
||||
}
|
||||
|
||||
TEST(CIniFileClass, IniAddSectionTest) {
|
||||
auto const fileName = "test.ini";
|
||||
IniTestHelper helper(fileName, R"(
|
||||
[SlopeSetPiecesDirections]
|
||||
Count=10
|
||||
0=Right_1
|
||||
1=Left_1
|
||||
2=Top_1
|
||||
3=Bottom_1
|
||||
4=Right_2
|
||||
5=Left_2
|
||||
6=Left_2
|
||||
7=Bottom_2
|
||||
8=Top_2
|
||||
9=Top_2
|
||||
)");
|
||||
|
||||
CIniFile file;
|
||||
ASSERT_EQ(file.LoadFile(std::string(fileName)), 0);
|
||||
file.AddSection("Debug");
|
||||
auto pDebugSec = file.TryGetSection("Debug");
|
||||
ASSERT_NE(pDebugSec, nullptr);
|
||||
pDebugSec->SetBool("DisplayAllOverlay", false);
|
||||
pDebugSec->SetBool("AllowTunnels", true);
|
||||
EXPECT_EQ(true, file.GetBool("Debug", "AllowTunnels"));
|
||||
EXPECT_EQ(false, file.GetBool("Debug", "DisplayAllOverlay"));
|
||||
}
|
||||
|
||||
TEST(CIniFileClass, IniDeleteSectionTest) {
|
||||
auto const fileName = "test.ini";
|
||||
IniTestHelper helper(fileName, R"(
|
||||
[LUNARLimits]
|
||||
TreeMax=999
|
||||
TreeMin=999
|
||||
|
||||
[URBANLimits]
|
||||
TreeMax=999
|
||||
;TreeMax=27
|
||||
|
||||
[TEMPERATELimits]
|
||||
TreeMax=999
|
||||
;TreeMax=27
|
||||
|
||||
[SNOWLimits]
|
||||
TreeMax=999
|
||||
;TreeMax=27
|
||||
|
||||
[NEWURBANLimits]
|
||||
TreeMax=999
|
||||
;TreeMax=27
|
||||
|
||||
[DESERTLimits]
|
||||
TreeMin=30
|
||||
TreeMax=999
|
||||
)");
|
||||
|
||||
CIniFile file;
|
||||
ASSERT_EQ(file.LoadFile(std::string(fileName)), 0);
|
||||
|
||||
EXPECT_EQ(999, file.GetInteger("SNOWLimits", "TreeMax"));
|
||||
EXPECT_EQ(999, file.GetInteger("LUNARLimits", "TreeMin"));
|
||||
|
||||
EXPECT_EQ(6, file.Size());
|
||||
file.DeleteSection("SNOWLimits");
|
||||
|
||||
EXPECT_EQ(0, file.GetInteger("SNOWLimits", "TreeMax"));
|
||||
EXPECT_EQ(nullptr, file.TryGetSection("SNOWLimits"));
|
||||
EXPECT_EQ(5, file.Size());
|
||||
}
|
||||
|
||||
TEST(CIniFileClass, IniDeleteValueTest) {
|
||||
auto const fileName = "test.ini";
|
||||
IniTestHelper helper(fileName, R"(
|
||||
[LUNARLimits]
|
||||
TreeMax=999
|
||||
TreeMin=999
|
||||
|
||||
[NewUrbanInfo]
|
||||
Morphable2=114
|
||||
Ramps2=117
|
||||
Cliffs2=110
|
||||
CliffsWater2=112
|
||||
|
||||
; tileset ini overwritings
|
||||
; only used by FinalAlert
|
||||
[IgnoreSetTEMPERATE]
|
||||
0=77
|
||||
1=78
|
||||
2=79
|
||||
)");
|
||||
|
||||
CIniFile file;
|
||||
ASSERT_EQ(file.LoadFile(std::string(fileName)), 0);
|
||||
|
||||
EXPECT_EQ(114, file.GetInteger("NewUrbanInfo", "Morphable2"));
|
||||
file.RemoveValueByKey("NewUrbanInfo", "Morphable2");
|
||||
|
||||
EXPECT_EQ(0, file.GetInteger("NewUrbanInfo", "Morphable2"));
|
||||
EXPECT_EQ(false, file["NewUrbanInfo"].Exists("Morphable2"));
|
||||
|
||||
}
|
|
@ -107,6 +107,7 @@
|
|||
<AdditionalIncludeDirectories>$(SolutionDir)googletest\x64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
|
|
Loading…
Add table
Reference in a new issue