Beispiel #1
0
        public void FeminineFullNameIsCorrectlyDeclined()
        {
            {
                CyrResult result = this.CyrName.Decline("Иванова Наталья Петровна", Cyriller.Model.GendersEnum.Feminine, false);

                Assert.Equal("Ивановой Натальи Петровны", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Ивановой Наталье Петровне", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Иванову Наталью Петровну", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Ивановой Натальей Петровной", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Ивановой Наталье Петровне", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Сафаралиева Койкеб Кямил Кызы", Cyriller.Model.GendersEnum.Feminine, false);

                Assert.Equal("Сафаралиевой Койкеб Кямил Кызы", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Сафаралиевой Койкеб Кямил Кызы", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Сафаралиеву Койкеб Кямил Кызы", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Сафаралиевой Койкеб Кямил Кызы", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Сафаралиевой Койкеб Кямил Кызы", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Сафаралиева Койкеб Кямил-Кызы", Cyriller.Model.GendersEnum.Feminine, false);

                Assert.Equal("Сафаралиевой Койкеб Кямил-Кызы", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Сафаралиевой Койкеб Кямил-Кызы", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Сафаралиеву Койкеб Кямил-Кызы", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Сафаралиевой Койкеб Кямил-Кызы", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Сафаралиевой Койкеб Кямил-Кызы", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Иванова Наталья Петровна", Cyriller.Model.GendersEnum.Feminine, true);

                Assert.Equal("Ивановой Н. П.", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Ивановой Н. П.", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Иванову Н. П.", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Ивановой Н. П.", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Ивановой Н. П.", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Сафаралиева Койкеб Кямил Кызы", Cyriller.Model.GendersEnum.Feminine, true);

                Assert.Equal("Сафаралиевой К. К.", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Сафаралиевой К. К.", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Сафаралиеву К. К.", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Сафаралиевой К. К.", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Сафаралиевой К. К.", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }
        }
Beispiel #2
0
 private static void WriteDeclination(CyrResult declinationResult)
 {
     foreach (CasesEnum labelCase in Enum.GetValues(typeof(CasesEnum)))
     {
         Console.WriteLine($" {labelCase,15}: {declinationResult.Get(labelCase)}");
     }
 }
Beispiel #3
0
        private static CyrResult DeclineIgnoreSuffix(CyrPhrase decliner, string phrase, params string[] ignoreSuffixesStart)
        {
            int openSymbolIndex = phrase.IndexOfAny(ignoreSuffixesStart);

            if (openSymbolIndex == -1)
            {
                return(CaseTools.Decline(decliner, phrase));
            }

            string parenthesisExpr       = phrase.Substring(openSymbolIndex, phrase.Length - openSymbolIndex);
            string parenthesisLessPhrase = phrase.Remove(openSymbolIndex, phrase.Length - openSymbolIndex);

            CyrResult result = CaseTools.Decline(decliner, parenthesisLessPhrase);

            if (result == null)
            {
                return(null);
            }

            foreach (CasesEnum labelCase in Enum.GetValues(typeof(CasesEnum)))
            {
                result.Set(labelCase, result.Get(labelCase) + parenthesisExpr);
            }

            return(result);
        }
Beispiel #4
0
        private static void ReadDeclination(CyrResult declinationResult)
        {
            int cursorPos = -1;

            foreach (CasesEnum labelCase in Enum.GetValues(typeof(CasesEnum)))
            {
                Console.Write($" {labelCase,15}: ");
                declinationResult.Set(labelCase, SmartConsole.EditLine(declinationResult.Get(labelCase), cursorPos, out cursorPos));
            }
        }
 public DeclensionResult(CyrResult cyrResult, OriginalData originalData)
 {
     Success      = true;
     Output       = cyrResult.Get((CasesEnum)originalData.CaseEnum);
     OriginalData = originalData;
 }
Beispiel #6
0
        public void MasculineFullNameIsCorrectlyDeclined()
        {
            {
                CyrResult result = this.CyrName.Decline("Иванов Иван Иванович", Cyriller.Model.GendersEnum.Masculine, false);

                Assert.Equal("Иванова Ивана Ивановича", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Иванову Ивану Ивановичу", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Иванова Ивана Ивановича", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Ивановым Иваном Ивановичем", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Иванове Иване Ивановиче", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Карим Куржов Салим Оглы", Cyriller.Model.GendersEnum.Masculine, false);

                Assert.Equal("Карима Куржова Салим Оглы", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Кариму Куржову Салим Оглы", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Карима Куржова Салим Оглы", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Каримом Куржовом Салим Оглы", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Кариме Куржове Салим Оглы", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Карим Куржов Салим-Оглы", Cyriller.Model.GendersEnum.Masculine, false);

                Assert.Equal("Карима Куржова Салим-Оглы", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Кариму Куржову Салим-Оглы", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Карима Куржова Салим-Оглы", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Каримом Куржовом Салим-Оглы", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Кариме Куржове Салим-Оглы", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Иванов Иван Иванович", Cyriller.Model.GendersEnum.Masculine, true);

                Assert.Equal("Иванова И. И.", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Иванову И. И.", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Иванова И. И.", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Ивановым И. И.", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Иванове И. И.", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Карим Куржов Салим Оглы", Cyriller.Model.GendersEnum.Masculine, true);

                Assert.Equal("Карима К. С.", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Кариму К. С.", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Карима К. С.", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Каримом К. С.", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Кариме К. С.", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Илон МакФерсон", Cyriller.Model.GendersEnum.Masculine, false);

                Assert.Equal("Илона МакФерсона", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Илону МакФерсону", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Илона МакФерсона", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Илоном МакФерсоном", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Илоне МакФерсоне", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }

            {
                CyrResult result = this.CyrName.Decline("Ахмед Гафуров ибн Мухаммад", Cyriller.Model.GendersEnum.Masculine, false);

                Assert.Equal("Ахмеда Гафурова ибн Мухаммада", result.Get(Cyriller.Model.CasesEnum.Genitive));
                Assert.Equal("Ахмеду Гафурову ибн Мухаммаду", result.Get(Cyriller.Model.CasesEnum.Dative));
                Assert.Equal("Ахмеда Гафурова ибн Мухаммада", result.Get(Cyriller.Model.CasesEnum.Accusative));
                Assert.Equal("Ахмедом Гафуровом ибн Мухаммадом", result.Get(Cyriller.Model.CasesEnum.Instrumental));
                Assert.Equal("Ахмеде Гафурове ибн Мухаммаде", result.Get(Cyriller.Model.CasesEnum.Prepositional));
            }
        }