Exemplo n.º 1
0
        public void TestLandedTitleFilesIntegrity()
        {
            List <string> files = FileProvider.GetFilesInDirectory(ApplicationPaths.LandedTitlesDirectory).ToList();

            foreach (string file in files)
            {
                string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

                List <string> lines = FileProvider
                                      .ReadAllLines(FileEncoding.Windows1252, file)
                                      .ToList();

                IEnumerable <LandedTitle> landedTitles = LandedTitlesFile
                                                         .ReadAllTitles(file)
                                                         .ToDomainModels();

                string content = string.Join(Environment.NewLine, lines);

                int openingBrackets = content.Count(x => x == '{');
                int closingBrackets = content.Count(x => x == '}');

                Assert.AreEqual(openingBrackets, closingBrackets, $"There are mismatching brackets in {fileName}");
                AssertLandedTitlesQuotes(lines, file);
                AssertLandedTitlesEqualSigns(lines, file);
                AssertLandedTitleDynamicNames(landedTitles, file);
            }
        }
Exemplo n.º 2
0
        public void TestLocalisationFilesIntegrity()
        {
            List <string> files = FileProvider.GetFilesInDirectory(ApplicationPaths.LocalisationDirectory).ToList();

            foreach (string file in files)
            {
                string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

                List <string> lines = FileProvider.ReadAllLines(FileEncoding.Windows1252, file).ToList();

                int lineNumber = 0;

                foreach (string line in lines)
                {
                    lineNumber += 1;

                    if (string.IsNullOrWhiteSpace(line))
                    {
                        continue;
                    }

                    string[] fields = line.Split(';');

                    Assert.IsFalse(string.IsNullOrWhiteSpace(fields[0]), $"Localisation code is undefined in {fileName} at line {lineNumber}");
                    Assert.IsFalse(string.IsNullOrWhiteSpace(fields[1]), $"English localisation is undefined in {fileName} at line {lineNumber}");
                    Assert.IsFalse(string.IsNullOrWhiteSpace(fields[2]), $"French localisation is undefined in {fileName} at line {lineNumber}");
                    Assert.IsFalse(string.IsNullOrWhiteSpace(fields[3]), $"German localisation is undefined in {fileName} at line {lineNumber}");
                    Assert.IsFalse(string.IsNullOrWhiteSpace(fields[5]), $"Spanish localisation is undefined in {fileName} at line {lineNumber}");
                }
            }
        }
Exemplo n.º 3
0
        public void TestCultureFilesIntegrity()
        {
            List <string> files = FileProvider.GetFilesInDirectory(ApplicationPaths.CulturesDirectory).ToList();

            foreach (string file in files)
            {
                string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

                List <string> lines = FileProvider
                                      .ReadAllLines(FileEncoding.Windows1252, file)
                                      .ToList();

                IEnumerable <Culture> cultures = CultureFile
                                                 .ReadAllCultures(file)
                                                 .ToDomainModels();

                string content = string.Join(Environment.NewLine, lines);

                int openingBrackets = content.Count(x => x == '{');
                int closingBrackets = content.Count(x => x == '}');

                Assert.AreEqual(openingBrackets, closingBrackets, $"There are mismatching brackets in {fileName}");
                AssertCultureChanceValues(cultures, file);
            }
        }
Exemplo n.º 4
0
        void AssertSpacingsAroundEquals(IEnumerable <string> lines, string file)
        {
            string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

            int lineNumber = 0;

            foreach (string line in lines)
            {
                lineNumber += 1;

                Assert.IsFalse(Regex.IsMatch(line, invalidEqualsSpacingPattern), $"Invalid spacing around '=' in the '{fileName}' file, at line {lineNumber}");
            }
        }
Exemplo n.º 5
0
        void AssertTrailingWhitespaces(IEnumerable <string> lines, string file)
        {
            string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

            int lineNumber = 0;

            foreach (string line in lines)
            {
                lineNumber += 1;

                Assert.IsFalse(Regex.IsMatch(line, trailingWhitespacePattern), $"The '{fileName}' file contains trailing whitespaces , at line {lineNumber}");
            }
        }
Exemplo n.º 6
0
        void AssertLandedTitlesEqualSigns(IEnumerable <string> lines, string file)
        {
            string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

            int lineNumber = 0;

            foreach (string line in lines)
            {
                lineNumber += 1;

                Assert.IsFalse(Regex.IsMatch(line, MissingEquaitySignPattern), $"The '{fileName}' file has a missing equality sign, at line {lineNumber}");
            }
        }
Exemplo n.º 7
0
        void AssertLandedTitlesQuotes(IEnumerable <string> lines, string file)
        {
            string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

            int lineNumber = 0;

            foreach (string line in lines)
            {
                lineNumber += 1;

                Assert.IsFalse(Regex.IsMatch(line, InvalidQuotesPattern), $"The '{fileName}' file contains invalid quotes, at line {lineNumber}");
            }
        }
Exemplo n.º 8
0
        void AssertIndentation(IEnumerable <string> lines, string file)
        {
            string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

            int lineNumber = 0;

            foreach (string line in lines)
            {
                lineNumber += 1;

                Assert.IsFalse(line.Contains("\t"), $"The '{fileName}' contains tabs, at line {lineNumber}");
                Assert.IsFalse(Regex.IsMatch(line, invalidIndentationPattern), $"Invalid indentation in the '{fileName}' file, at line {lineNumber}");
            }
        }
Exemplo n.º 9
0
        public void TestLocalisationFileNamingConventions()
        {
            if (!Directory.Exists(ApplicationPaths.LocalisationDirectory))
            {
                return;
            }

            List <string> files = FileProvider.GetFilesInDirectory(ApplicationPaths.LocalisationDirectory).ToList();

            foreach (string file in files)
            {
                string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

                Assert.IsTrue(Regex.IsMatch(file, localisationFileNamePattern), $"The '{fileName}' file's name does not respect the conventions");
            }
        }
Exemplo n.º 10
0
        void AssertLandedTitleDynamicNames(IEnumerable <LandedTitle> landedTitles, string file)
        {
            string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

            foreach (LandedTitle title in landedTitles)
            {
                Assert.IsTrue(
                    title.DynamicNames.Keys.SequenceEqual(title.DynamicNames.Keys.OrderBy(x => x)),
                    $"The '{fileName}' file contains unsorted dynamic names for {title.Id}");

                if (title.Children.Count > 0)
                {
                    AssertLandedTitleDynamicNames(title.Children, file);
                }
            }
        }
        public void AssertEncodings()
        {
            List <string> landedTitlesFiles = FileProvider.GetFilesInDirectory(ApplicationPaths.LandedTitlesDirectory).ToList();

            foreach (string file in landedTitlesFiles)
            {
                string        fileName = PathExt.GetFileNameWithoutRootDirectory(file);
                List <string> lines    = FileProvider.ReadAllLines(FileEncoding.Windows1252, file).ToList();

                int lineNumber = 0;
                foreach (string line in lines)
                {
                    lineNumber += 1;

                    int charNumber = 0;
                    foreach (char c in line)
                    {
                        Assert.IsTrue(EncodingChecker.IsWindows1252(c), $"The '{file}' file contains a non-WINDOWS-1252 character at line {lineNumber}, position {charNumber}");
                    }
                }
            }
        }
Exemplo n.º 12
0
        void AssertLandedTitleDynamicNames(IEnumerable <LandedTitle> landedTitles, string file)
        {
            string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

            foreach (LandedTitle title in landedTitles)
            {
                Assert.AreEqual(
                    1, landedTitles.Count(x => x.Id == title.Id),
                    $"The '{fileName}' file contains a duplicated landed title '{title.Id}'");

                foreach (string culture in title.DynamicNames.Keys)
                {
                    Assert.IsFalse(
                        Regex.IsMatch(title.DynamicNames[culture], InvalidSpacingPattern),
                        $"The '{fileName}' file contains invalid spacing in the {culture} dynamic name of {title.Id}");
                }

                if (title.Children.Count > 0)
                {
                    AssertLandedTitleDynamicNames(title.Children, file);
                }
            }
        }
Exemplo n.º 13
0
        void AssertRepeatedBlankLines(IEnumerable <string> lines, string file)
        {
            string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

            int lineNumber = 0;

            foreach (string line in lines)
            {
                lineNumber += 1;

                bool lastWasBlank   = false;
                bool currentIsBlank = string.IsNullOrWhiteSpace(line);

                if (currentIsBlank && lineNumber > 1)
                {
                    if (string.IsNullOrWhiteSpace(lines.ElementAt(lineNumber - 2)))
                    {
                        lastWasBlank = true;
                    }
                }

                Assert.IsFalse(currentIsBlank && lastWasBlank, $"The '{fileName}' file contains repeated blank lines, at line {lineNumber}");
            }
        }
Exemplo n.º 14
0
        void AssertCultureChanceValues(IEnumerable <Culture> cultures, string file)
        {
            string fileName = PathExt.GetFileNameWithoutRootDirectory(file);

            foreach (Culture culture in cultures)
            {
                Assert.AreEqual(
                    1, cultures.Count(x => x.Id == culture.Id),
                    $"The '{fileName}' file contains a duplicated culture '{culture.Id}'");

                int maleNameInheritanceChance =
                    culture.PatrilinealGrandfatherNameChance +
                    culture.MatrilinealGrandfatherNameChance +
                    culture.FatherNameChance;

                int femaleNameInheritanceChance =
                    culture.PatrilinealGrandmotherNameChance +
                    culture.MatrilinealGrandmotherNameChance +
                    culture.MotherNameChance;

                Assert.IsTrue(maleNameInheritanceChance <= 100, $"The '{culture.Id}' culture's total name inheritance chance for males cannot exceed 100");
                Assert.IsTrue(femaleNameInheritanceChance <= 100, $"The '{culture.Id}' culture's total name inheritance chance for females cannot exceed 100");
            }
        }