1+ namespace ca ;
2+
3+ [ UseCulture ( "ca" ) ]
4+
5+ public class NumberToWordsTests
6+ {
7+ [ Theory ]
8+ [ InlineData ( - 1 , "menys primer" , GrammaticalGender . Neuter ) ]
9+ [ InlineData ( 0 , "zero" , GrammaticalGender . Neuter ) ]
10+ [ InlineData ( 1 , "primer" , GrammaticalGender . Neuter ) ]
11+ [ InlineData ( 1 , "primer" , GrammaticalGender . Masculine ) ]
12+ [ InlineData ( 1 , "primera" , GrammaticalGender . Feminine ) ]
13+ [ InlineData ( 2 , "segon" , GrammaticalGender . Masculine ) ]
14+ [ InlineData ( 2 , "segona" , GrammaticalGender . Feminine ) ]
15+ [ InlineData ( 3 , "tercer" , GrammaticalGender . Neuter ) ]
16+ [ InlineData ( 3 , "tercer" , GrammaticalGender . Masculine ) ]
17+ [ InlineData ( 3 , "tercera" , GrammaticalGender . Feminine ) ]
18+ [ InlineData ( 4 , "quart" , GrammaticalGender . Masculine ) ]
19+ [ InlineData ( 4 , "quarta" , GrammaticalGender . Feminine ) ]
20+ [ InlineData ( 5 , "cinquè" , GrammaticalGender . Masculine ) ]
21+ [ InlineData ( 5 , "cinquena" , GrammaticalGender . Feminine ) ]
22+ [ InlineData ( 6 , "sisè" , GrammaticalGender . Masculine ) ]
23+ [ InlineData ( 6 , "sisena" , GrammaticalGender . Feminine ) ]
24+ [ InlineData ( 7 , "setè" , GrammaticalGender . Masculine ) ]
25+ [ InlineData ( 7 , "setena" , GrammaticalGender . Feminine ) ]
26+ [ InlineData ( 8 , "vuitè" , GrammaticalGender . Masculine ) ]
27+ [ InlineData ( 8 , "vuitena" , GrammaticalGender . Feminine ) ]
28+ [ InlineData ( 9 , "novè" , GrammaticalGender . Masculine ) ]
29+ [ InlineData ( 9 , "novena" , GrammaticalGender . Feminine ) ]
30+ [ InlineData ( 10 , "desè" , GrammaticalGender . Masculine ) ]
31+ [ InlineData ( 10 , "desena" , GrammaticalGender . Feminine ) ]
32+ [ InlineData ( 11 , "onzè" , GrammaticalGender . Masculine ) ]
33+ [ InlineData ( 11 , "onzena" , GrammaticalGender . Feminine ) ]
34+ [ InlineData ( 20 , "vintè" , GrammaticalGender . Masculine ) ]
35+ [ InlineData ( 20 , "vintena" , GrammaticalGender . Feminine ) ]
36+ [ InlineData ( 22 , "vint-i-dosè" , GrammaticalGender . Masculine ) ]
37+ [ InlineData ( 22 , "vint-i-dosena" , GrammaticalGender . Feminine ) ]
38+ [ InlineData ( 30 , "trentè" , GrammaticalGender . Masculine ) ]
39+ [ InlineData ( 30 , "trentena" , GrammaticalGender . Feminine ) ]
40+ [ InlineData ( 34 , "trenta-quatrè" , GrammaticalGender . Masculine ) ]
41+ [ InlineData ( 34 , "trenta-quatrena" , GrammaticalGender . Feminine ) ]
42+ [ InlineData ( 40 , "quarantaè" , GrammaticalGender . Masculine ) ]
43+ [ InlineData ( 40 , "quarantaena" , GrammaticalGender . Feminine ) ]
44+ [ InlineData ( 46 , "quaranta-sisè" , GrammaticalGender . Masculine ) ]
45+ [ InlineData ( 46 , "quaranta-sisena" , GrammaticalGender . Feminine ) ]
46+ [ InlineData ( 50 , "cinquantaè" , GrammaticalGender . Masculine ) ]
47+ [ InlineData ( 50 , "cinquantaena" , GrammaticalGender . Feminine ) ]
48+ [ InlineData ( 57 , "cinquanta-setè" , GrammaticalGender . Masculine ) ]
49+ [ InlineData ( 57 , "cinquanta-setena" , GrammaticalGender . Feminine ) ]
50+ [ InlineData ( 60 , "seixantè" , GrammaticalGender . Masculine ) ]
51+ [ InlineData ( 60 , "seixantena" , GrammaticalGender . Feminine ) ]
52+ [ InlineData ( 69 , "seixanta-novè" , GrammaticalGender . Masculine ) ]
53+ [ InlineData ( 69 , "seixanta-novena" , GrammaticalGender . Feminine ) ]
54+ [ InlineData ( 70 , "setantè" , GrammaticalGender . Masculine ) ]
55+ [ InlineData ( 70 , "setantena" , GrammaticalGender . Feminine ) ]
56+ [ InlineData ( 74 , "setanta-quatrè" , GrammaticalGender . Masculine ) ]
57+ [ InlineData ( 74 , "setanta-quatrena" , GrammaticalGender . Feminine ) ]
58+ [ InlineData ( 80 , "vuitantè" , GrammaticalGender . Masculine ) ]
59+ [ InlineData ( 80 , "vuitantena" , GrammaticalGender . Feminine ) ]
60+ [ InlineData ( 85 , "vuitanta-cinquè" , GrammaticalGender . Masculine ) ]
61+ [ InlineData ( 85 , "vuitanta-cinquena" , GrammaticalGender . Feminine ) ]
62+ [ InlineData ( 90 , "norantè" , GrammaticalGender . Masculine ) ]
63+ [ InlineData ( 90 , "norantena" , GrammaticalGender . Feminine ) ]
64+ [ InlineData ( 99 , "noranta-novè" , GrammaticalGender . Masculine ) ]
65+ [ InlineData ( 99 , "noranta-novena" , GrammaticalGender . Feminine ) ]
66+ [ InlineData ( 100 , "centè" , GrammaticalGender . Masculine ) ]
67+ [ InlineData ( 100 , "centena" , GrammaticalGender . Feminine ) ]
68+ [ InlineData ( 101 , "cent primer" , GrammaticalGender . Masculine ) ]
69+ [ InlineData ( 101 , "cent primera" , GrammaticalGender . Feminine ) ]
70+ [ InlineData ( 110 , "cent deu" , GrammaticalGender . Masculine ) ]
71+ [ InlineData ( 111 , "cent onzè" , GrammaticalGender . Masculine ) ]
72+ [ InlineData ( 120 , "cent vint" , GrammaticalGender . Masculine ) ]
73+ [ InlineData ( 121 , "cent vint-i-un" , GrammaticalGender . Masculine ) ]
74+ [ InlineData ( 121 , "cent vint-i-una" , GrammaticalGender . Feminine ) ]
75+ [ InlineData ( 200 , "dos-cents" , GrammaticalGender . Masculine ) ]
76+ [ InlineData ( 200 , "dues-centes" , GrammaticalGender . Feminine ) ]
77+ [ InlineData ( 201 , "dos-cents un" , GrammaticalGender . Masculine ) ]
78+ [ InlineData ( 201 , "dues-centes una" , GrammaticalGender . Feminine ) ]
79+ [ InlineData ( 221 , "dos-cents vint-i-un" , GrammaticalGender . Masculine ) ]
80+ [ InlineData ( 221 , "dues-centes vint-i-una" , GrammaticalGender . Feminine ) ]
81+ [ InlineData ( 500 , "cinc-cents" , GrammaticalGender . Masculine ) ]
82+ [ InlineData ( 500 , "cinc-centes" , GrammaticalGender . Feminine ) ]
83+ [ InlineData ( 701 , "set-cents un" , GrammaticalGender . Masculine ) ]
84+ [ InlineData ( 701 , "set-centes una" , GrammaticalGender . Feminine ) ]
85+ [ InlineData ( 900 , "nou-cents" , GrammaticalGender . Masculine ) ]
86+ [ InlineData ( 900 , "nou-centes" , GrammaticalGender . Feminine ) ]
87+ [ InlineData ( 999 , "nou-cents noranta-nou" , GrammaticalGender . Masculine ) ]
88+ [ InlineData ( 999 , "nou-centes noranta-nou" , GrammaticalGender . Feminine ) ]
89+ [ InlineData ( 1000 , "mil" , GrammaticalGender . Masculine ) ]
90+ [ InlineData ( 1001 , "mil un" , GrammaticalGender . Masculine ) ]
91+ [ InlineData ( 1001 , "mil una" , GrammaticalGender . Feminine ) ]
92+ [ InlineData ( 1021 , "mil vint-i-un" , GrammaticalGender . Masculine ) ]
93+ [ InlineData ( 1021 , "mil vint-i-una" , GrammaticalGender . Feminine ) ]
94+ [ InlineData ( 1100 , "mil cent" , GrammaticalGender . Masculine ) ]
95+ [ InlineData ( 1100 , "mil cent" , GrammaticalGender . Feminine ) ]
96+ [ InlineData ( 2000 , "dos mil" , GrammaticalGender . Masculine ) ]
97+ [ InlineData ( 2100 , "dos mil cent" , GrammaticalGender . Masculine ) ]
98+ [ InlineData ( 3500 , "tres mil cinc-cents" , GrammaticalGender . Masculine ) ]
99+ [ InlineData ( 3500 , "tres mil cinc-centes" , GrammaticalGender . Feminine ) ]
100+ [ InlineData ( 100000 , "cent mil" , GrammaticalGender . Masculine ) ]
101+ [ InlineData ( 100001 , "cent mil un" , GrammaticalGender . Masculine ) ]
102+ [ InlineData ( 100001 , "cent mil una" , GrammaticalGender . Feminine ) ]
103+ [ InlineData ( 100002 , "cent mil dos" , GrammaticalGender . Masculine ) ]
104+ [ InlineData ( 100002 , "cent mil dues" , GrammaticalGender . Feminine ) ]
105+ [ InlineData ( 100021 , "cent mil vint-i-un" , GrammaticalGender . Masculine ) ]
106+ [ InlineData ( 100021 , "cent mil vint-i-una" , GrammaticalGender . Feminine ) ]
107+ [ InlineData ( 200000 , "dos-cents mil" , GrammaticalGender . Masculine ) ]
108+ [ InlineData ( 200000 , "dues-centes mil" , GrammaticalGender . Feminine ) ]
109+ [ InlineData ( 200121 , "dos-cents mil cent vint-i-un" , GrammaticalGender . Masculine ) ]
110+ [ InlineData ( 200121 , "dues-centes mil cent vint-i-una" , GrammaticalGender . Feminine ) ]
111+ [ InlineData ( 1000000 , "un milió" , GrammaticalGender . Masculine ) ]
112+ [ InlineData ( 1000001 , "un milió un" , GrammaticalGender . Masculine ) ]
113+ [ InlineData ( 1000001 , "un milió una" , GrammaticalGender . Feminine ) ]
114+ [ InlineData ( 2000000 , "dos milions" , GrammaticalGender . Masculine ) ]
115+ [ InlineData ( 2000001 , "dos milions un" , GrammaticalGender . Masculine ) ]
116+ [ InlineData ( 2000001 , "dos milions una" , GrammaticalGender . Feminine ) ]
117+ [ InlineData ( 200000121 , "dos-cents milions cent vint-i-un" , GrammaticalGender . Masculine ) ]
118+ [ InlineData ( 200000121 , "dos-cents milions cent vint-i-una" , GrammaticalGender . Feminine ) ]
119+ public void ToOrdinalWords ( int number , string words , GrammaticalGender gender ) =>
120+ Assert . Equal ( words , number . ToOrdinalWords ( gender ) ) ;
121+
122+ [ Theory ]
123+ [ InlineData ( 1 , WordForm . Abbreviation , GrammaticalGender . Masculine , "1r" ) ]
124+ [ InlineData ( 1 , WordForm . Abbreviation , GrammaticalGender . Feminine , "1a" ) ]
125+ [ InlineData ( 2 , WordForm . Abbreviation , GrammaticalGender . Masculine , "2n" ) ]
126+ [ InlineData ( 2 , WordForm . Abbreviation , GrammaticalGender . Feminine , "2a" ) ]
127+ [ InlineData ( 3 , WordForm . Abbreviation , GrammaticalGender . Masculine , "3r" ) ]
128+ [ InlineData ( 3 , WordForm . Abbreviation , GrammaticalGender . Feminine , "3a" ) ]
129+ [ InlineData ( 11 , WordForm . Abbreviation , GrammaticalGender . Masculine , "11è" ) ]
130+ [ InlineData ( 11 , WordForm . Abbreviation , GrammaticalGender . Feminine , "11a" ) ]
131+ [ InlineData ( 22 , WordForm . Abbreviation , GrammaticalGender . Masculine , "22n" ) ]
132+ [ InlineData ( 22 , WordForm . Abbreviation , GrammaticalGender . Feminine , "22a" ) ]
133+ [ InlineData ( 31 , WordForm . Abbreviation , GrammaticalGender . Masculine , "31r" ) ]
134+ [ InlineData ( 31 , WordForm . Abbreviation , GrammaticalGender . Feminine , "31a" ) ]
135+ [ InlineData ( 100 , WordForm . Abbreviation , GrammaticalGender . Masculine , "100è" ) ]
136+ [ InlineData ( 100 , WordForm . Abbreviation , GrammaticalGender . Feminine , "100a" ) ]
137+ [ InlineData ( 101 , WordForm . Abbreviation , GrammaticalGender . Masculine , "101r" ) ]
138+ [ InlineData ( 101 , WordForm . Abbreviation , GrammaticalGender . Feminine , "101a" ) ]
139+ [ InlineData ( 999 , WordForm . Abbreviation , GrammaticalGender . Masculine , "999è" ) ]
140+ [ InlineData ( 999 , WordForm . Abbreviation , GrammaticalGender . Feminine , "999a" ) ]
141+ public void ToOrdinalWordsWithWordForm ( int number , WordForm wordForm , GrammaticalGender gender , string expected ) =>
142+ Assert . Equal ( expected , number . ToOrdinalWords ( gender , wordForm ) ) ;
143+
144+ [ Theory ]
145+ [ InlineData ( 1 , WordForm . Abbreviation , GrammaticalGender . Masculine , "1r" ) ]
146+ [ InlineData ( 1 , WordForm . Abbreviation , GrammaticalGender . Feminine , "1a" ) ]
147+ [ InlineData ( 2 , WordForm . Abbreviation , GrammaticalGender . Masculine , "2n" ) ]
148+ [ InlineData ( 2 , WordForm . Abbreviation , GrammaticalGender . Feminine , "2a" ) ]
149+ [ InlineData ( 3 , WordForm . Abbreviation , GrammaticalGender . Masculine , "3r" ) ]
150+ [ InlineData ( 3 , WordForm . Abbreviation , GrammaticalGender . Feminine , "3a" ) ]
151+ [ InlineData ( 11 , WordForm . Abbreviation , GrammaticalGender . Masculine , "11è" ) ]
152+ [ InlineData ( 11 , WordForm . Abbreviation , GrammaticalGender . Feminine , "11a" ) ]
153+ [ InlineData ( 22 , WordForm . Abbreviation , GrammaticalGender . Masculine , "22n" ) ]
154+ [ InlineData ( 22 , WordForm . Abbreviation , GrammaticalGender . Feminine , "22a" ) ]
155+ [ InlineData ( 31 , WordForm . Abbreviation , GrammaticalGender . Masculine , "31r" ) ]
156+ [ InlineData ( 31 , WordForm . Abbreviation , GrammaticalGender . Feminine , "31a" ) ]
157+ [ InlineData ( 100 , WordForm . Abbreviation , GrammaticalGender . Masculine , "100è" ) ]
158+ [ InlineData ( 100 , WordForm . Abbreviation , GrammaticalGender . Feminine , "100a" ) ]
159+ [ InlineData ( 101 , WordForm . Abbreviation , GrammaticalGender . Masculine , "101r" ) ]
160+ [ InlineData ( 101 , WordForm . Abbreviation , GrammaticalGender . Feminine , "101a" ) ]
161+ [ InlineData ( 999 , WordForm . Abbreviation , GrammaticalGender . Masculine , "999è" ) ]
162+ [ InlineData ( 999 , WordForm . Abbreviation , GrammaticalGender . Feminine , "999a" ) ]
163+ public void ToOrdinalWordsWithWordFormAndGender ( int number , WordForm wordForm , GrammaticalGender gender , string expected ) =>
164+ Assert . Equal ( expected , number . ToOrdinalWords ( gender , wordForm ) ) ;
165+
166+ [ Theory ]
167+ [ InlineData ( 0 , "zero vegades" ) ]
168+ [ InlineData ( 2 , "doble" ) ]
169+ [ InlineData ( 100 , "cent vegades" ) ]
170+ public void ToTuple ( int number , string expected )
171+ => Assert . Equal ( expected , number . ToTuple ( ) ) ;
172+
173+ [ Theory ]
174+ [ InlineData ( 0 , "zero" , GrammaticalGender . Masculine ) ]
175+ [ InlineData ( 1 , "un" , GrammaticalGender . Masculine ) ]
176+ [ InlineData ( 1 , "una" , GrammaticalGender . Feminine ) ]
177+ [ InlineData ( 2 , "dos" , GrammaticalGender . Masculine ) ]
178+ [ InlineData ( 2 , "dues" , GrammaticalGender . Feminine ) ]
179+ [ InlineData ( 3 , "tres" , GrammaticalGender . Masculine ) ]
180+ [ InlineData ( 3 , "tres" , GrammaticalGender . Feminine ) ]
181+ [ InlineData ( 11 , "onze" , GrammaticalGender . Masculine ) ]
182+ [ InlineData ( 21 , "vint-i-u" , GrammaticalGender . Masculine ) ]
183+ [ InlineData ( 21 , "vint-i-una" , GrammaticalGender . Feminine ) ]
184+ [ InlineData ( 31 , "trenta-u" , GrammaticalGender . Masculine ) ]
185+ [ InlineData ( 31 , "trenta-una" , GrammaticalGender . Feminine ) ]
186+ [ InlineData ( 81 , "vuitanta-u" , GrammaticalGender . Masculine ) ]
187+ [ InlineData ( 81 , "vuitanta-una" , GrammaticalGender . Feminine ) ]
188+ [ InlineData ( 101 , "cent u" , GrammaticalGender . Masculine ) ]
189+ [ InlineData ( 101 , "cent una" , GrammaticalGender . Feminine ) ]
190+ [ InlineData ( 500 , "cinc-cents" , GrammaticalGender . Masculine ) ]
191+ [ InlineData ( 500 , "cinc-centes" , GrammaticalGender . Feminine ) ]
192+ [ InlineData ( 701 , "set-cents u" , GrammaticalGender . Masculine ) ]
193+ [ InlineData ( 701 , "set-centes una" , GrammaticalGender . Feminine ) ]
194+ [ InlineData ( 3500 , "tres mil cinc-cents" , GrammaticalGender . Masculine ) ]
195+ [ InlineData ( 3500 , "tres mil cinc-centes" , GrammaticalGender . Feminine ) ]
196+ [ InlineData ( 200121 , "dos-cents mil cent vint-i-u" , GrammaticalGender . Masculine ) ]
197+ [ InlineData ( 200121 , "dues-centes mil cent vint-i-una" , GrammaticalGender . Feminine ) ]
198+ [ InlineData ( 200000121 , "dos-cents milions cent vint-i-u" , GrammaticalGender . Masculine ) ]
199+ [ InlineData ( 200000121 , "dos-cents milions cent vint-i-una" , GrammaticalGender . Feminine ) ]
200+ [ InlineData ( 1000001 , "un milió u" , GrammaticalGender . Masculine ) ]
201+ [ InlineData ( 1000001 , "un milió una" , GrammaticalGender . Feminine ) ]
202+ [ InlineData ( - 15 , "menys quinze" , GrammaticalGender . Masculine ) ]
203+ [ InlineData ( - 123 , "menys cent vint-i-tres" , GrammaticalGender . Masculine ) ]
204+ public void ToWords ( long number , string expected , GrammaticalGender gender = GrammaticalGender . Masculine ) =>
205+ Assert . Equal ( expected , number . ToWords ( gender ) ) ;
206+
207+ }
0 commit comments