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

Source Code for Module pytils.test.test_dt

  1  # -*- coding: utf-8 -*- 
  2  # License: GNU GPL2 
  3  # Author: Pythy <the.pythy@gmail.com> 
  4  """ 
  5  Unit-tests for pytils.dt 
  6  """ 
  7   
  8  __id__ = __revision__ = "$Id: test_dt.py 18 2006-10-17 15:58:01Z the.pythy $" 
  9  __url__ = "$URL: https://pythy.googlecode.com/svn/trunk/pytils/pytils/test/test_dt.py $" 
 10   
 11  import datetime 
 12  import time 
 13  import unittest 
 14   
 15  import pytils  
 16   
17 -class DistanceOfTimeInWordsTestCase(unittest.TestCase):
18 """ 19 Test case for pytils.dt.distance_of_time_in_words 20 """ 21
22 - def setUp(self):
23 """ 24 Setting up environment for tests 25 """ 26 self.time = 1156862275.7711999 27 self.dtime = {} 28 self.updateTime(self.time)
29
30 - def updateTime(self, _time):
31 """Update all time-related values for current time """ 32 self.dtime['10sec_ago'] = _time - 10 33 self.dtime['1min_ago'] = _time - 60 34 self.dtime['10min_ago'] = _time - 600 35 self.dtime['1hr_ago'] = _time - 3720 36 self.dtime['10hr_ago'] = _time - 36600 37 self.dtime['1day_ago'] = _time - 87600 38 self.dtime['1day1hr_ago'] = _time - 90600 39 self.dtime['2day_ago'] = _time - 87600*2 40 41 self.dtime['in_10sec'] = _time + 10 42 self.dtime['in_1min'] = _time + 61 43 self.dtime['in_10min'] = _time + 601 44 self.dtime['in_1hr'] = _time + 3721 45 self.dtime['in_10hr'] = _time + 36601 46 self.dtime['in_1day'] = _time + 87601 47 self.dtime['in_1day1hr'] = _time + 90601 48 self.dtime['in_2day'] = _time + 87600*2 + 1
49
50 - def ckDefaultAccuracy(self, typ, estimated):
51 """ 52 Checks with default value for accuracy 53 """ 54 t0 = time.time() 55 # --- change state !!! attention 56 self.updateTime(t0) 57 # --- 58 t1 = self.dtime[typ] 59 res = pytils.dt.distance_of_time_in_words(from_time=t1, to_time=t0) 60 # --- revert state to original value 61 self.updateTime(self.time) 62 # --- 63 self.assertEquals(res, estimated)
64
65 - def ckDefaultToTime(self, typ, accuracy, estimated):
66 """ 67 Checks with default value of time 68 """ 69 t0 = time.time() 70 # --- change state !!! attention 71 self.updateTime(t0) 72 # --- 73 t1 = self.dtime[typ] 74 res = pytils.dt.distance_of_time_in_words(t1, accuracy) 75 # --- revert state to original value 76 self.updateTime(self.time) 77 # --- 78 self.assertEquals(res, estimated)
79
80 - def testDOTIWDefaultAccuracy(self):
81 """ 82 Unit-test for distance_of_time_in_words with default accuracy 83 """ 84 self.ckDefaultAccuracy("10sec_ago", u"менее минуты назад") 85 self.ckDefaultAccuracy("1min_ago", u"1 минуту назад") 86 self.ckDefaultAccuracy("10min_ago", u"10 минут назад") 87 self.ckDefaultAccuracy("1hr_ago", u"1 час назад") 88 self.ckDefaultAccuracy("10hr_ago", u"10 часов назад") 89 self.ckDefaultAccuracy("1day_ago", u"1 день назад") 90 self.ckDefaultAccuracy("1day1hr_ago", u"1 день назад") 91 self.ckDefaultAccuracy("2day_ago", u"2 дня назад") 92 93 self.ckDefaultAccuracy("in_10sec", u"менее чем через минуту") 94 self.ckDefaultAccuracy("in_1min", u"через 1 минуту") 95 self.ckDefaultAccuracy("in_10min", u"через 10 минут") 96 self.ckDefaultAccuracy("in_1hr", u"через 1 час") 97 self.ckDefaultAccuracy("in_10hr", u"через 10 часов") 98 self.ckDefaultAccuracy("in_1day", u"через 1 день") 99 self.ckDefaultAccuracy("in_1day1hr", u"через 1 день") 100 self.ckDefaultAccuracy("in_2day", u"через 2 дня")
101
103 """ 104 Unit-tests for distance_of_time_in_words with default to_time and accuracy=1 105 """ 106 # accuracy = 1 107 self.ckDefaultToTime("10sec_ago", 1, u"менее минуты назад") 108 self.ckDefaultToTime("1min_ago", 1, u"минуту назад") 109 self.ckDefaultToTime("10min_ago", 1, u"10 минут назад") 110 self.ckDefaultToTime("1hr_ago", 1, u"час назад") 111 self.ckDefaultToTime("10hr_ago", 1, u"10 часов назад") 112 self.ckDefaultToTime("1day_ago", 1, u"вчера") 113 self.ckDefaultToTime("1day1hr_ago", 1, u"вчера") 114 self.ckDefaultToTime("2day_ago", 1, u"позавчера") 115 116 self.ckDefaultToTime("in_10sec", 1, u"менее чем через минуту") 117 self.ckDefaultToTime("in_1min", 1, u"через минуту") 118 self.ckDefaultToTime("in_10min", 1, u"через 10 минут") 119 self.ckDefaultToTime("in_1hr", 1, u"через час") 120 self.ckDefaultToTime("in_10hr", 1, u"через 10 часов") 121 self.ckDefaultToTime("in_1day", 1, u"завтра") 122 self.ckDefaultToTime("in_1day1hr", 1, u"завтра") 123 self.ckDefaultToTime("in_2day", 1, u"послезавтра")
124
126 """ 127 Unit-tests for distance_of_time_in_words with default to_time and accuracy=2 128 """ 129 # accuracy = 2 130 self.ckDefaultToTime("10sec_ago", 2, u"менее минуты назад") 131 self.ckDefaultToTime("1min_ago", 2, u"минуту назад") 132 self.ckDefaultToTime("10min_ago", 2, u"10 минут назад") 133 self.ckDefaultToTime("1hr_ago", 2, u"1 час 2 минуты назад") 134 self.ckDefaultToTime("10hr_ago", 2, u"10 часов 10 минут назад") 135 self.ckDefaultToTime("1day_ago", 2, u"вчера") 136 self.ckDefaultToTime("1day1hr_ago", 2, u"1 день 1 час назад") 137 self.ckDefaultToTime("2day_ago", 2, u"позавчера") 138 139 self.ckDefaultToTime("in_10sec", 2, u"менее чем через минуту") 140 self.ckDefaultToTime("in_1min", 2, u"через минуту") 141 self.ckDefaultToTime("in_10min", 2, u"через 10 минут") 142 self.ckDefaultToTime("in_1hr", 2, u"через 1 час 2 минуты") 143 self.ckDefaultToTime("in_10hr", 2, u"через 10 часов 10 минут") 144 self.ckDefaultToTime("in_1day", 2, u"завтра") 145 self.ckDefaultToTime("in_1day1hr", 2, u"через 1 день 1 час") 146 self.ckDefaultToTime("in_2day", 2, u"послезавтра")
147
149 """ 150 Unit-tests for distance_of_time_in_words with default to_time and accuracy=3 151 """ 152 # accuracy = 3 153 self.ckDefaultToTime("10sec_ago", 3, u"менее минуты назад") 154 self.ckDefaultToTime("1min_ago", 3, u"минуту назад") 155 self.ckDefaultToTime("10min_ago", 3, u"10 минут назад") 156 self.ckDefaultToTime("1hr_ago", 3, u"1 час 2 минуты назад") 157 self.ckDefaultToTime("10hr_ago", 3, u"10 часов 10 минут назад") 158 self.ckDefaultToTime("1day_ago", 3, 159 u"1 день 0 часов 20 минут назад") 160 self.ckDefaultToTime("1day1hr_ago", 3, 161 u"1 день 1 час 10 минут назад") 162 self.ckDefaultToTime("2day_ago", 3, 163 u"2 дня 0 часов 40 минут назад") 164 165 self.ckDefaultToTime("in_10sec", 3, u"менее чем через минуту") 166 self.ckDefaultToTime("in_1min", 3, u"через минуту") 167 self.ckDefaultToTime("in_10min", 3, u"через 10 минут") 168 self.ckDefaultToTime("in_1hr", 3, u"через 1 час 2 минуты") 169 self.ckDefaultToTime("in_10hr", 3, u"через 10 часов 10 минут") 170 self.ckDefaultToTime("in_1day", 3, 171 u"через 1 день 0 часов 20 минут") 172 self.ckDefaultToTime("in_1day1hr", 3, 173 u"через 1 день 1 час 10 минут") 174 self.ckDefaultToTime("in_2day", 3, 175 u"через 2 дня 0 часов 40 минут")
176
177 - def testDOTWDatetimeType(self):
178 """ 179 Unit-tests for testing datetime.datetime as input values 180 """ 181 first_time = datetime.datetime.now() 182 second_time = first_time + datetime.timedelta(0, 1000) 183 self.assertEquals(pytils.dt.distance_of_time_in_words( 184 from_time=first_time, 185 accuracy=1, 186 to_time=second_time), 187 u"16 минут назад")
188
189 - def testDOTIWExceptions(self):
190 """ 191 Unit-tests for testings distance_of_time_in_words' exceptions 192 """ 193 self.assertRaises(TypeError, pytils.dt.distance_of_time_in_words, "test") 194 self.assertRaises(TypeError, pytils.dt.distance_of_time_in_words, time.time(), "test") 195 self.assertRaises(TypeError, pytils.dt.distance_of_time_in_words, time.time(), 2, "test") 196 self.assertRaises(ValueError, pytils.dt.distance_of_time_in_words, time.time(), 0)
197
198 -class RuStrftimeTestCase(unittest.TestCase):
199 """ 200 Test case for pytils.dt.ru_strftime 201 """ 202
203 - def setUp(self):
204 """ 205 Setting up environment for tests 206 """ 207 self.date = datetime.date(2006, 8, 25)
208
209 - def ck(self, format, estimates):
210 """ 211 Checks w/o inflected 212 """ 213 res = pytils.dt.ru_strftime(format, self.date) 214 self.assertEquals(res, estimates)
215
216 - def ckInflected(self, format, estimates):
217 """ 218 Checks with inflected 219 """ 220 res = pytils.dt.ru_strftime(format, self.date, True) 221 self.assertEquals(res, estimates)
222
223 - def ckInflectedDay(self, format, estimates):
224 """ 225 Checks with inflected day 226 """ 227 res = pytils.dt.ru_strftime(format, self.date, inflected_day=True) 228 self.assertEquals(res, estimates)
229
230 - def testRuStrftime(self):
231 """ 232 Unit-tests for pytils.dt.ru_strftime 233 """ 234 self.ck(u"тест %a", u"тест пт") 235 self.ck(u"тест %A", u"тест пятница") 236 self.ck(u"тест %b", u"тест авг") 237 self.ck(u"тест %B", u"тест август") 238 self.ckInflected(u"тест %B", u"тест августа") 239 self.ckInflected(u"тест выполнен %d %B %Y года", 240 u"тест выполнен 25 августа 2006 года") 241 self.ckInflectedDay(u"тест выполнен в %A", u"тест выполнен в пятницу")
242
243 - def testRuStrftimeExceptions(self):
244 """ 245 Unit-tests for testing pytils.dt.ru_strftime's exceptions 246 """ 247 self.assertRaises(TypeError, pytils.dt.ru_strftime, time.time()) 248 self.assertRaises(TypeError, pytils.dt.ru_strftime, u"%Y.%m.%d%", time.time())
249 250 251 if __name__ == '__main__': 252 unittest.main() 253