예제 #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
 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
 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
 private Title(LandedTitles parentCollection, string id)
 {
     this.parentCollection = parentCollection;
     Id = id;
     SetRank();
 }