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 102 2007-07-12 12:33:36Z the.pythy $"
21 __url__ = "$URL: https://pythy.googlecode.com/svn/tags/pytils/0_2_2/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
70 """
71 Tests new-style variants
72 """
73 self.assertEquals(
74 pytils.numeral.choose_plural(1,u"гвоздь,гвоздя, гвоздей"),
75 u"гвоздь")
76 self.assertEquals(
77 pytils.numeral.choose_plural(5,u"гвоздь, гвоздя, гвоздей\, шпунтов"),
78 u"гвоздей, шпунтов")
79
81 """
82 Test case for get_plural
83 """
85 """
86 Test regular get_plural
87 """
88 self.assertEquals(
89 pytils.numeral.get_plural(1, u"комментарий, комментария, комментариев"),
90 u"1 комментарий")
91 self.assertEquals(
92 pytils.numeral.get_plural(0, u"комментарий, комментария, комментариев"),
93 u"0 комментариев")
94
96 """
97 Test get_plural with absence
98 """
99 self.assertEquals(
100 pytils.numeral.get_plural(1, u"комментарий, комментария, комментариев",
101 u"без комментариев"),
102 u"1 комментарий")
103 self.assertEquals(
104 pytils.numeral.get_plural(0, u"комментарий, комментария, комментариев",
105 u"без комментариев"),
106 u"без комментариев")
107
109 """
110 Test _get_plural_legacy
111 """
112 self.assertEquals(
113 pytils.numeral._get_plural_legacy(1, u"комментарий, комментария, комментариев"),
114 u"1 комментарий")
115 self.assertEquals(
116 pytils.numeral._get_plural_legacy(0, u"комментарий, комментария, комментариев"),
117 u"0 комментариев")
118 self.assertEquals(
119 pytils.numeral._get_plural_legacy(1, u"комментарий, комментария, комментариев, без комментариев"),
120 u"1 комментарий")
121 self.assertEquals(
122 pytils.numeral._get_plural_legacy(0, u"комментарий, комментария, комментариев, без комментариев"),
123 u"без комментариев")
124
125
126 -class GetFloatRemainderTestCase(unittest.TestCase):
127 """
128 Test case for pytils.numeral._get_float_remainder
129 """
130
132 """
133 Unit-test for _get_float_remainder
134 """
135 self.assertEquals(pytils.numeral._get_float_remainder(1.3),
136 '3')
137 self.assertEquals(pytils.numeral._get_float_remainder(2.35, 1),
138 '4')
139 self.assertEquals(pytils.numeral._get_float_remainder(123.1234567891),
140 '123456789')
141 self.assertEquals(pytils.numeral._get_float_remainder(2.353, 2),
142 '35')
143 self.assertEquals(pytils.numeral._get_float_remainder(0.01),
144 '01')
145 self.assertEquals(pytils.numeral._get_float_remainder(5),
146 '0')
147
149 """
150 Unit-test for testing _get_float_remainder's exceptions
151 """
152 self.assertRaises(ValueError, pytils.numeral._get_float_remainder,
153 2.998, 2)
154 self.assertRaises(TypeError, pytils.numeral._get_float_remainder, "1.23")
155 self.assertRaises(ValueError, pytils.numeral._get_float_remainder, -1.23)
156
158 """
159 Test case for pytils.numeral.rubles
160 """
161
180
187
188
190 """
191 Test case for pytils.numeral.in_words
192 """
193
208
215
228
236
238 """
239 Unit-test for in_words_float with gender (old-style, i.e. ints)
240 """
241 self.assertEquals(pytils.numeral.in_words(21, 1),
242 u"двадцать один")
243 self.assertEquals(pytils.numeral.in_words(21, 2),
244 u"двадцать одна")
245 self.assertEquals(pytils.numeral.in_words(21, 3),
246 u"двадцать одно")
247
248 self.assertEquals(pytils.numeral.in_words(21.0, 1),
249 u"двадцать одна целая ноль десятых")
250 self.assertEquals(pytils.numeral.in_words(21.0, 2),
251 u"двадцать одна целая ноль десятых")
252 self.assertEquals(pytils.numeral.in_words(21.0, 3),
253 u"двадцать одна целая ноль десятых")
254 self.assertEquals(pytils.numeral.in_words(21l, 1),
255 u"двадцать один")
256
258 """
259 Unit-test for in_words_float with gender (old-style, i.e. ints)
260 """
261 self.assertEquals(pytils.numeral.in_words(21, pytils.numeral.MALE),
262 u"двадцать один")
263 self.assertEquals(pytils.numeral.in_words(21, pytils.numeral.FEMALE),
264 u"двадцать одна")
265 self.assertEquals(pytils.numeral.in_words(21, pytils.numeral.NEUTER),
266 u"двадцать одно")
267
268 self.assertEquals(pytils.numeral.in_words(21.0, pytils.numeral.MALE),
269 u"двадцать одна целая ноль десятых")
270 self.assertEquals(pytils.numeral.in_words(21.0, pytils.numeral.FEMALE),
271 u"двадцать одна целая ноль десятых")
272 self.assertEquals(pytils.numeral.in_words(21.0, pytils.numeral.NEUTER),
273 u"двадцать одна целая ноль десятых")
274 self.assertEquals(pytils.numeral.in_words(21l, pytils.numeral.MALE),
275 u"двадцать один")
276
277
279 """
280 Unit-test for general in_words
281 """
282 self.assertEquals(pytils.numeral.in_words(10), u"десять")
283 self.assertEquals(pytils.numeral.in_words(5), u"пять")
284 self.assertEquals(pytils.numeral.in_words(102), u"сто два")
285 self.assertEquals(pytils.numeral.in_words(3521),
286 u"три тысячи пятьсот двадцать один")
287 self.assertEquals(pytils.numeral.in_words(3500),
288 u"три тысячи пятьсот")
289 self.assertEquals(pytils.numeral.in_words(5231000),
290 u"пять миллионов двести тридцать одна тысяча")
291 self.assertEquals(pytils.numeral.in_words(10.0),
292 u"десять целых ноль десятых")
293 self.assertEquals(pytils.numeral.in_words(2.25),
294 u"две целых двадцать пять сотых")
295 self.assertEquals(pytils.numeral.in_words(0.01),
296 u"ноль целых одна сотая")
297 self.assertEquals(pytils.numeral.in_words(0.10),
298 u"ноль целых одна десятая")
299 self.assertEquals(pytils.numeral.in_words(10l), u"десять")
300
302 """
303 Unit-test for testing in_words' exceptions
304 """
305 self.assertRaises(TypeError, pytils.numeral.in_words, "0.2")
306 self.assertRaises(TypeError, pytils.numeral.in_words, 0.2, "1")
307 self.assertRaises(ValueError, pytils.numeral.in_words, 0.2, 5)
308 self.assertRaises(ValueError, pytils.numeral.in_words, -2)
309
310
312 """
313 Test case for pytils.numeral.sum_string
314 """
315
317 """
318 Setting up environment for tests
319 """
320 self.variants_male = (u"гвоздь", u"гвоздя", u"гвоздей")
321 self.variants_female = (u"шляпка", u"шляпки", u"шляпок")
322
324 """
325 Checks sum_string with male gender with old-style genders (i.e. ints)
326 """
327 self.assertEquals(pytils.numeral.sum_string(amount,
328 1,
329 self.variants_male),
330 estimated)
331
332 - def ckMale(self, amount, estimated):
340
341
343 """
344 Checks sum_string with female gender wuth old-style genders (i.e. ints)
345 """
346 self.assertEquals(pytils.numeral.sum_string(amount,
347 2,
348 self.variants_female),
349 estimated)
350
359
361 """
362 Unit-test for sum_string with old-style genders
363 """
364 self.ckMaleOldStyle(10, u"десять гвоздей")
365 self.ckMaleOldStyle(2, u"два гвоздя")
366 self.ckMaleOldStyle(31, u"тридцать один гвоздь")
367 self.ckFemaleOldStyle(10, u"десять шляпок")
368 self.ckFemaleOldStyle(2, u"две шляпки")
369 self.ckFemaleOldStyle(31, u"тридцать одна шляпка")
370
371 self.ckFemaleOldStyle(31l, u"тридцать одна шляпка")
372
373 self.assertEquals(u"одиннадцать негритят",
374 pytils.numeral.sum_string(
375 11,
376 1,
377 u"негритенок,негритенка,негритят"
378 ))
379
381 """
382 Unit-test for sum_string
383 """
384 self.ckMale(10, u"десять гвоздей")
385 self.ckMale(2, u"два гвоздя")
386 self.ckMale(31, u"тридцать один гвоздь")
387 self.ckFemale(10, u"десять шляпок")
388 self.ckFemale(2, u"две шляпки")
389 self.ckFemale(31, u"тридцать одна шляпка")
390
391 self.ckFemale(31l, u"тридцать одна шляпка")
392
393 self.assertEquals(u"одиннадцать негритят",
394 pytils.numeral.sum_string(
395 11,
396 pytils.numeral.MALE,
397 u"негритенок,негритенка,негритят"
398 ))
399
401 """
402 Unit-test for testing sum_string's exceptions
403 """
404 self.assertRaises(TypeError, pytils.numeral.sum_string,
405 "1", 1)
406 self.assertRaises(TypeError, pytils.numeral.sum_string,
407 1, "1")
408 self.assertRaises(TypeError, pytils.numeral.sum_string,
409 1, "1", 23)
410 self.assertRaises(TypeError, pytils.numeral.sum_string,
411 1, pytils.numeral.MALE, (23,24,25))
412 self.assertRaises(ValueError, pytils.numeral.sum_string,
413 1, pytils.numeral.MALE, (23,))
414 self.assertRaises(ValueError, pytils.numeral.sum_string,
415 -1, pytils.numeral.MALE, u"any,bene,raba")
416
417 if __name__ == '__main__':
418 unittest.main()
419