[InlineData(SoraniReh, SoraniOpenYeh, SoraniWaw, SoraniYeh)] // رێوی => ڕێوی public void Should_Change_Initial_r_To_R(params char[] chars) { var text = new string(chars); var normalized = Sorani.ToStandardSorani(text); Assert.Equal(SoraniHeavyReh, normalized[0]); }
private void AssertSimpleSoraniNormalizer(string text, char find, char replace) { var normalized = Sorani.ToStandardSorani(text); Assert.True(normalized.Contains(replace)); Assert.False(normalized.Contains(find)); }
[InlineData(SoraniSeen, SoraniAe, SoraniReh, SoraniDal, SoraniAlef, SoraniReh)] // سەردار public void Should_Not_Change_Medial_r_To_R(params char[] chars) { var text = new string(chars); var normalized = Sorani.ToStandardSorani(text); Assert.Equal(text, normalized); }
[Fact] // ازاد => ئازاد public void Should_Insert_Hamza_To_The_Begenning_Of_The_Words_That_Start_With_Aelf() { var text = $"{SoraniAlef}{SoraniZeh}{SoraniAlef}{SoraniDal}"; // ازاد var normalized = Sorani.ToStandardSorani(text); Assert.Equal(SoraniHamza, normalized[0]); Assert.Equal(SoraniAlef, normalized[1]); }
[InlineData(SoraniBeh, SoraniHamza, SoraniGaf, SoraniWaw, SoraniMeem, SoraniAlef, SoraniNoon)] // بئگومان => بێگومان public void Should_Replace_Hamza_Followed_By_Consonants_With_OpenYeh(params char[] chars) { var text = new string(chars); var normalized = Sorani.ToStandardSorani(text); Assert.True(normalized.Contains(SoraniOpenYeh)); Assert.False(normalized.Contains(SoraniHamza)); }
[InlineData(SoraniLam, SoraniAlef, SoraniReh)] // لار public void Should_Not_Replace_Lam_Not_Followed_By_Fatha(params char[] chars) { var text = new string(chars); var normalized = Sorani.ToStandardSorani(text); Assert.True(normalized.Contains(SoraniLam)); Assert.False(normalized.Contains(SoraniHeavyLam)); }
[Fact] // ئئستا => ئێستا public void Should_Replace_Second_Hamza_But_Not_First_Hamza() { var text = $"{SoraniHamza}{SoraniHamza}{SoraniSeen}{SoraniTeh}{SoraniAlef}"; // ئێستا var normalized = Sorani.ToStandardSorani(text); Assert.Equal(SoraniHamza, normalized[0]); Assert.Equal(SoraniOpenYeh, normalized[1]); }
[InlineData(SoraniKaf, SoraniReh, ArabicKasra, SoraniYeh, SoraniNoon)] // کرِین => کڕین public void Should_Replace_Reh_Followed_By_Kasra_With_HeavyReh(params char[] chars) { var text = new string(chars); var normalized = Sorani.ToStandardSorani(text); Assert.True(normalized.Contains(SoraniHeavyReh)); Assert.False(normalized.Contains(ArabicKasra)); Assert.False(normalized.Contains(SoraniReh)); }
public void Normalize_A_Sentence() { var text = "ثيَش هةوليَر ضووم بؤ سليَماني. لةويَ ضووم بؤ بازارِ. زؤر شتي جوانم كرِي."; var expected = "پێش هەولێر چووم بۆ سلێمانی. لەوێ چووم بۆ بازاڕ. زۆر شتی جوانم کڕی."; var normalized = Sorani.ToStandardSorani(text); Assert.Equal(expected, normalized); }
[InlineData(SoraniHeavyReh, ArabicWawWithHamzaAbove, SoraniJeh)] // ڕؤژ => ڕۆژ public void Should_Replace_Waw_Followed_By_Fatha_To_Oe(params char[] chars) { var text = new string(chars); var normalized = Sorani.ToStandardSorani(text); Assert.True(normalized.Contains(SoraniOe)); Assert.False(normalized.Contains(ArabicFatha)); Assert.False(normalized.Contains(SoraniWaw)); Assert.False(normalized.Contains(ArabicWawWithHamzaAbove)); }
[InlineData(SoraniHeavyReh, ArabicYeh, ArabicFatha, SoraniZeh)] // ڕيَز => ڕێز public void Should_Replace_Yeh_Followed_By_Kasra_To_OpenYeh(params char[] chars) { var text = new string(chars); var normalized = Sorani.ToStandardSorani(text); Assert.True(normalized.Contains(SoraniOpenYeh)); Assert.False(normalized.Contains(ArabicFatha)); Assert.False(normalized.Contains(ArabicYeh)); Assert.False(normalized.Contains(ArabicAlefMaksura)); }
[InlineData(LatinNine, SoraniNine)] // 9 => ٩ public void Should_Replace_Non_Standard_Char(char find, char replace) { var text = find.ToString(); var normalized = Sorani.ToStandardSorani(text); Assert.True(normalized == replace.ToString()); text = $"{SoraniAlef}{find}"; AssertSimpleSoraniNormalizer(text, find, replace); text = $"{find}{SoraniAlef}"; AssertSimpleSoraniNormalizer(text, find, replace); text = $"{SoraniBeh}{find}"; AssertSimpleSoraniNormalizer(text, find, replace); text = $"{find}{SoraniBeh}"; AssertSimpleSoraniNormalizer(text, find, replace); }
public void Normalize_A_Very_Long_Text(bool includeSpace) { var timer = new Stopwatch(); var random = new Random(); var space = includeSpace ? new char[] { Space } : new char[] { }; var ignoredChars = new char[] { ArabicSad, ArabicKasra, ArabicFatha, ZeroWidthNonJoiner }; var troublesomeChars = NonStandardSoraniAlphabet.Except(ignoredChars); var charSet = troublesomeChars.Union(SoraniAlphabet) .Union(space) .ToArray(); var text = new string(Enumerable.Repeat(charSet, 10000) .Select(set => set[random.Next(charSet.Length)]).ToArray()); timer.Start(); var normalized = Sorani.ToStandardSorani(text); timer.Stop(); Assert.True(timer.ElapsedMilliseconds < 1000); Assert.False(normalized.Any(c => troublesomeChars.Contains(c))); }
public void Passing_Null_Should_Throw_Exception() { Assert.Throws <ArgumentNullException>(() => Sorani.ToStandardSorani(null)); }
public void Should_Return_Empty_String_When_Given_Empty_String() { var normalized = Sorani.ToStandardSorani(string.Empty); Assert.Equal(string.Empty, normalized); }