コード例 #1
0
        public void TitlesCanBeOverriddenByMods()
        {
            var reader = new BufferedReader(
                "e_empire1 = { k_kingdom2 = { d_duchy3 = { b_barony4 = { province = 12 } } } }\n" +
                "c_county5 = { landless = yes }\n"
                );

            var titles = new LandedTitles();

            titles.LoadTitles(reader);

            var reader2 = new BufferedReader(
                "b_barony4 = { province = 15 }\n" +
                "c_county5 = { landless = NO }\n"
                );

            titles.LoadTitles(reader2);

            var barony = titles.StoredTitles["b_barony4"];
            var county = titles.StoredTitles["c_county5"];

            Assert.Equal(5, titles.StoredTitles.Count);
            Assert.Equal((ulong)15, barony.Province);
            Assert.False(county.Landless);
        }
コード例 #2
0
ファイル: Title.cs プロジェクト: Zemurin/ImperatorToCK3
 private Title(
     LandedTitles parentCollection,
     Governorship governorship,
     Country country,
     Imperator.Characters.CharacterCollection imperatorCharacters,
     bool regionHasMultipleGovernorships,
     LocDB locDB,
     ProvinceMapper provinceMapper,
     CoaMapper coaMapper,
     TagTitleMapper tagTitleMapper,
     DefiniteFormMapper definiteFormMapper,
     ImperatorRegionMapper imperatorRegionMapper
     )
 {
     this.parentCollection = parentCollection;
     Id = DetermineName(governorship, country, tagTitleMapper);
     SetRank();
     InitializeFromGovernorship(
         governorship,
         country,
         imperatorCharacters,
         regionHasMultipleGovernorships,
         locDB,
         provinceMapper,
         definiteFormMapper,
         imperatorRegionMapper
         );
 }
コード例 #3
0
        public void TitlesDefaultToEmpty()
        {
            var reader = new BufferedReader(string.Empty);
            var titles = new LandedTitles();

            titles.LoadTitles(reader);

            Assert.Empty(titles.StoredTitles);
        }
コード例 #4
0
        public void LocationServicesSucceedsForProvinceField()
        {
            var          mapper       = new CK3RegionMapper();
            var          landedTitles = new LandedTitles();
            const string regionPath   = "TestFiles/regions/CK3RegionMapperTests/LocationServicesSucceedsForProvinceField.txt";

            mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            Assert.True(mapper.ProvinceIsInRegion(69, "test_region"));
        }
コード例 #5
0
        public void RegionMapperCanBeEnabled()
        {
            // We start humble, it's a machine.
            var          mapper       = new CK3RegionMapper();
            var          landedTitles = new LandedTitles();
            const string regionPath   = "TestFiles/regions/CK3RegionMapperTests/empty.txt";

            mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);
            Assert.False(mapper.ProvinceIsInRegion(1, "test"));
            Assert.False(mapper.RegionNameIsValid("test"));
            Assert.Null(mapper.GetParentCountyName(1));
            Assert.Null(mapper.GetParentDuchyName(1));
            Assert.Null(mapper.GetParentRegionName(1));
        }
コード例 #6
0
        public void LocationServicesSucceedsForCountyField()
        {
            var mapper             = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "c_athens = { b_athens = { province = 79 } b_newbarony = { province = 56 } }"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CK3RegionMapperTests/LocationServicesSucceedsForCountyField.txt";

            mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            Assert.True(mapper.ProvinceIsInRegion(79, "test_region"));
        }
コード例 #7
0
        public void LoadingBrokenCountyWillThrowException()
        {
            var mapper             = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_anglia = { d_aquitane = { c_mers_broken = { b_hgy = { province = 69 } } } } \n"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CK3RegionMapperTests/LoadingBrokenCountyWillThrowException.txt";

            void action() => mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            KeyNotFoundException exception = Assert.Throws <KeyNotFoundException>(action);

            Assert.Equal("Region's test_region county c_mers does not exist!", exception.Message);
        }
コード例 #8
0
        public void LocationServicesFailForNonsense()
        {
            var mapper             = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_ugada = { d_wakaba = { c_athens = { b_athens = { province = 79 } b_newbarony = { province = 56 } } } } \n" +
                "k_ghef = { d_hujhu = { c_defff = { b_cringe = { province = 6 } b_newbarony2 = { province = 4 } } } }"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CK3RegionMapperTests/LocationServicesFailForNonsense.txt";

            mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            Assert.False(mapper.ProvinceIsInRegion(1, "nonsense"));
            Assert.False(mapper.ProvinceIsInRegion(6, "test_superregion"));
        }
コード例 #9
0
        public void LocationServicesCorrectlyFail()
        {
            var mapper             = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "d_testduchy = { 1 2 3 } \n" +
                "d_testduchy2 = { 4 5 6 } "
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CK3RegionMapperTests/LocationServicesCorrectlyFail.txt";

            mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            Assert.False(mapper.ProvinceIsInRegion(4, "d_testduchy"));             // province in different duchy
            Assert.False(mapper.ProvinceIsInRegion(9, "d_testduchy"));             // province missing completely
            Assert.False(mapper.ProvinceIsInRegion(5, "test_region"));             // province in different region
        }
コード例 #10
0
        public void TitlesCanBeLoadedRecursively()
        {
            var reader = new BufferedReader(
                "e_empire1 = { k_kingdom2 = { d_duchy3 = { b_barony4 = { province = 12 } } } }\n" +
                "c_county5 = { landless = yes }\n"
                );

            var titles = new LandedTitles();

            titles.LoadTitles(reader);

            var barony = titles.StoredTitles["b_barony4"];
            var county = titles.StoredTitles["c_county5"];

            Assert.Equal(5, titles.StoredTitles.Count);
            Assert.Equal((ulong)12, barony.Province);
            Assert.True(county.Landless);
        }
コード例 #11
0
        public void WrongParentLocationsReturnNull()
        {
            var mapper             = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "d_testduchy = { 1 2 3 } \n" +
                "d_testduchy2 = { 4 5 6 } "
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CK3RegionMapperTests/WrongParentLocationsReturnNull.txt";

            mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            Assert.Null(mapper.GetParentCountyName(7));
            Assert.Null(mapper.GetParentDuchyName(7));
            Assert.Null(mapper.GetParentRegionName(7));
        }
コード例 #12
0
        public void CapitalsAreLinked()
        {
            var reader = new BufferedReader(
                "e_empire = { capital=c_county " +
                "k_kingdom = { d_duchy = { c_county = { b_barony = { province = 12 } } } } " +
                "}"
                );
            var titles = new LandedTitles();

            titles.LoadTitles(reader);

            var empire        = titles.StoredTitles["e_empire"];
            var capitalCounty = empire.CapitalCounty;

            Assert.True(capitalCounty.HasValue);
            Assert.Equal("c_county", capitalCounty.Value.Key);
            Assert.Equal("c_county", capitalCounty.Value.Value.Name);
        }
コード例 #13
0
        public void TitlesCanBeLoaded()
        {
            var reader = new BufferedReader(
                "b_barony = { province = 12 }\n" +
                "c_county = { landless = yes }\n"
                );

            var titles = new LandedTitles();

            titles.LoadTitles(reader);

            var barony = titles.StoredTitles["b_barony"];
            var county = titles.StoredTitles["c_county"];

            Assert.Equal(2, titles.StoredTitles.Count);
            Assert.Equal((ulong)12, barony.Province);
            Assert.True(county.Landless);
        }
コード例 #14
0
        public void LocationServicesWork()
        {
            var mapper             = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "d_aquitane = { c_mers = { b_hgy = { province = 69 } } }"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CK3RegionMapperTests/LocationServicesWork.txt";

            mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            Assert.True(mapper.ProvinceIsInRegion(69, "c_mers"));
            Assert.True(mapper.ProvinceIsInRegion(69, "d_aquitane"));
            Assert.True(mapper.ProvinceIsInRegion(69, "test_region"));
            Assert.True(mapper.ProvinceIsInRegion(69, "test_region_bigger"));
            Assert.True(mapper.ProvinceIsInRegion(69, "test_region_biggest"));
        }
コード例 #15
0
        public void MatchOnRegionFailsForWrongRegion()
        {
            var theMapper          = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_ugada = { d_wakaba = { } } \n" +
                "k_ghef = { d_hujhu = { c_defff = { b_cringe = { province = 6 } } } } \n"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            theMapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            var reader  = new BufferedReader("ck3 = dutch imp = german ck3Region = test_region1");
            var mapping = ReligionMapping.Parse(reader);

            mapping.CK3RegionMapper       = theMapper;
            mapping.ImperatorRegionMapper = new ImperatorRegionMapper();

            Assert.Null(mapping.Match("german", 79, 0));
        }
コード例 #16
0
        public void MatchOnRegion()
        {
            var theMapper          = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_ugada = { d_wakaba = { c_athens = { b_athens = { province = 79 } } } } \n" +
                "k_ghef = { d_hujhu = { c_defff = { b_newbarony2 = { province = 4 } } } } \n"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            theMapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            var reader  = new BufferedReader("ck3 = dutch imp = german ck3Region = test_region1");
            var mapping = ReligionMapping.Parse(reader);

            mapping.CK3RegionMapper       = theMapper;
            mapping.ImperatorRegionMapper = new ImperatorRegionMapper();

            Assert.Equal("dutch", mapping.Match("german", 4, 0));
        }
コード例 #17
0
        public void MatchOnRegionFailsForNoRegion()
        {
            var ck3Mapper          = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_ugada = { d_wakaba = { } } \n" +
                "k_ghef = { d_hujhu = { } } \n"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            ck3Mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            var reader  = new BufferedReader("ck3 = dutch imp = german ck3Region = test_region3");
            var mapping = ReligionMapping.Parse(reader);

            mapping.CK3RegionMapper       = ck3Mapper;
            mapping.ImperatorRegionMapper = new ImperatorRegionMapper();

            Assert.Null(mapping.Match("german", 17, 0));
        }
コード例 #18
0
        public void MatchOnRegionFailsForNoRegion()
        {
            var ck3RegionMapper    = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(string.Empty);

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CultureMappingTests/empty.txt";

            ck3RegionMapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            var reader = new BufferedReader(
                "ck3 = dutch imp = german ck3Region = test_region3"
                );
            var theMapping = CultureMappingRule.Parse(reader);

            theMapping.CK3RegionMapper       = ck3RegionMapper;
            theMapping.ImperatorRegionMapper = new ImperatorRegionMapper();

            Assert.Null(theMapping.Match("german", "", 17, 0, ""));
        }
コード例 #19
0
        public void TitlesCanBeAddedByMods()
        {
            var reader = new BufferedReader(
                "e_empire1 = { k_kingdom2 = { d_duchy3 = { b_barony4 = { province = 12 } } } }\n" +
                "c_county5 = { landless = yes }\n"
                );

            var titles = new LandedTitles();

            titles.LoadTitles(reader);

            var reader2 = new BufferedReader(
                "c_county5 = { landless = NO }\n" +                 // Overrides existing instance
                "e_empire6 = { k_kingdom7 = { d_duchy8 = { b_barony9 = { province = 12 } } } }\n" +
                "c_county10 = { landless = yes }\n"
                );

            titles.LoadTitles(reader2);

            Assert.Equal(10, titles.StoredTitles.Count);
        }
コード例 #20
0
        public void LocationNameValidationWorks()
        {
            var mapper             = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_ugada = { d_wakaba = { c_athens = { b_athens = { province = 79 } b_newbarony = { province = 56 } } } } \n" +
                "k_ghef = { d_hujhu = { c_defff = { b_cringe = { province = 6 } b_newbarony2 = { province = 4 } } } } \n" +
                "c_county = { b_barony = { province = 69 } } \n"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CK3RegionMapperTests/LocationNameValidationWorks.txt";

            mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            Assert.True(mapper.RegionNameIsValid("d_wakaba"));
            Assert.True(mapper.RegionNameIsValid("test_region2"));
            Assert.True(mapper.RegionNameIsValid("test_region3"));
            Assert.True(mapper.RegionNameIsValid("c_county"));
            Assert.False(mapper.RegionNameIsValid("nonsense"));
        }
コード例 #21
0
        public void CorrectParentLocationsReported()
        {
            var mapper             = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_ugada = { d_wakaba = { c_athens = { b_athens = { province = 79 } b_newbarony = { province = 56 } } } } \n" +
                "k_ghef = { d_hujhu = { c_defff = { b_cringe = { province = 6 } b_newbarony2 = { province = 4 } } } } \n"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CK3RegionMapperTests/CorrectParentLocationsReported.txt";

            mapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            Assert.Equal("c_athens", mapper.GetParentCountyName(79));
            Assert.Equal("d_wakaba", mapper.GetParentDuchyName(79));
            Assert.Equal("test_region", mapper.GetParentRegionName(79));
            Assert.Equal("c_defff", mapper.GetParentCountyName(6));
            Assert.Equal("d_hujhu", mapper.GetParentDuchyName(6));
            Assert.Equal("test_region2", mapper.GetParentRegionName(6));
        }
コード例 #22
0
        public void LoadRegions(LandedTitles landedTitles, string regionFilePath, string islandRegionFilePath)
        {
            RegisterRegionKeys();
            ParseFile(regionFilePath);
            ParseFile(islandRegionFilePath);
            ClearRegisteredRules();

            foreach (var(titleName, title) in landedTitles.StoredTitles)
            {
                var titleRank = title.Rank;
                if (titleRank == TitleRank.county)
                {
                    counties[titleName] = title;
                }
                else if (titleRank == TitleRank.duchy)
                {
                    duchies[titleName] = title;
                }
            }

            LinkRegions();
        }
コード例 #23
0
        public void MatchOnRegionFailsForNoProvince()
        {
            var ck3RegionMapper    = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_ghef = { d_hujhu = { c_defff = { b_cringe = { province = 6 } b_newbarony2 = { province = 4 } } } } \n"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CultureMappingTests/empty.txt";

            ck3RegionMapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            var reader = new BufferedReader(
                "ck3 = dutch imp = german ck3Region = d_hujhu"
                );
            var theMapping = CultureMappingRule.Parse(reader);

            theMapping.CK3RegionMapper       = ck3RegionMapper;
            theMapping.ImperatorRegionMapper = new ImperatorRegionMapper();

            Assert.Null(theMapping.Match("german", "", 0, 0, ""));
        }
コード例 #24
0
        [Fact] public void MatchOnRegion()
        {
            var ck3RegionMapper    = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_ghef = { d_hujhu = { c_defff = { b_newbarony2 = { province = 4 } } } }"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CultureMappingTests/MatchOnRegion.txt";

            ck3RegionMapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            var reader = new BufferedReader(
                "ck3 = dutch imp = german ck3Region = test_region1"
                );
            var theMapping = CultureMappingRule.Parse(reader);

            theMapping.CK3RegionMapper       = ck3RegionMapper;
            theMapping.ImperatorRegionMapper = new ImperatorRegionMapper();

            Assert.Equal("dutch", theMapping.Match("german", "", 4, 0, ""));
        }
コード例 #25
0
        public void MatchOnRegionFailsForWrongRegion()
        {
            var ck3RegionMapper    = new CK3RegionMapper();
            var landedTitles       = new LandedTitles();
            var landedTitlesReader = new BufferedReader(
                "k_ugada = { d_wakaba = { c_athens = { b_athens = { province = 79 } } } } \n" +
                "k_ghef = { d_hujhu = { c_defff = { b_cringe = { province = 6 } } } } \n"
                );

            landedTitles.LoadTitles(landedTitlesReader);
            const string regionPath = "TestFiles/regions/CultureMappingTests/MatchOnRegionFailsForWrongRegion";

            ck3RegionMapper.LoadRegions(landedTitles, regionPath, islandRegionPath);

            var reader = new BufferedReader(
                "ck3 = dutch imp = german ck3Region = test_region2"
                );
            var theMapping = CultureMappingRule.Parse(reader);

            theMapping.CK3RegionMapper       = ck3RegionMapper;
            theMapping.ImperatorRegionMapper = new ImperatorRegionMapper();

            Assert.Null(theMapping.Match("german", "", 79, 0, ""));
        }
コード例 #26
0
ファイル: Title.cs プロジェクト: Zemurin/ImperatorToCK3
 private Title(LandedTitles parentCollection,
               Country country,
               CountryCollection imperatorCountries,
               LocDB locDB,
               ProvinceMapper provinceMapper,
               CoaMapper coaMapper,
               TagTitleMapper tagTitleMapper,
               GovernmentMapper governmentMapper,
               SuccessionLawMapper successionLawMapper,
               DefiniteFormMapper definiteFormMapper,
               ReligionMapper religionMapper,
               CultureMapper cultureMapper,
               NicknameMapper nicknameMapper,
               CharacterCollection characters,
               Date conversionDate
               )
 {
     this.parentCollection = parentCollection;
     Id = DetermineName(country, imperatorCountries, tagTitleMapper, locDB);
     SetRank();
     InitializeFromTag(
         country,
         imperatorCountries,
         locDB,
         provinceMapper,
         coaMapper,
         governmentMapper,
         successionLawMapper,
         definiteFormMapper,
         religionMapper,
         cultureMapper,
         nicknameMapper,
         characters,
         conversionDate
         );
 }
コード例 #27
0
ファイル: Title.cs プロジェクト: Zemurin/ImperatorToCK3
 private Title(LandedTitles parentCollection, string id)
 {
     this.parentCollection = parentCollection;
     Id = id;
     SetRank();
 }