1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 """
17 Unit-tests for pytils.numeral
18 """
19
20 __id__ = __revision__ = "$Id: test_numeral.py 63 2007-01-02 09:22:16Z the.pythy $"
21 __url__ = "$URL: https://pythy.googlecode.com/svn/trunk/pytils/pytils/test/test_numeral.py $"
22
23 import unittest
24 import pytils
25
27 """
28 Test case for pytils.numeral.choose_plural
29 """
30
32 """
33 Setting up environment for tests
34 """
35 self.variants = (u"гвоздь", u"гвоздя", u"гвоздей")
36
43
55
57 """
58 Unit-test for testing choos_plural's exceptions
59 """
60 self.assertRaises(TypeError, pytils.numeral.choose_plural,
61 "25", u"any,bene,raba")
62 self.assertRaises(TypeError, pytils.numeral.choose_plural,
63 25, 30)
64 self.assertRaises(ValueError, pytils.numeral.choose_plural,
65 25, u"any,bene")
66 self.assertRaises(ValueError, pytils.numeral.choose_plural,
67 -25, u"any,bene,raba")
68
73
74 -class GetFloatRemainderTestCase(unittest.TestCase):
75 """
76 Test case for pytils.numeral._get_float_remainder
77 """
78
80 """
81 Unit-test for _get_float_remainder
82 """
83 self.assertEquals(pytils.numeral._get_float_remainder(1.3),
84 '3')
85 self.assertEquals(pytils.numeral._get_float_remainder(2.35, 1),
86 '4')
87 self.assertEquals(pytils.numeral._get_float_remainder(123.1234567891),
88 '123456789')
89 self.assertEquals(pytils.numeral._get_float_remainder(2.353, 2),
90 '35')
91 self.assertEquals(pytils.numeral._get_float_remainder(0.01),
92 '01')
93 self.assertEquals(pytils.numeral._get_float_remainder(5),
94 '0')
95
97 """
98 Unit-test for testing _get_float_remainder's exceptions
99 """
100 self.assertRaises(ValueError, pytils.numeral._get_float_remainder,
101 2.998, 2)
102 self.assertRaises(TypeError, pytils.numeral._get_float_remainder, "1.23")
103 self.assertRaises(ValueError, pytils.numeral._get_float_remainder, -1.23)
104
106 """
107 Test case for pytils.numeral.rubles
108 """
109
128
135
136
138 """
139 Test case for pytils.numeral.in_words
140 """
141
156
163
176
184
186 """
187 Unit-test for in_words_float with gender (old-style, i.e. ints)
188 """
189 self.assertEquals(pytils.numeral.in_words(21, 1),
190 u"двадцать один")
191 self.assertEquals(pytils.numeral.in_words(21, 2),
192 u"двадцать одна")
193 self.assertEquals(pytils.numeral.in_words(21, 3),
194 u"двадцать одно")
195
196 self.assertEquals(pytils.numeral.in_words(21.0, 1),
197 u"двадцать одна целая ноль десятых")
198 self.assertEquals(pytils.numeral.in_words(21.0, 2),
199 u"двадцать одна целая ноль десятых")
200 self.assertEquals(pytils.numeral.in_words(21.0, 3),
201 u"двадцать одна целая ноль десятых")
202 self.assertEquals(pytils.numeral.in_words(21l, 1),
203 u"двадцать один")
204
206 """
207 Unit-test for in_words_float with gender (old-style, i.e. ints)
208 """
209 self.assertEquals(pytils.numeral.in_words(21, pytils.numeral.MALE),
210 u"двадцать один")
211 self.assertEquals(pytils.numeral.in_words(21, pytils.numeral.FEMALE),
212 u"двадцать одна")
213 self.assertEquals(pytils.numeral.in_words(21, pytils.numeral.NEUTER),
214 u"двадцать одно")
215
216 self.assertEquals(pytils.numeral.in_words(21.0, pytils.numeral.MALE),
217 u"двадцать одна целая ноль десятых")
218 self.assertEquals(pytils.numeral.in_words(21.0, pytils.numeral.FEMALE),
219 u"двадцать одна целая ноль десятых")
220 self.assertEquals(pytils.numeral.in_words(21.0, pytils.numeral.NEUTER),
221 u"двадцать одна целая ноль десятых")
222 self.assertEquals(pytils.numeral.in_words(21l, pytils.numeral.MALE),
223 u"двадцать один")
224
225
227 """
228 Unit-test for general in_words
229 """
230 self.assertEquals(pytils.numeral.in_words(10), u"десять")
231 self.assertEquals(pytils.numeral.in_words(5), u"пять")
232 self.assertEquals(pytils.numeral.in_words(102), u"сто два")
233 self.assertEquals(pytils.numeral.in_words(3521),
234 u"три тысячи пятьсот двадцать один")
235 self.assertEquals(pytils.numeral.in_words(3500),
236 u"три тысячи пятьсот")
237 self.assertEquals(pytils.numeral.in_words(5231000),
238 u"пять миллионов двести тридцать одна тысяча")
239 self.assertEquals(pytils.numeral.in_words(10.0),
240 u"десять целых ноль десятых")
241 self.assertEquals(pytils.numeral.in_words(2.25),
242 u"две целых двадцать пять сотых")
243 self.assertEquals(pytils.numeral.in_words(0.01),
244 u"ноль целых одна сотая")
245 self.assertEquals(pytils.numeral.in_words(0.10),
246 u"ноль целых одна десятая")
247 self.assertEquals(pytils.numeral.in_words(10l), u"десять")
248
250 """
251 Unit-test for testing in_words' exceptions
252 """
253 self.assertRaises(TypeError, pytils.numeral.in_words, "0.2")
254 self.assertRaises(TypeError, pytils.numeral.in_words, 0.2, "1")
255 self.assertRaises(ValueError, pytils.numeral.in_words, 0.2, 5)
256 self.assertRaises(ValueError, pytils.numeral.in_words, -2)
257
258
260 """
261 Test case for pytils.numeral.sum_string
262 """
263
265 """
266 Setting up environment for tests
267 """
268 self.variants_male = (u"гвоздь", u"гвоздя", u"гвоздей")
269 self.variants_female = (u"шляпка", u"шляпки", u"шляпок")
270
272 """
273 Checks sum_string with male gender with old-style genders (i.e. ints)
274 """
275 self.assertEquals(pytils.numeral.sum_string(amount,
276 1,
277 self.variants_male),
278 estimated)
279
280 - def ckMale(self, amount, estimated):
288
289
291 """
292 Checks sum_string with female gender wuth old-style genders (i.e. ints)
293 """
294 self.assertEquals(pytils.numeral.sum_string(amount,
295 2,
296 self.variants_female),
297 estimated)
298
307
309 """
310 Unit-test for sum_string with old-style genders
311 """
312 self.ckMaleOldStyle(10, u"десять гвоздей")
313 self.ckMaleOldStyle(2, u"два гвоздя")
314 self.ckMaleOldStyle(31, u"тридцать один гвоздь")
315 self.ckFemaleOldStyle(10, u"десять шляпок")
316 self.ckFemaleOldStyle(2, u"две шляпки")
317 self.ckFemaleOldStyle(31, u"тридцать одна шляпка")
318
319 self.ckFemaleOldStyle(31l, u"тридцать одна шляпка")
320
321 self.assertEquals(u"одиннадцать негритят",
322 pytils.numeral.sum_string(
323 11,
324 1,
325 u"негритенок,негритенка,негритят"
326 ))
327
329 """
330 Unit-test for sum_string
331 """
332 self.ckMale(10, u"десять гвоздей")
333 self.ckMale(2, u"два гвоздя")
334 self.ckMale(31, u"тридцать один гвоздь")
335 self.ckFemale(10, u"десять шляпок")
336 self.ckFemale(2, u"две шляпки")
337 self.ckFemale(31, u"тридцать одна шляпка")
338
339 self.ckFemale(31l, u"тридцать одна шляпка")
340
341 self.assertEquals(u"одиннадцать негритят",
342 pytils.numeral.sum_string(
343 11,
344 pytils.numeral.MALE,
345 u"негритенок,негритенка,негритят"
346 ))
347
349 """
350 Unit-test for testing sum_string's exceptions
351 """
352 self.assertRaises(TypeError, pytils.numeral.sum_string,
353 "1", 1)
354 self.assertRaises(TypeError, pytils.numeral.sum_string,
355 1, "1")
356 self.assertRaises(TypeError, pytils.numeral.sum_string,
357 1, "1", 23)
358 self.assertRaises(TypeError, pytils.numeral.sum_string,
359 1, pytils.numeral.MALE, (23,24,25))
360 self.assertRaises(ValueError, pytils.numeral.sum_string,
361 1, pytils.numeral.MALE, (23,))
362 self.assertRaises(ValueError, pytils.numeral.sum_string,
363 -1, pytils.numeral.MALE, u"any,bene,raba")
364
365 if __name__ == '__main__':
366 unittest.main()
367