1
2
3
4 """
5 Unit-tests for pytils.numeral
6 """
7
8 __id__ = __revision__ = "$Id: test_numeral.py 15 2006-10-02 11:56:20Z the.pythy $"
9 __url__ = "$URL: https://pythy.googlecode.com/svn/trunk/pytils/pytils/test/test_numeral.py $"
10
11 import unittest
12 import pytils
13
15 """
16 Test case for pytils.numeral.choose_plural
17 """
18
20 """
21 Setting up environment for tests
22 """
23 self.variants = (u"гвоздь", u"гвоздя", u"гвоздей")
24
31
42
44 """
45 Unit-test for testing choos_plural's exceptions
46 """
47 self.assertRaises(TypeError, pytils.numeral.choose_plural,
48 "25", u"any,bene,raba")
49 self.assertRaises(TypeError, pytils.numeral.choose_plural,
50 25, 30)
51 self.assertRaises(ValueError, pytils.numeral.choose_plural,
52 25, u"any,bene")
53 self.assertRaises(ValueError, pytils.numeral.choose_plural,
54 -25, u"any,bene,raba")
55
60
61 -class GetFloatRemainderTestCase(unittest.TestCase):
62 """
63 Test case for pytils.numeral._get_float_remainder
64 """
65
67 """
68 Unit-test for _get_float_remainder
69 """
70 self.assertEquals(pytils.numeral._get_float_remainder(1.3),
71 '3')
72 self.assertEquals(pytils.numeral._get_float_remainder(2.35, 1),
73 '4')
74 self.assertEquals(pytils.numeral._get_float_remainder(123.1234567891),
75 '123456789')
76 self.assertEquals(pytils.numeral._get_float_remainder(2.353, 2),
77 '35')
78 self.assertEquals(pytils.numeral._get_float_remainder(0.01),
79 '01')
80 self.assertEquals(pytils.numeral._get_float_remainder(5),
81 '0')
82
84 """
85 Unit-test for testing _get_float_remainder's exceptions
86 """
87 self.assertRaises(ValueError, pytils.numeral._get_float_remainder,
88 2.998, 2)
89 self.assertRaises(TypeError, pytils.numeral._get_float_remainder, "1.23")
90 self.assertRaises(ValueError, pytils.numeral._get_float_remainder, -1.23)
91
93 """
94 Test case for pytils.numeral.rubles
95 """
96
113
120
121
123 """
124 Test case for pytils.numeral.in_words
125 """
126
140
147
160
168
170 """
171 Unit-test for in_words_float with gender
172 """
173 self.assertEquals(pytils.numeral.in_words(21, 1),
174 u"двадцать один")
175 self.assertEquals(pytils.numeral.in_words(21, 2),
176 u"двадцать одна")
177 self.assertEquals(pytils.numeral.in_words(21, 3),
178 u"двадцать одно")
179
180 self.assertEquals(pytils.numeral.in_words(21.0, 1),
181 u"двадцать одна целая ноль десятых")
182 self.assertEquals(pytils.numeral.in_words(21.0, 2),
183 u"двадцать одна целая ноль десятых")
184 self.assertEquals(pytils.numeral.in_words(21.0, 3),
185 u"двадцать одна целая ноль десятых")
186
188 """
189 Unit-test for general in_words
190 """
191 self.assertEquals(pytils.numeral.in_words(10), u"десять")
192 self.assertEquals(pytils.numeral.in_words(5), u"пять")
193 self.assertEquals(pytils.numeral.in_words(102), u"сто два")
194 self.assertEquals(pytils.numeral.in_words(3521),
195 u"три тысячи пятьсот двадцать один")
196 self.assertEquals(pytils.numeral.in_words(3500),
197 u"три тысячи пятьсот")
198 self.assertEquals(pytils.numeral.in_words(5231000),
199 u"пять миллионов двести тридцать одна тысяча")
200 self.assertEquals(pytils.numeral.in_words(10.0),
201 u"десять целых ноль десятых")
202 self.assertEquals(pytils.numeral.in_words(2.25),
203 u"две целых двадцать пять сотых")
204 self.assertEquals(pytils.numeral.in_words(0.01),
205 u"ноль целых одна сотая")
206 self.assertEquals(pytils.numeral.in_words(0.10),
207 u"ноль целых одна десятая")
208
210 """
211 Unit-test for testing in_words' exceptions
212 """
213 self.assertRaises(TypeError, pytils.numeral.in_words, "0.2")
214 self.assertRaises(TypeError, pytils.numeral.in_words, 0.2, "1")
215 self.assertRaises(ValueError, pytils.numeral.in_words, 0.2, 5)
216 self.assertRaises(ValueError, pytils.numeral.in_words, -2)
217
218
220 """
221 Test case for pytils.numeral.sum_string
222 """
223
225 """
226 Setting up environment for tests
227 """
228 self.variants_male = (u"гвоздь", u"гвоздя", u"гвоздей")
229 self.variants_female = (u"шляпка", u"шляпки", u"шляпок")
230
231 - def ckMale(self, amount, estimated):
232 """
233 Checks sum_string with male gender
234 """
235 self.assertEquals(pytils.numeral.sum_string(amount,
236 1,
237 self.variants_male),
238 estimated)
239
241 """
242 Checks sum_string with female gender
243 """
244 self.assertEquals(pytils.numeral.sum_string(amount,
245 2,
246 self.variants_female),
247 estimated)
248
250 """
251 Unit-test for sum_string
252 """
253 self.ckMale(10, u"десять гвоздей")
254 self.ckMale(2, u"два гвоздя")
255 self.ckMale(31, u"тридцать один гвоздь")
256 self.ckFemale(10, u"десять шляпок")
257 self.ckFemale(2, u"две шляпки")
258 self.ckFemale(31, u"тридцать одна шляпка")
259
260 self.assertEquals(u"одиннадцать негритят",
261 pytils.numeral.sum_string(
262 11,
263 1,
264 u"негритенок,негритенка,негритят"
265 ))
266
268 """
269 Unit-test for testing sum_string's exceptions
270 """
271 self.assertRaises(TypeError, pytils.numeral.sum_string,
272 "1", 1)
273 self.assertRaises(TypeError, pytils.numeral.sum_string,
274 1, "1")
275 self.assertRaises(TypeError, pytils.numeral.sum_string,
276 1, "1", 23)
277 self.assertRaises(TypeError, pytils.numeral.sum_string,
278 1, 1, (23,24,25))
279 self.assertRaises(ValueError, pytils.numeral.sum_string,
280 1, 1, (23,))
281 self.assertRaises(ValueError, pytils.numeral.sum_string,
282 -1, 1, u"any,bene,raba")
283
284 if __name__ == '__main__':
285 unittest.main()
286