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)); } }
private static void WriteDeclination(CyrResult declinationResult) { foreach (CasesEnum labelCase in Enum.GetValues(typeof(CasesEnum))) { Console.WriteLine($" {labelCase,15}: {declinationResult.Get(labelCase)}"); } }
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); }
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; }
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)); } }