Skip to content

Commit 05eb136

Browse files
authored
Governorship conversion part I (#322) #minor
* Create Governorship.cs * Create GovernorshipTests.cs * Jobs * Create governorMappings.txt * new Jobs constructor * read jobs from save * Region to title mapping * Update commonItems.NET * Update World.cs * InitializeFromGovernorship * ImportImperatorGovernorship * Update Title.cs * Province mapping improvement * Update province_mappings.txt * LandedTitles.LinkCapitals * Governorship conversion polishing * Governorship loc fixes * PR tweaks * Fix governorship loc for PRY, SEL, MRY * PR tweak * Naming tweaks * New tests for TagTitleMapper * TitleCanBeMatchedFromGovernorship test * Remove unused field * LocBlockCanBeCopyConstructed test * CapitalsAreLinked test * Fix uodating from other title * Null checks * Remove redundant parentheses * Extract locak function * Move county holder caching out of OverWriteCountiesHistory * Reverse condition * Fix build
1 parent 8b8454c commit 05eb136

File tree

20 files changed

+969
-296
lines changed

20 files changed

+969
-296
lines changed

ImperatorToCK3.UnitTests/CK3/Titles/LandedTitlesTests.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,22 @@ public void TitlesCanBeAddedByMods() {
9292

9393
Assert.Equal(10, titles.StoredTitles.Count);
9494
}
95+
96+
[Fact]
97+
public void CapitalsAreLinked() {
98+
var reader = new BufferedReader(
99+
"e_empire = { capital=c_county " +
100+
"k_kingdom = { d_duchy = { c_county = { b_barony = { province = 12 } } } } " +
101+
"}"
102+
);
103+
var titles = new LandedTitles();
104+
titles.LoadTitles(reader);
105+
106+
var empire = titles.StoredTitles["e_empire"];
107+
var capitalCounty = empire.CapitalCounty;
108+
Assert.True(capitalCounty.HasValue);
109+
Assert.Equal("c_county", capitalCounty.Value.Key);
110+
Assert.Equal("c_county", capitalCounty.Value.Value.Name);
111+
}
95112
}
96113
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using commonItems;
2+
using ImperatorToCK3.Imperator.Jobs;
3+
using Xunit;
4+
5+
namespace ImperatorToCK3.UnitTests.Imperator.Jobs {
6+
public class GovernorshipTests {
7+
[Fact]
8+
public void FieldsDefaultToCorrectValues() {
9+
var reader = new BufferedReader(string.Empty);
10+
var governorship = new Governorship(reader);
11+
Assert.Equal((ulong)0, governorship.CountryID);
12+
Assert.Equal((ulong)0, governorship.CharacterID);
13+
Assert.Equal(new Date(1, 1, 1), governorship.StartDate);
14+
Assert.True(string.IsNullOrEmpty(governorship.RegionName));
15+
}
16+
[Fact]
17+
public void FieldsCanBeSet() {
18+
var reader = new BufferedReader(
19+
"who=589\n" +
20+
"character=25212\n" +
21+
"start_date=450.10.1\n" +
22+
"governorship = \"galatia_region\""
23+
);
24+
var governorship = new Governorship(reader);
25+
Assert.Equal((ulong)589, governorship.CountryID);
26+
Assert.Equal((ulong)25212, governorship.CharacterID);
27+
Assert.Equal(new Date(450, 10, 1, AUC: true), governorship.StartDate);
28+
Assert.Equal("galatia_region", governorship.RegionName);
29+
}
30+
}
31+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using System;
2+
using System.IO;
3+
using commonItems;
4+
using Xunit;
5+
6+
namespace ImperatorToCK3.UnitTests.Imperator.Jobs {
7+
[Collection("Sequential")]
8+
[CollectionDefinition("Sequential", DisableParallelization = true)]
9+
public class JobsTests {
10+
[Fact]
11+
public void GovernorshipsDefaultToEmpty() {
12+
var jobs = new ImperatorToCK3.Imperator.Jobs.Jobs();
13+
Assert.Empty(jobs.Governorships);
14+
}
15+
[Fact]
16+
public void GovernorshipsCanBeRead() {
17+
var reader = new BufferedReader(
18+
"province_job={who=1} province_job={who=2}"
19+
);
20+
var jobs = new ImperatorToCK3.Imperator.Jobs.Jobs(reader);
21+
Assert.Collection(jobs.Governorships,
22+
item1 => Assert.Equal((ulong)1, item1.CountryID),
23+
item2 => Assert.Equal((ulong)2, item2.CountryID)
24+
);
25+
}
26+
[Fact]
27+
public void IgnoredTokensAreLogged() {
28+
var output = new StringWriter();
29+
Console.SetOut(output);
30+
31+
var reader = new BufferedReader(
32+
"useless_job = {}"
33+
);
34+
_ = new ImperatorToCK3.Imperator.Jobs.Jobs(reader);
35+
36+
Assert.Contains("Ignored Jobs tokens: useless_job", output.ToString());
37+
}
38+
}
39+
}

ImperatorToCK3.UnitTests/ImperatorToCK3.UnitTests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
<None Update="TestFiles\configurables\definite_form_names.txt">
4141
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
4242
</None>
43+
<None Update="TestFiles\configurables\governorMappings.txt">
44+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
45+
</None>
4346
<None Update="TestFiles\configurables\nickname_map.txt">
4447
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
4548
</None>

ImperatorToCK3.UnitTests/Mappers/Localization/LocalizationMapperTests.cs

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
using commonItems;
44

55
namespace ImperatorToCK3.UnitTests.Mappers.Localization {
6-
public class LocalizationMapperTests {
7-
[Fact] public void LocalisationsCanBeLoadedAndMatched() {
6+
public class LocalizationMapperTests {
7+
[Fact]
8+
public void LocalisationsCanBeLoadedAndMatched() {
89
var reader1 = new BufferedReader(
910
"l_english:\n" +
1011
" key1:0 \"value 1\" # comment\n" +
@@ -82,7 +83,8 @@ public void LocalisationsReturnsEnglishForMissingLanguage() {
8283
Assert.Equal("value 1", ((LocBlock)locs.GetLocBlockForKey("key1")).french);
8384
}
8485

85-
[Fact] public void LocCanBeModifiedByMethodForEveryLanguage() {
86+
[Fact]
87+
public void LocCanBeModifiedByMethodForEveryLanguage() {
8688
var nameLocBlock = new LocBlock {
8789
english = "$ADJ$ Revolt",
8890
french = "$ADJ$ révolte",
@@ -110,11 +112,13 @@ [Fact] public void LocCanBeModifiedByMethodForEveryLanguage() {
110112
Assert.Equal("Romana revuelta", nameLocBlock.spanish);
111113
}
112114

113-
[Fact] public void LocalizationCanBeAddedForKey() {
115+
[Fact]
116+
public void LocalizationCanBeAddedForKey() {
114117
var localizationMapper = new LocalizationMapper();
115118
Assert.Null(localizationMapper.GetLocBlockForKey("key1"));
116119
localizationMapper.AddLocalization("key1", new LocBlock {
117-
english = "Roman", french = "Romain"
120+
english = "Roman",
121+
french = "Romain"
118122
});
119123

120124
var locBlock = localizationMapper.GetLocBlockForKey("key1");
@@ -124,6 +128,25 @@ [Fact] public void LocalizationCanBeAddedForKey() {
124128
Assert.Equal("Roman", locBlock.russian);
125129
Assert.Equal("Roman", locBlock.simp_chinese);
126130
Assert.Equal("Roman", locBlock.spanish);
127-
}
131+
}
132+
133+
[Fact]
134+
public void LocBlockCanBeCopyConstructed() {
135+
var origLocBlock = new LocBlock {
136+
english = "a",
137+
french = "b",
138+
german = "c",
139+
russian = "d",
140+
simp_chinese = "e",
141+
spanish = "f"
142+
};
143+
var copyLocBlock = new LocBlock(origLocBlock);
144+
Assert.Equal("a", copyLocBlock.english);
145+
Assert.Equal("b", copyLocBlock.french);
146+
Assert.Equal("c", copyLocBlock.german);
147+
Assert.Equal("d", copyLocBlock.russian);
148+
Assert.Equal("e", copyLocBlock.simp_chinese);
149+
Assert.Equal("f", copyLocBlock.spanish);
150+
}
128151
}
129152
}

ImperatorToCK3.UnitTests/Mappers/TagTitle/TagTitleMappingTests.cs renamed to ImperatorToCK3.UnitTests/Mappers/TagTitle/MappingTests.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,57 +3,57 @@
33
using Xunit;
44

55
namespace ImperatorToCK3.UnitTests.Mappers.TagTitle {
6-
public class TagTitleMappingTests {
6+
public class MappingTests {
77
[Fact]
88
public void SimpleTagMatch() {
99
var reader = new BufferedReader("{ ck3 = e_roman_empire imp = ROM }");
10-
var mapping = TagTitleMapping.Parse(reader);
11-
var match = mapping.TagRankMatch("ROM", "");
10+
var mapping = Mapping.Parse(reader);
11+
var match = mapping.RankMatch("ROM", "");
1212

1313
Assert.Equal("e_roman_empire", match);
1414
}
1515

1616
[Fact]
1717
public void SimpleTagMatchFailsOnWrongTag() {
1818
var reader = new BufferedReader("{ ck3 = e_roman_empire imp = REM }");
19-
var mapping = TagTitleMapping.Parse(reader);
20-
var match = mapping.TagRankMatch("ROM", "");
19+
var mapping = Mapping.Parse(reader);
20+
var match = mapping.RankMatch("ROM", "");
2121

2222
Assert.Null(match);
2323
}
2424

2525
[Fact]
2626
public void SimpleTagMatchFailsOnNoTag() {
2727
var reader = new BufferedReader("{ ck3 = e_roman_empire }");
28-
var mapping = TagTitleMapping.Parse(reader);
29-
var match = mapping.TagRankMatch("ROM", "");
28+
var mapping = Mapping.Parse(reader);
29+
var match = mapping.RankMatch("ROM", "");
3030

3131
Assert.Null(match);
3232
}
3333

3434
[Fact]
3535
public void TagRankMatch() {
3636
var reader = new BufferedReader("{ ck3 = e_roman_empire imp = ROM rank = e }");
37-
var mapping = TagTitleMapping.Parse(reader);
38-
var match = mapping.TagRankMatch("ROM", "e");
37+
var mapping = Mapping.Parse(reader);
38+
var match = mapping.RankMatch("ROM", "e");
3939

4040
Assert.Equal("e_roman_empire", match);
4141
}
4242

4343
[Fact]
4444
public void TagRankMatchFailsOnWrongRank() {
4545
var reader = new BufferedReader("{ ck3 = e_roman_empire imp = ROM rank = k }");
46-
var mapping = TagTitleMapping.Parse(reader);
47-
var match = mapping.TagRankMatch("ROM", "e");
46+
var mapping = Mapping.Parse(reader);
47+
var match = mapping.RankMatch("ROM", "e");
4848

4949
Assert.Null(match);
5050
}
5151

5252
[Fact]
5353
public void TagRankMatchSucceedsOnNoRank() {
5454
var reader = new BufferedReader("{ ck3 = e_roman_empire imp = ROM }");
55-
var mapping = TagTitleMapping.Parse(reader);
56-
var match = mapping.TagRankMatch("ROM", "e");
55+
var mapping = Mapping.Parse(reader);
56+
var match = mapping.RankMatch("ROM", "e");
5757

5858
Assert.Equal("e_roman_empire", match);
5959
}

ImperatorToCK3.UnitTests/Mappers/TagTitle/TagTitleMapperTests.cs

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,81 @@ namespace ImperatorToCK3.UnitTests.Mappers.TagTitle {
66
[Collection("Sequential")]
77
[CollectionDefinition("Sequential", DisableParallelization = true)]
88
public class TagTitleMapperTests {
9+
const string tagTitleMappingsPath = "TestFiles/configurables/title_map.txt";
10+
const string governorshipTitleMappingsPath = "TestFiles/configurables/governorMappings.txt";
11+
912
[Fact]
10-
public void TitleCanBeMatched() {
11-
var mapper = new TagTitleMapper("TestFiles/configurables/title_map.txt"); // reads title_map.txt from TestFiles
13+
public void TitleCanBeMatchedFromTag() {
14+
var mapper = new TagTitleMapper(tagTitleMappingsPath, governorshipTitleMappingsPath); // reads title_map.txt from TestFiles
1215
var match = mapper.GetTitleForTag("CRT", CountryRank.majorPower);
1316

1417
Assert.Equal("k_krete", match);
1518
}
19+
[Fact]
20+
public void TitleCanBeMatchedFromGovernorship() {
21+
var mapper = new TagTitleMapper(tagTitleMappingsPath, governorshipTitleMappingsPath); // reads title_map.txt from TestFiles
22+
var match = mapper.GetTitleForGovernorship("central_italy_region", "ROM", "e_roman_empire");
23+
24+
Assert.Equal("k_romagna", match);
25+
}
1626

1727
[Fact]
1828
public void TitleCanBeMatchedByRanklessLink() {
19-
var mapper = new TagTitleMapper("TestFiles/configurables/title_map.txt"); // reads title_map.txt from TestFiles
29+
var mapper = new TagTitleMapper(tagTitleMappingsPath, governorshipTitleMappingsPath); // reads title_map.txt from TestFiles
2030
var match = mapper.GetTitleForTag("RAN", CountryRank.majorPower);
2131

2232
Assert.Equal("d_rankless", match);
2333
}
2434

2535
[Fact]
26-
public void TitleCanBeGenerated() {
27-
var mapper = new TagTitleMapper("TestFiles/configurables/title_map.txt");
36+
public void TitleCanBeGeneratedFromTag() {
37+
var mapper = new TagTitleMapper(tagTitleMappingsPath, governorshipTitleMappingsPath);
2838
var match = mapper.GetTitleForTag("ROM", CountryRank.localPower, "Rome");
2939
var match2 = mapper.GetTitleForTag("DRE", CountryRank.localPower, "Dre Empire");
3040

3141
Assert.Equal("k_IMPTOCK3_ROM", match);
3242
Assert.Equal("e_IMPTOCK3_DRE", match2);
3343
}
44+
[Fact]
45+
public void TitleCanBeGeneratedFromGovernorship() {
46+
var mapper = new TagTitleMapper(tagTitleMappingsPath, governorshipTitleMappingsPath);
47+
var match = mapper.GetTitleForGovernorship("apulia_region", "ROM", "e_roman_empire");
48+
var match2 = mapper.GetTitleForGovernorship("pepe_region", "DRE", "k_dre_empire");
49+
50+
Assert.Equal("k_IMPTOCK3_ROM_apulia_region", match);
51+
Assert.Equal("d_IMPTOCK3_DRE_pepe_region", match2);
52+
}
3453

3554
[Fact]
36-
public void GetTitleForTagReturnsNulloptOnEmptyParameter() {
37-
var mapper = new TagTitleMapper("TestFiles/configurables/title_map.txt");
55+
public void GetTitleForTagReturnsNullOnEmptyParameter() {
56+
var mapper = new TagTitleMapper(tagTitleMappingsPath, governorshipTitleMappingsPath);
3857
var match = mapper.GetTitleForTag("", CountryRank.migrantHorde, "");
3958

4059
Assert.Null(match);
4160
}
61+
[Fact]
62+
public void GetTitleGovernorshipTagReturnsNullOnEmptyParameter() {
63+
var mapper = new TagTitleMapper(tagTitleMappingsPath, governorshipTitleMappingsPath);
64+
var match = mapper.GetTitleForGovernorship("", "", "");
65+
66+
Assert.Null(match);
67+
}
4268

4369
[Fact]
4470
public void TagCanBeRegistered() {
45-
var mapper = new TagTitleMapper("TestFiles/configurables/title_map.txt");
71+
var mapper = new TagTitleMapper(tagTitleMappingsPath, governorshipTitleMappingsPath);
4672
mapper.RegisterTag("BOR", "e_boredom");
4773
var match = mapper.GetTitleForTag("BOR", CountryRank.localPower);
4874

4975
Assert.Equal("e_boredom", match);
5076
}
77+
[Fact]
78+
public void GovernorshipCanBeRegistered() {
79+
var mapper = new TagTitleMapper(tagTitleMappingsPath, governorshipTitleMappingsPath);
80+
mapper.RegisterGovernorship("aquitaine_region", "BOR", "k_atlantis");
81+
var match = mapper.GetTitleForGovernorship("aquitaine_region", "BOR", "e_roman_empire");
82+
83+
Assert.Equal("k_atlantis", match);
84+
}
5185
}
5286
}

0 commit comments

Comments
 (0)