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