Package pytils :: Package test :: Module test_numeral
[hide private]
[frames] | no frames]

Source Code for Module pytils.test.test_numeral

  1  # -*- coding: utf-8 -*- 
  2  # License: GNU GPL2 
  3  # Author: Pythy <the.pythy@gmail.com> 
  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   
14 -class ChoosePluralTestCase(unittest.TestCase):
15 """ 16 Test case for pytils.numeral.choose_plural 17 """ 18
19 - def setUp(self):
20 """ 21 Setting up environment for tests 22 """ 23 self.variants = (u"гвоздь", u"гвоздя", u"гвоздей")
24
25 - def checkChoosePlural(self, amount, estimated):
26 """ 27 Checks choose_plural 28 """ 29 self.assertEquals(pytils.numeral.choose_plural(amount, self.variants), 30 estimated)
31
32 - def testChoosePlural(self):
33 """ 34 Unit-test for choose_plural 35 """ 36 self.checkChoosePlural(1, u"гвоздь") 37 self.checkChoosePlural(2, u"гвоздя") 38 self.checkChoosePlural(3, u"гвоздя") 39 self.checkChoosePlural(5, u"гвоздей") 40 self.checkChoosePlural(11, u"гвоздей") 41 self.checkChoosePlural(109, u"гвоздей")
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
57 self.assertEquals( 58 pytils.numeral.choose_plural(1,u"гвоздь,гвоздя, гвоздей"), 59 u"гвоздь")
60
61 -class GetFloatRemainderTestCase(unittest.TestCase):
62 """ 63 Test case for pytils.numeral._get_float_remainder 64 """ 65
66 - def testFloatRemainder(self):
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
92 -class RublesTestCase(unittest.TestCase):
93 """ 94 Test case for pytils.numeral.rubles 95 """ 96
97 - def testRubles(self):
98 """ 99 Unit-test for rubles 100 """ 101 self.assertEquals(pytils.numeral.rubles(10.01), 102 u"десять рублей одна копейка") 103 self.assertEquals(pytils.numeral.rubles(10.10), 104 u"десять рублей десять копеек") 105 self.assertEquals(pytils.numeral.rubles(2.353), 106 u"два рубля тридцать пять копеек") 107 self.assertEquals(pytils.numeral.rubles(2.998), 108 u"три рубля") 109 self.assertEquals(pytils.numeral.rubles(3), 110 u"три рубля") 111 self.assertEquals(pytils.numeral.rubles(3, True), 112 u"три рубля ноль копеек")
113
114 - def testRublesExceptions(self):
115 """ 116 Unit-test for testing rubles' exceptions 117 """ 118 self.assertRaises(TypeError, pytils.numeral.rubles, "3") 119 self.assertRaises(ValueError, pytils.numeral.rubles, -15)
120 121
122 -class InWordsTestCase(unittest.TestCase):
123 """ 124 Test case for pytils.numeral.in_words 125 """ 126
127 - def testInt(self):
128 """ 129 Unit-test for in_words_int 130 """ 131 self.assertEquals(pytils.numeral.in_words_int(10), u"десять") 132 self.assertEquals(pytils.numeral.in_words_int(5), u"пять") 133 self.assertEquals(pytils.numeral.in_words_int(102), u"сто два") 134 self.assertEquals(pytils.numeral.in_words_int(3521), 135 u"три тысячи пятьсот двадцать один") 136 self.assertEquals(pytils.numeral.in_words_int(3500), 137 u"три тысячи пятьсот") 138 self.assertEquals(pytils.numeral.in_words_int(5231000), 139 u"пять миллионов двести тридцать одна тысяча")
140
141 - def testIntExceptions(self):
142 """ 143 Unit-test for testing in_words_int's exceptions 144 """ 145 self.assertRaises(TypeError, pytils.numeral.in_words_int, 2.5) 146 self.assertRaises(ValueError, pytils.numeral.in_words_int, -3)
147
148 - def testFloat(self):
149 """ 150 Unit-test for in_words_float 151 """ 152 self.assertEquals(pytils.numeral.in_words_float(10.0), 153 u"десять целых ноль десятых") 154 self.assertEquals(pytils.numeral.in_words_float(2.25), 155 u"две целых двадцать пять сотых") 156 self.assertEquals(pytils.numeral.in_words_float(0.01), 157 u"ноль целых одна сотая") 158 self.assertEquals(pytils.numeral.in_words_float(0.10), 159 u"ноль целых одна десятая")
160
161 - def testFloatExceptions(self):
162 """ 163 Unit-test for testing in_words_float's exceptions 164 """ 165 self.assertRaises(TypeError, pytils.numeral.in_words_float, '2') 166 self.assertRaises(TypeError, pytils.numeral.in_words_float, 2) 167 self.assertRaises(ValueError, pytils.numeral.in_words_float, -2.3)
168
169 - def testWithGender(self):
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
187 - def testCommon(self):
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
209 - def testCommonExceptions(self):
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
219 -class SumStringTestCase(unittest.TestCase):
220 """ 221 Test case for pytils.numeral.sum_string 222 """ 223
224 - def setUp(self):
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
240 - def ckFemale(self, amount, estimated):
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
249 - def testSumString(self):
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
267 - def testSumStringExceptions(self):
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