|
26 | 26 | using System.Collections.Generic; |
27 | 27 | using System.IO; |
28 | 28 | using Xunit; |
| 29 | +using CK3Province = ImperatorToCK3.CK3.Provinces.Province; |
29 | 30 |
|
30 | 31 | namespace ImperatorToCK3.UnitTests.Mappers.TagTitle; |
31 | 32 |
|
@@ -367,6 +368,49 @@ public void GetCK3TitleRankReturnsCorrectRank() { |
367 | 368 | Assert.Equal('h', mapper.GetTitleForTag(tag12, "Test Hegemony", maxTitleRank: TitleRank.hegemony, ck3LocDB)![0]); |
368 | 369 | } |
369 | 370 |
|
| 371 | + [Fact] |
| 372 | + public void BuildCountyByRegionIndexGroupsCountiesByRegion() { |
| 373 | + // Set up titles: two counties in region_a, one in region_b. |
| 374 | + var titles = new Title.LandedTitles(); |
| 375 | + titles.LoadTitles(new BufferedReader( |
| 376 | + "c_county1 = { b_barony1 = { province = 101 } }\n" + |
| 377 | + "c_county2 = { b_barony2 = { province = 102 } }\n" + |
| 378 | + "c_county_b = { b_barony3 = { province = 201 } }"), |
| 379 | + ColorFactory); |
| 380 | + |
| 381 | + // Set up CK3 provinces mapped to IR provinces. |
| 382 | + var irProv11 = new ImperatorToCK3.Imperator.Provinces.Province(11); |
| 383 | + var irProv12 = new ImperatorToCK3.Imperator.Provinces.Province(12); |
| 384 | + var irProv21 = new ImperatorToCK3.Imperator.Provinces.Province(21); |
| 385 | + var ck3Provinces = new ProvinceCollection(); |
| 386 | + var ck3Prov101 = new CK3Province(101) { PrimaryImperatorProvince = irProv11 }; |
| 387 | + var ck3Prov102 = new CK3Province(102) { PrimaryImperatorProvince = irProv12 }; |
| 388 | + var ck3Prov201 = new CK3Province(201) { PrimaryImperatorProvince = irProv21 }; |
| 389 | + ck3Provinces.Add(ck3Prov101); |
| 390 | + ck3Provinces.Add(ck3Prov102); |
| 391 | + ck3Provinces.Add(ck3Prov201); |
| 392 | + |
| 393 | + // Set up IR region mapper: region_a has IR provinces 11 and 12; region_b has 21. |
| 394 | + var irProvinces = new ImperatorToCK3.Imperator.Provinces.ProvinceCollection(); |
| 395 | + var testAreas = new AreaCollection(); |
| 396 | + testAreas.Add(new Area("area_a", new BufferedReader("provinces = { 11 12 }"), irProvinces)); |
| 397 | + testAreas.Add(new Area("area_b", new BufferedReader("provinces = { 21 }"), irProvinces)); |
| 398 | + var testRegionMapper = new ImperatorRegionMapper(testAreas, irMapData); |
| 399 | + testRegionMapper.Regions.Add(new ImperatorRegion("region_a", new BufferedReader("areas = { area_a }"), testAreas, ColorFactory)); |
| 400 | + testRegionMapper.Regions.Add(new ImperatorRegion("region_b", new BufferedReader("areas = { area_b }"), testAreas, ColorFactory)); |
| 401 | + |
| 402 | + var index = TagTitleMapper.BuildCountyByRegionIndex(titles, ck3Provinces, testRegionMapper); |
| 403 | + |
| 404 | + Assert.Equal(2, index.Count); |
| 405 | + Assert.True(index.ContainsKey("region_a")); |
| 406 | + Assert.True(index.ContainsKey("region_b")); |
| 407 | + Assert.Equal(2, index["region_a"].Count); // c_county1 and c_county2 |
| 408 | + Assert.Single(index["region_b"]); |
| 409 | + Assert.Contains(index["region_a"], t => t.Id == "c_county1"); |
| 410 | + Assert.Contains(index["region_a"], t => t.Id == "c_county2"); |
| 411 | + Assert.Equal("c_county_b", index["region_b"][0].Id); |
| 412 | + } |
| 413 | + |
370 | 414 | [Fact] |
371 | 415 | public void GetTitleForTagPreventsLocKeyHashConflict() { |
372 | 416 | // k_IRTOCK3_ATV_adj and building_nishapur_mines_02 have a conflicting Murmur3A hash. |
|
0 commit comments