1
2
3
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
18 """
19 Test case for pytils.dt.distance_of_time_in_words
20 """
21
23 """
24 Setting up environment for tests
25 """
26 self.time = 1156862275.7711999
27 self.dtime = {}
28 self.updateTime(self.time)
29
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
51 """
52 Checks with default value for accuracy
53 """
54 t0 = time.time()
55
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
61 self.updateTime(self.time)
62
63 self.assertEquals(res, estimated)
64
79
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
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
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
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
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
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
199 """
200 Test case for pytils.dt.ru_strftime
201 """
202
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
217 """
218 Checks with inflected
219 """
220 res = pytils.dt.ru_strftime(format, self.date, True)
221 self.assertEquals(res, estimates)
222
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
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
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