Skip to content
This repository was archived by the owner on Aug 13, 2020. It is now read-only.

Commit 670260c

Browse files
committed
Merge upstream/master into add-portuguese
2 parents f0fd719 + 4cfac8a commit 670260c

18 files changed

+1258
-26
lines changed

Numsense.UnitTests.CSharp/NumeralConverterProperties.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,26 @@ public static Arbitrary<ConverterPropertyGroup> Converter()
7676
new DanishNumeralConverter(),
7777
NumeralModule.toDanish,
7878
NumeralModule.tryParseDanish),
79+
new ConverterPropertyGroup(
80+
new FarsiNumeralConverter(),
81+
NumeralModule.toFarsi,
82+
NumeralModule.tryParseFarsi),
7983
new ConverterPropertyGroup(
8084
new PolishNumeralConverter(),
8185
NumeralModule.toPolish,
8286
NumeralModule.tryParsePolish),
8387
new ConverterPropertyGroup(
8488
new DutchNumeralConverter(),
8589
NumeralModule.toDutch,
86-
NumeralModule.tryParseDutch)
90+
NumeralModule.tryParseDutch),
91+
new ConverterPropertyGroup(
92+
new RussianNumeralConverter(),
93+
NumeralModule.toRussian,
94+
NumeralModule.tryParseRussian),
95+
new ConverterPropertyGroup(
96+
new CatalanNumeralConverter(),
97+
NumeralModule.toCatalan,
98+
NumeralModule.tryParseCatalan)
8799
)
88100
.ToArbitrary();
89101
}
@@ -99,7 +111,7 @@ public ConverterPropertyGroup(
99111
INumeralConverter sut,
100112
FSharpFunc<int, string> toNumeralImp,
101113
FSharpFunc<string, FSharpOption<int>> tryParseImp)
102-
{
114+
{
103115
this.Sut = sut;
104116
this.ToNumeralImp = toNumeralImp;
105117
this.TryParseImp = tryParseImp;

Numsense.UnitTests.CSharp/NumeralTests.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@ public void DanishIsSingleton()
3636
}
3737

3838
[Fact]
39+
public void FarsiIsCorrect()
40+
{
41+
var actual = Numeral.Farsi;
42+
Assert.IsAssignableFrom<FarsiNumeralConverter>(actual);
43+
}
44+
45+
[Fact]
46+
public void FarsiIsSingleton()
47+
{
48+
var expected = Numeral.Farsi;
49+
var actual = Numeral.Farsi;
50+
Assert.Same(expected, actual);
51+
}
52+
3953
public void PolishIsCorrect()
4054
{
4155
var actual = Numeral.Polish;
@@ -77,6 +91,35 @@ public void PortugueseIsSingleton()
7791
{
7892
var expected = Numeral.Portuguese;
7993
var actual = Numeral.Portuguese;
94+
}
95+
96+
[Fact]
97+
public void RussianIsCorrect()
98+
{
99+
var actual = Numeral.Russian;
100+
Assert.IsAssignableFrom<RussianNumeralConverter>(actual);
101+
}
102+
103+
[Fact]
104+
public void RussianIsSingleton()
105+
{
106+
var expected = Numeral.Russian;
107+
var actual = Numeral.Russian;
108+
Assert.Same(expected, actual);
109+
}
110+
111+
[Fact]
112+
public void CatalanIsCorrect()
113+
{
114+
var actual = Numeral.Catalan;
115+
Assert.IsAssignableFrom<CatalanNumeralConverter>(actual);
116+
}
117+
118+
[Fact]
119+
public void CatalanIsSingleton()
120+
{
121+
var expected = Numeral.Catalan;
122+
var actual = Numeral.Catalan;
80123
Assert.Same(expected, actual);
81124
}
82125
}

Numsense.UnitTests.CSharp/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("0.3.0.0")]
36-
[assembly: AssemblyFileVersion("0.3.0.0")]
35+
[assembly: AssemblyVersion("0.6.0.0")]
36+
[assembly: AssemblyFileVersion("0.6.0.0")]

Numsense.UnitTests/AssemblyInfo.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ open System.Runtime.InteropServices
3434
// You can specify all the values or you can default the Build and Revision Numbers
3535
// by using the '*' as shown below:
3636
// [<assembly: AssemblyVersion("1.0.*")>]
37-
[<assembly: AssemblyVersion("0.3.0.0")>]
38-
[<assembly: AssemblyFileVersion("0.3.0.0")>]
37+
[<assembly: AssemblyVersion("0.6.0.0")>]
38+
[<assembly: AssemblyFileVersion("0.6.0.0")>]
3939

4040
do
4141
()
Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
module Ploeh.Numsense.CatalanExamples
2+
3+
open Xunit
4+
open Swensen.Unquote
5+
6+
[<Theory>]
7+
[<InlineData( "zero", 0)>]
8+
[<InlineData( " zero", 0)>]
9+
[<InlineData( "zero ", 0)>]
10+
[<InlineData( " zero ", 0)>]
11+
[<InlineData( "Zero", 0)>]
12+
[<InlineData( "ZERO", 0)>]
13+
[<InlineData( " zERo\t", 0)>]
14+
[<InlineData( "un", 1)>]
15+
[<InlineData( "UN", 1)>]
16+
[<InlineData( "dos", 2)>]
17+
[<InlineData( " dos", 2)>]
18+
[<InlineData( "tres", 3)>]
19+
[<InlineData( "tres ", 3)>]
20+
[<InlineData( "quatre", 4)>]
21+
[<InlineData( " quatre ", 4)>]
22+
[<InlineData( "cinc", 5)>]
23+
[<InlineData( "CinC", 5)>]
24+
[<InlineData( "sis", 6)>]
25+
[<InlineData( " SIS ", 6)>]
26+
[<InlineData( "set", 7)>]
27+
[<InlineData( " sEt", 7)>]
28+
[<InlineData( "vuit", 8)>]
29+
[<InlineData( "vUIT", 8)>]
30+
[<InlineData( "nou", 9)>]
31+
[<InlineData( "NoU ", 9)>]
32+
[<InlineData( "deu", 10)>]
33+
[<InlineData( "onze", 11)>]
34+
[<InlineData( "dotze", 12)>]
35+
[<InlineData( "tretze", 13)>]
36+
[<InlineData( "catorze", 14)>]
37+
[<InlineData( "quinze", 15)>]
38+
[<InlineData( "setze", 16)>]
39+
[<InlineData( "disset", 17)>]
40+
[<InlineData( "divuit", 18)>]
41+
[<InlineData( "dinou", 19)>]
42+
[<InlineData( "vint", 20)>]
43+
[<InlineData( "vint-i-un", 21)>]
44+
[<InlineData( "vint-i-dos", 22)>]
45+
[<InlineData( "trenta", 30)>]
46+
[<InlineData( "trenta-quatre", 34)>]
47+
[<InlineData( "trenta-vuit", 38)>]
48+
[<InlineData( "quaranta", 40)>]
49+
[<InlineData( "quaranta-un", 41)>]
50+
[<InlineData( "quaranta-quatre", 44)>]
51+
[<InlineData( "cinquanta", 50)>]
52+
[<InlineData( "cinquanta-set", 57)>]
53+
[<InlineData( "seixanta", 60)>]
54+
[<InlineData( "seixanta-cinc", 65)>]
55+
[<InlineData( "setanta", 70)>]
56+
[<InlineData( "setanta-set", 77)>]
57+
[<InlineData( "setanta-nou", 79)>]
58+
[<InlineData( "vuitanta", 80)>]
59+
[<InlineData( "vuitanta-sis", 86)>]
60+
[<InlineData( "noranta", 90)>]
61+
[<InlineData( "noranta-tres", 93)>]
62+
[<InlineData( "cent", 100)>]
63+
[<InlineData( "cent un", 101)>]
64+
[<InlineData( "dos-cents", 200)>]
65+
[<InlineData( "dos-cents trenta-set", 237)>]
66+
[<InlineData( "tres-cents setanta-cinc", 375)>]
67+
[<InlineData( "quatre-cents noranta", 490)>]
68+
[<InlineData( "cinc-cents seixanta-tres", 563)>]
69+
[<InlineData( "sis-cents divuit", 618)>]
70+
[<InlineData( "set-cents setanta-set", 777)>]
71+
[<InlineData( "vuit-cents cinc", 805)>]
72+
[<InlineData( "vuit-cents sis", 806)>]
73+
[<InlineData( "vuit-cents set", 807)>]
74+
[<InlineData( "nou-cents cinquanta-nou", 959)>]
75+
[<InlineData( "mil", 1000)>]
76+
[<InlineData( "mil un", 1001)>]
77+
[<InlineData( "mil dos", 1002)>]
78+
[<InlineData( "mil seixanta-quatre", 1064)>]
79+
[<InlineData( "dos mil", 2000)>]
80+
[<InlineData( "vuit mil set-cents vint-i-un", 8721)>]
81+
[<InlineData( "nou mil cent vint-i-tres", 9123)>]
82+
[<InlineData( "deu mil", 10000)>]
83+
[<InlineData( "deu mil cent un", 10101)>]
84+
[<InlineData( "deu mil cent dos", 10102)>]
85+
[<InlineData( "vint-i-tres mil cinc-cents seixanta-quatre", 23564)>]
86+
[<InlineData( "vuitanta mil deu", 80010)>]
87+
[<InlineData( "cent mil", 100000)>]
88+
[<InlineData( "cent mil un", 100001)>]
89+
[<InlineData( "tres-cents dinou mil tres-cents quaranta-nou", 319349)>]
90+
[<InlineData( "un milió", 1000000)>]
91+
[<InlineData( "un milió un", 1000001)>]
92+
[<InlineData( "dos milions deu", 2000010)>]
93+
[<InlineData( " sis milions trenta mil", 6030000)>]
94+
[<InlineData( "nou milions dos-cents un mil sis-cents vuitanta", 9201680)>]
95+
[<InlineData( "deu milions", 10000000)>]
96+
[<InlineData( "deu milions nou", 10000009)>]
97+
[<InlineData( "vint-i-un milions", 21000000)>]
98+
[<InlineData("quaranta-set milions sis-cents seixanta-un mil seixanta", 47661060)>]
99+
[<InlineData( "cent milions", 100000000)>]
100+
[<InlineData( "dos-cents cinc milions", 205000000)>]
101+
[<InlineData( "tres-cents set milions", 307000000)>]
102+
[<InlineData("quatre-cents seixanta-un milions seixanta mil sis-cents", 461060600)>]
103+
[<InlineData( "mil milions", 1000000000)>]
104+
[<InlineData( "dos mil milions", 2000000000)>]
105+
[<InlineData("dos mil quaranta-nou milions sis-cents cinquanta mil", 2049650000)>]
106+
[<InlineData(
107+
"dos mil cent quaranta-set milions quatre-cents vuitanta-tres mil sis-cents quaranta-set",
108+
System.Int32.MaxValue)>]
109+
let ``tryParseCatalan returns correct result`` (catalan, expected) =
110+
let actual = Numeral.tryParseCatalan catalan
111+
Some expected =! actual
112+
113+
[<Theory>]
114+
[<InlineData( 0, "zero")>]
115+
[<InlineData( 1, "un")>]
116+
[<InlineData( 2, "dos")>]
117+
[<InlineData( 3, "tres")>]
118+
[<InlineData( 4, "quatre")>]
119+
[<InlineData( 5, "cinc")>]
120+
[<InlineData( 6, "sis")>]
121+
[<InlineData( 7, "set")>]
122+
[<InlineData( 8, "vuit")>]
123+
[<InlineData( 9, "nou")>]
124+
[<InlineData( 10, "deu")>]
125+
[<InlineData( 11, "onze")>]
126+
[<InlineData( 12, "dotze")>]
127+
[<InlineData( 13, "tretze")>]
128+
[<InlineData( 14, "catorze")>]
129+
[<InlineData( 15, "quinze")>]
130+
[<InlineData( 16, "setze")>]
131+
[<InlineData( 17, "disset")>]
132+
[<InlineData( 18, "divuit")>]
133+
[<InlineData( 19, "dinou")>]
134+
[<InlineData( 20, "vint")>]
135+
[<InlineData( 21, "vint-i-un")>]
136+
[<InlineData( 30, "trenta")>]
137+
[<InlineData( 34, "trenta-quatre")>]
138+
[<InlineData( 40, "quaranta")>]
139+
[<InlineData( 42, "quaranta-dos")>]
140+
[<InlineData( 50, "cinquanta")>]
141+
[<InlineData( 58, "cinquanta-vuit")>]
142+
[<InlineData( 60, "seixanta")>]
143+
[<InlineData( 65, "seixanta-cinc")>]
144+
[<InlineData( 70, "setanta")>]
145+
[<InlineData( 79, "setanta-nou")>]
146+
[<InlineData( 80, "vuitanta")>]
147+
[<InlineData( 86, "vuitanta-sis")>]
148+
[<InlineData( 90, "noranta")>]
149+
[<InlineData( 93, "noranta-tres")>]
150+
[<InlineData( 100, "cent")>]
151+
[<InlineData( 101, "cent un")>]
152+
[<InlineData( 110, "cent deu")>]
153+
[<InlineData( 114, "cent catorze")>]
154+
[<InlineData( 135, "cent trenta-cinc")>]
155+
[<InlineData( 200, "dos-cents")>]
156+
[<InlineData( 282, "dos-cents vuitanta-dos")>]
157+
[<InlineData( 331, "tres-cents trenta-un")>]
158+
[<InlineData( 407, "quatre-cents set")>]
159+
[<InlineData( 520, "cinc-cents vint")>]
160+
[<InlineData( 666, "sis-cents seixanta-sis")>]
161+
[<InlineData( 798, "set-cents noranta-vuit")>]
162+
[<InlineData( 857, "vuit-cents cinquanta-set")>]
163+
[<InlineData( 999, "nou-cents noranta-nou")>]
164+
[<InlineData( 1000, "mil")>]
165+
[<InlineData( 1001, "mil un")>]
166+
[<InlineData( 1010, "mil deu")>]
167+
[<InlineData( 1066, "mil seixanta-sis")>]
168+
[<InlineData( 1337, "mil tres-cents trenta-set")>]
169+
[<InlineData( 1984, "mil nou-cents vuitanta-quatre")>]
170+
[<InlineData( 2015, "dos mil quinze")>]
171+
[<InlineData( 3000, "tres mil")>]
172+
[<InlineData( 3297, "tres mil dos-cents noranta-set")>]
173+
[<InlineData( 4080, "quatre mil vuitanta")>]
174+
[<InlineData( 5011, "cinc mil onze")>]
175+
[<InlineData( 6025, "sis mil vint-i-cinc")>]
176+
[<InlineData( 7441, "set mil quatre-cents quaranta-un")>]
177+
[<InlineData( 8513, "vuit mil cinc-cents tretze")>]
178+
[<InlineData( 9000, "nou mil")>]
179+
[<InlineData( 10000, "deu mil")>]
180+
[<InlineData( 12001, "dotze mil un")>]
181+
[<InlineData( 23456, "vint-i-tres mil quatre-cents cinquanta-sis")>]
182+
[<InlineData( 32109, "trenta-dos mil cent nou")>]
183+
[<InlineData( 40404, "quaranta mil quatre-cents quatre")>]
184+
[<InlineData( 56789, "cinquanta-sis mil set-cents vuitanta-nou")>]
185+
[<InlineData( 60015, "seixanta mil quinze")>]
186+
[<InlineData( 71003, "setanta-un mil tres")>]
187+
[<InlineData( 80522, "vuitanta mil cinc-cents vint-i-dos")>]
188+
[<InlineData( 98765, "noranta-vuit mil set-cents seixanta-cinc")>]
189+
[<InlineData( 100000, "cent mil")>]
190+
[<InlineData( 100001, "cent mil un")>]
191+
[<InlineData( 100010, "cent mil deu")>]
192+
[<InlineData( 101010, "cent un mil deu")>]
193+
[<InlineData( 200000, "dos-cents mil")>]
194+
[<InlineData( 321000, "tres-cents vint-i-un mil")>]
195+
[<InlineData( 411416, "quatre-cents onze mil quatre-cents setze")>]
196+
[<InlineData( 530121, "cinc-cents trenta mil cent vint-i-un")>]
197+
[<InlineData( 600000, "sis-cents mil")>]
198+
[<InlineData( 788000, "set-cents vuitanta-vuit mil")>]
199+
[<InlineData( 876540, "vuit-cents setanta-sis mil cinc-cents quaranta")>]
200+
[<InlineData( 908077, "nou-cents vuit mil setanta-set")>]
201+
[<InlineData( 1000000, "un milió")>]
202+
[<InlineData( 2000002, "dos milions dos")>]
203+
[<InlineData( 3040506, "tres milions quaranta mil cinc-cents sis")>]
204+
[<InlineData( 4321000, "quatre milions tres-cents vint-i-un mil")>]
205+
[<InlineData( 5004621, "cinc milions quatre mil sis-cents vint-i-un")>]
206+
[<InlineData( 6982001, "sis milions nou-cents vuitanta-dos mil un")>]
207+
[<InlineData( 7000000, "set milions")>]
208+
[<InlineData( 8000220, "vuit milions dos-cents vint")>]
209+
[<InlineData( 9099000, "nou milions noranta-nou mil")>]
210+
[<InlineData( 10000000, "deu milions")>]
211+
[<InlineData( 24000000, "vint-i-quatre milions")>]
212+
[<InlineData( 39020011, "trenta-nou milions vint mil onze")>]
213+
[<InlineData( 40606100, "quaranta milions sis-cents sis mil cent")>]
214+
[<InlineData( 53000000, "cinquanta-tres milions")>]
215+
[<InlineData( 64000098, "seixanta-quatre milions noranta-vuit")>]
216+
[<InlineData( 70003190, "setanta milions tres mil cent noranta")>]
217+
[<InlineData( 80000000, "vuitanta milions")>]
218+
[<InlineData( 99000099, "noranta-nou milions noranta-nou")>]
219+
[<InlineData( 100000000, "cent milions")>]
220+
[<InlineData( 209000000, "dos-cents nou milions")>]
221+
[<InlineData( 398000000, "tres-cents noranta-vuit milions")>]
222+
[<InlineData( 439011000, "quatre-cents trenta-nou milions onze mil")>]
223+
[<InlineData( 560400000, "cinc-cents seixanta milions quatre-cents mil")>]
224+
[<InlineData( 600010900, "sis-cents milions deu mil nou-cents")>]
225+
[<InlineData( 700000000, "set-cents milions")>]
226+
[<InlineData( 800116000, "vuit-cents milions cent setze mil")>]
227+
[<InlineData( 900800007, "nou-cents milions vuit-cents mil set")>]
228+
[<InlineData(1000000000, "mil milions")>]
229+
[<InlineData(2121000000, "dos mil cent vint-i-un milions")>]
230+
[<InlineData(
231+
System.Int32.MaxValue,
232+
"dos mil cent quaranta-set milions quatre-cents vuitanta-tres mil sis-cents quaranta-set")>]
233+
let ``toCatalan returns correct result`` (i, expected) =
234+
let actual = Numeral.toCatalan i
235+
expected =! actual

0 commit comments

Comments
 (0)