Skip to content

Commit

Permalink
Fix 90000th and -thousandth in Russian
Browse files Browse the repository at this point in the history
  • Loading branch information
hazzik committed Feb 18, 2015
1 parent 3d28faf commit c7c3ee9
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 19 deletions.
35 changes: 19 additions & 16 deletions src/Humanizer.Tests/Localisation/ru-RU/NumberToWordsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ public NumberToWordsTests() : base("ru-RU") { }
[InlineData(2000, "две тысячи")]
[InlineData(3000, "три тысячи")]
[InlineData(4000, "четыре тысячи")]
[InlineData(5000, "пять тысячь")]
[InlineData(10000, "десять тысячь")]
[InlineData(100000, "сто тысячь")]
[InlineData(5000, "пять тысяч")]
[InlineData(10000, "десять тысяч")]
[InlineData(100000, "сто тысяч")]
[InlineData(1000000, "один миллион")]
[InlineData(2000000, "два миллиона")]
[InlineData(10000000, "десять миллионов")]
Expand All @@ -54,12 +54,12 @@ public NumberToWordsTests() : base("ru-RU") { }
[InlineData(3501, "три тысячи пятьсот один")]
[InlineData(111, "сто одиннадцать")]
[InlineData(1112, "одна тысяча сто двенадцать")]
[InlineData(11213, "одиннадцать тысячь двести тринадцать")]
[InlineData(11213, "одиннадцать тысяч двести тринадцать")]
[InlineData(121314, "сто двадцать одна тысяча триста четырнадцать")]
[InlineData(2132415, "два миллиона сто тридцать две тысячи четыреста пятнадцать")]
[InlineData(12345516, "двенадцать миллионов триста сорок пять тысячь пятьсот шестнадцать")]
[InlineData(12345516, "двенадцать миллионов триста сорок пять тысяч пятьсот шестнадцать")]
[InlineData(751633617, "семьсот пятьдесят один миллион шестьсот тридцать три тысячи шестьсот семнадцать")]
[InlineData(1111111118, "один миллиард сто одиннадцать миллионов сто одиннадцать тысячь сто восемнадцать")]
[InlineData(1111111118, "один миллиард сто одиннадцать миллионов сто одиннадцать тысяч сто восемнадцать")]
[InlineData(-751633617, "минус семьсот пятьдесят один миллион шестьсот тридцать три тысячи шестьсот семнадцать")]
public void ToWords(int number, string expected)
{
Expand Down Expand Up @@ -134,12 +134,12 @@ public void ToWordsWithGender(int number, string expected, GrammaticalGender gen
[InlineData(3501, "три тысячи пятьсот первый")]
[InlineData(111, "сто одиннадцатый")]
[InlineData(1112, "одна тысяча сто двенадцатый")]
[InlineData(11213, "одиннадцать тысячь двести тринадцатый")]
[InlineData(11213, "одиннадцать тысяч двести тринадцатый")]
[InlineData(121314, "сто двадцать одна тысяча триста четырнадцатый")]
[InlineData(2132415, "два миллиона сто тридцать две тысячи четыреста пятнадцатый")]
[InlineData(12345516, "двенадцать миллионов триста сорок пять тысячь пятьсот шестнадцатый")]
[InlineData(12345516, "двенадцать миллионов триста сорок пять тысяч пятьсот шестнадцатый")]
[InlineData(751633617, "семьсот пятьдесят один миллион шестьсот тридцать три тысячи шестьсот семнадцатый")]
[InlineData(1111111118, "один миллиард сто одиннадцать миллионов сто одиннадцать тысячь сто восемнадцатый")]
[InlineData(1111111118, "один миллиард сто одиннадцать миллионов сто одиннадцать тысяч сто восемнадцатый")]
[InlineData(1111111000, "один миллиард сто одиннадцать миллионов стоодиннадцатитысячный")]
[InlineData(1234567000, "один миллиард двести тридцать четыре миллиона пятисотшестидесятисемитысячный")]
[InlineData(2000000000, "двухмиллиардный")]
Expand Down Expand Up @@ -187,7 +187,10 @@ public void ToOrdinalWords(int number, string expected)
[InlineData(4000, "четырёхтысячная")]
[InlineData(5000, "пятитысячная")]
[InlineData(10000, "десятитысячная")]
[InlineData(90000, "девяностотысячная")]
[InlineData(100000, "стотысячная")]
[InlineData(990000, "девятисотдевяностотысячная")]
[InlineData(990001, "девятьсот девяносто тысяч первая")]
[InlineData(1000000, "миллионная")]
[InlineData(2000000, "двухмиллионная")]
[InlineData(10000000, "десятимиллионная")]
Expand All @@ -199,15 +202,15 @@ public void ToOrdinalWords(int number, string expected)
[InlineData(111, "сто одиннадцатая")]
[InlineData(1112, "одна тысяча сто двенадцатая")]
[InlineData(11000, "одиннадцатитысячная")]
[InlineData(11001, "одиннадцать тысячь первая")]
[InlineData(11213, "одиннадцать тысячь двести тринадцатая")]
[InlineData(11001, "одиннадцать тысяч первая")]
[InlineData(11213, "одиннадцать тысяч двести тринадцатая")]
[InlineData(15000, "пятнадцатитысячная")]
[InlineData(20000, "двадцатитысячная")]
[InlineData(121314, "сто двадцать одна тысяча триста четырнадцатая")]
[InlineData(2132415, "два миллиона сто тридцать две тысячи четыреста пятнадцатая")]
[InlineData(12345516, "двенадцать миллионов триста сорок пять тысячь пятьсот шестнадцатая")]
[InlineData(12345516, "двенадцать миллионов триста сорок пять тысяч пятьсот шестнадцатая")]
[InlineData(751633617, "семьсот пятьдесят один миллион шестьсот тридцать три тысячи шестьсот семнадцатая")]
[InlineData(1111111118, "один миллиард сто одиннадцать миллионов сто одиннадцать тысячь сто восемнадцатая")]
[InlineData(1111111118, "один миллиард сто одиннадцать миллионов сто одиннадцать тысяч сто восемнадцатая")]
[InlineData(-751633617, "минус семьсот пятьдесят один миллион шестьсот тридцать три тысячи шестьсот семнадцатая")]
public void ToOrdinalWordsFeminine(int number, string expected)
{
Expand All @@ -218,12 +221,12 @@ public void ToOrdinalWordsFeminine(int number, string expected)
[InlineData(3, "третье")]
[InlineData(111, "сто одиннадцатое")]
[InlineData(1112, "одна тысяча сто двенадцатое")]
[InlineData(11213, "одиннадцать тысячь двести тринадцатое")]
[InlineData(11213, "одиннадцать тысяч двести тринадцатое")]
[InlineData(121314, "сто двадцать одна тысяча триста четырнадцатое")]
[InlineData(2132415, "два миллиона сто тридцать две тысячи четыреста пятнадцатое")]
[InlineData(12345516, "двенадцать миллионов триста сорок пять тысячь пятьсот шестнадцатое")]
[InlineData(12345516, "двенадцать миллионов триста сорок пять тысяч пятьсот шестнадцатое")]
[InlineData(751633617, "семьсот пятьдесят один миллион шестьсот тридцать три тысячи шестьсот семнадцатое")]
[InlineData(1111111118, "один миллиард сто одиннадцать миллионов сто одиннадцать тысячь сто восемнадцатое")]
[InlineData(1111111118, "один миллиард сто одиннадцать миллионов сто одиннадцать тысяч сто восемнадцатое")]
[InlineData(-751633617, "минус семьсот пятьдесят один миллион шестьсот тридцать три тысячи шестьсот семнадцатое")]
public void ToOrdinalWordsNeuter(int number, string expected)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ internal class RussianNumberToWordsConverter : GenderedNumberToWordsConverter
private static readonly string[] TensMap = { "ноль", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто" };
private static readonly string[] UnitsMap = { "ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", "десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать" };
private static readonly string[] UnitsOrdinalPrefixes = { string.Empty, string.Empty, "двух", "трёх", "четырёх", "пяти", "шести", "семи", "восьми", "девяти", "десяти", "одиннадцати", "двенадцати", "тринадцати", "четырнадцати", "пятнадцати", "шестнадцати", "семнадцати", "восемнадцати", "девятнадцати" };
private static readonly string[] TensOrdinalPrefixes = { string.Empty, "десяти", "двадцати", "тридцати", "сорока", "пятидесяти", "шестидесяти", "семидесяти", "восьмидесяти", "девятидесяти" };
private static readonly string[] TensOrdinalPrefixes = { string.Empty, "десяти", "двадцати", "тридцати", "сорока", "пятидесяти", "шестидесяти", "семидесяти", "восьмидесяти", "девяносто" };
private static readonly string[] TensOrdinal = { string.Empty, "десят", "двадцат", "тридцат", "сороков", "пятидесят", "шестидесят", "семидесят", "восьмидесят", "девяност" };
private static readonly string[] UnitsOrdinal = { string.Empty, "перв", "втор", "трет", "четверт", "пят", "шест", "седьм", "восьм", "девят", "десят", "одиннадцат", "двенадцат", "тринадцат", "четырнадцат", "пятнадцат", "шестнадцат", "семнадцат", "восемнадцат", "девятнадцат" };

Expand All @@ -29,7 +29,7 @@ public override string Convert(int number, GrammaticalGender gender)

CollectParts(parts, ref number, 1000000000, GrammaticalGender.Masculine, "миллиард", "миллиарда", "миллиардов");
CollectParts(parts, ref number, 1000000, GrammaticalGender.Masculine, "миллион", "миллиона", "миллионов");
CollectParts(parts, ref number, 1000, GrammaticalGender.Feminine, "тысяча", "тысячи", "тысячь");
CollectParts(parts, ref number, 1000, GrammaticalGender.Feminine, "тысяча", "тысячи", "тысяч");

if (number > 0)
CollectPartsUnderOneThousand(parts, number, gender);
Expand All @@ -52,7 +52,7 @@ public override string ConvertToOrdinal(int number, GrammaticalGender gender)

CollectOrdinalParts(parts, ref number, 1000000000, GrammaticalGender.Masculine, "миллиардн" + GetEndingForGender(gender, number), "миллиард", "миллиарда", "миллиардов");
CollectOrdinalParts(parts, ref number, 1000000, GrammaticalGender.Masculine, "миллионн" + GetEndingForGender(gender, number), "миллион", "миллиона", "миллионов");
CollectOrdinalParts(parts, ref number, 1000, GrammaticalGender.Feminine, "тысячн" + GetEndingForGender(gender, number), "тысяча", "тысячи", "тысячь");
CollectOrdinalParts(parts, ref number, 1000, GrammaticalGender.Feminine, "тысячн" + GetEndingForGender(gender, number), "тысяча", "тысячи", "тысяч");

if (number >= 100)
{
Expand Down

0 comments on commit c7c3ee9

Please sign in to comment.