Package pytils :: Package test :: Module test_utils
[hide private]

Source Code for Module pytils.test.test_utils

  1  # -*- coding: utf-8 -*- 
  2  # pytils - simple processing for russian strings 
  3  # Copyright (C) 2006-2007  Yury Yurevich 
  4  # 
  5  # http://www.pyobject.ru/projects/pytils/ 
  6  # 
  7  # This program is free software; you can redistribute it and/or 
  8  # modify it under the terms of the GNU General Public License 
  9  # as published by the Free Software Foundation, version 2 
 10  # of the License. 
 11  # 
 12  # This program is distributed in the hope that it will be useful, 
 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 15  # GNU General Public License for more details. 
 16  """ 
 17  Unit-tests for pytils.utils 
 18  """ 
 19   
 20  __id__ = __revision__ = "$Id: test_utils.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_utils.py $" 
 22   
 23  import unittest 
 24  import pytils  
 25   
26 -class UnicodeTestCase(unittest.TestCase):
27 """ 28 Test case for unicode-utils 29 """ 30
31 - def ckProvideUnicode(self, stext, encoding, utext):
32 """ 33 Check pytils.provide_unicode 34 """ 35 self.assertEquals( 36 pytils.utils.provide_unicode(stext, encoding), 37 utext 38 )
39
40 - def ckProvideStr(self, utext, encoding, stext):
41 """ 42 Check pytils.provide_str 43 """ 44 self.assertEquals( 45 pytils.utils.provide_str(utext, encoding), 46 stext 47 )
48
49 - def testProvideUnicode(self):
50 """ 51 Unit-tests for pytils.utils.provide_unicode 52 """ 53 self.ckProvideUnicode("тест №1", "utf-8", u"тест №1")
54
55 - def testProvideStr(self):
56 """ 57 Unit-tests for pytils.utils.provide_str 58 """ 59 self.ckProvideStr(u"тест №1", "utf-8", "тест №1") 60 self.ckProvideStr(u"тест №1", "koi8-r", "unknown")
61
62 - def testProvideStrNonDefault(self):
63 """ 64 Unit-tests for pytils.utils.provide_str with 'default' parameter 65 """ 66 self.assertEquals( 67 pytils.utils.provide_str(u"тест №1", "koi8-r", default="hz"), 68 "hz" 69 )
70
71 -class ChecksTestCase(unittest.TestCase):
72 """ 73 Test case for check_* utils 74 """ 75
76 - def testGetValueByName(self):
77 """ 78 Unit-test for pytils.utils.get_value_by_name 79 """ 80 var1 = '25' 81 var2 = 25 82 self.assertEquals('25', pytils.utils.get_value_by_name('var1', depth=1)) 83 self.assertEquals(25, pytils.utils.get_value_by_name('var2', depth=1)) 84 self.assertRaises(RuntimeError, pytils.utils.get_value_by_name, 'var3')
85 86
87 - def testCheckType(self):
88 """ 89 Unit-test for pytils.utils.check_type 90 """ 91 var = '25' 92 # нельзя assertRaises, потому что глубина стека вызовов тогда не 2, 93 # а гораздо больше 94 try: 95 pytils.utils.check_type('var', int) 96 except TypeError, err: 97 self.assertEquals("var must be <type 'int'>, not <type 'str'>", 98 str(err)) 99 try: 100 pytils.utils.check_type('var', (int, float)) 101 except TypeError, err: 102 self.assertEquals("var must be (<type 'int'>, <type 'float'>), " + \ 103 "not <type 'str'>", 104 str(err)) 105 self.assertEquals(None, pytils.utils.check_type('var', str)) 106 self.assertEquals(None, pytils.utils.check_type('var', 107 (str, basestring)))
108
109 - def testCheckLength(self):
110 """ 111 Unit-test for pytils.utils.check_length 112 """ 113 var = 'test' 114 self.assertEquals(None, pytils.utils.check_length('var', 4)) 115 try: 116 pytils.utils.check_length('var', 5) 117 except ValueError, err: 118 self.assertEquals("var's length must be 5, but it 4", 119 str(err))
120
121 - def testCheckPositive(self):
122 """ 123 Unit-test for pytils.utils.check_positive 124 """ 125 var1 = 1 126 var2 = 1.25 127 var3 = -2 128 var4 = -2.12 129 130 self.assertEquals(None, pytils.utils.check_positive('var1')) 131 self.assertEquals(None, pytils.utils.check_positive('var2')) 132 133 try: 134 pytils.utils.check_positive('var3') 135 except ValueError, err: 136 self.assertEquals("var3 must be positive or zero, not -2", 137 str(err)) 138 try: 139 pytils.utils.check_positive('var4') 140 except ValueError, err: 141 self.assertEquals("var4 must be positive or zero, not -2.12", 142 str(err))
143
144 - def testCheckPositiveStrict(self):
145 """ 146 Unit-test for pytils.utils.check_positive 147 """ 148 var1 = 1 149 var2 = 0 150 var3 = -2 151 152 self.assertEquals(None, pytils.utils.check_positive('var1', strict=True)) 153 154 try: 155 pytils.utils.check_positive('var2', strict=True) 156 except ValueError, err: 157 self.assertEquals("var2 must be positive, not 0", 158 str(err)) 159 try: 160 pytils.utils.check_positive('var3') 161 except ValueError, err: 162 self.assertEquals("var3 must be positive or zero, not -2", 163 str(err))
164
165 -class SplitValuesTestCase(unittest.TestCase):
166
167 - def testClassicSplit(self):
168 """ 169 Unit-test for pytils.utils.split_values, classic split 170 """ 171 self.assertEquals((u"Раз", u"Два", u"Три"), pytils.utils.split_values(u"Раз,Два,Три")) 172 self.assertEquals((u"Раз", u"Два", u"Три"), pytils.utils.split_values(u"Раз, Два,Три")) 173 self.assertEquals((u"Раз", u"Два", u"Три"), pytils.utils.split_values(u" Раз, Два, Три ")) 174 self.assertEquals((u"Раз", u"Два", u"Три"), pytils.utils.split_values(u" Раз, \nДва,\n Три "))
175
176 - def testEscapedSplit(self):
177 """ 178 Unit-test for pytils.utils.split_values, split with escaping 179 """ 180 self.assertEquals((u"Раз,Два", u"Три,Четыре", u"Пять,Шесть"), pytils.utils.split_values(u"Раз\,Два,Три\,Четыре,Пять\,Шесть")) 181 self.assertEquals((u"Раз, Два", u"Три", u"Четыре"), pytils.utils.split_values(u"Раз\, Два, Три, Четыре"))
182 183 if __name__ == '__main__': 184 unittest.main() 185