Skip to content

Commit 45f7ec7

Browse files
committed
Interval tests refactored to reduce verbosity
1 parent 2b5e131 commit 45f7ec7

File tree

1 file changed

+25
-41
lines changed

1 file changed

+25
-41
lines changed

tests/test_dates.py

Lines changed: 25 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -205,19 +205,23 @@ def test_parse_datetime_no_timezone(self):
205205
self.assertEqual(
206206
self.DATETIME("2007-01-01 13:30:29.123456", self.curs).tzinfo, None)
207207

208+
def _check_interval(self, s, want_secs=None):
209+
self.curs.execute(
210+
"select %s::interval, extract('epoch' from %s::interval)",
211+
(s, s))
212+
td, secs = self.curs.fetchone()
213+
if want_secs is not None:
214+
secs = want_secs
215+
216+
self.assertEqual(total_seconds(td), secs,
217+
"'%s'::interval -> '%s' = %s sec instead of %s"
218+
% (s, td, total_seconds(td), secs))
219+
208220
def test_parse_interval(self):
209-
value = self.INTERVAL('42 days 12:34:56.123456', self.curs)
210-
self.assertNotEqual(value, None)
211-
self.assertEqual(value.days, 42)
212-
self.assertEqual(value.seconds, 45296)
213-
self.assertEqual(value.microseconds, 123456)
221+
self._check_interval('42 days 12:34:56.123456')
214222

215223
def test_parse_negative_interval(self):
216-
value = self.INTERVAL('-42 days -12:34:56.123456', self.curs)
217-
self.assertNotEqual(value, None)
218-
self.assertEqual(value.days, -43)
219-
self.assertEqual(value.seconds, 41103)
220-
self.assertEqual(value.microseconds, 876544)
224+
self._check_interval('-42 days -12:34:56.123456')
221225

222226
def test_parse_infinity(self):
223227
value = self.DATETIME('-infinity', self.curs)
@@ -340,39 +344,19 @@ def test_time_24(self):
340344

341345
@skip_before_postgres(8, 1)
342346
def test_large_interval(self):
343-
t = self.execute("select '999999:00:00'::interval")
344-
self.assertEqual(total_seconds(t), 999999 * 60 * 60)
345-
346-
t = self.execute("select '-999999:00:00'::interval")
347-
self.assertEqual(total_seconds(t), -999999 * 60 * 60)
348-
349-
t = self.execute("select '999999:00:00.1'::interval")
350-
self.assertEqual(total_seconds(t), 999999 * 60 * 60 + 0.1)
351-
352-
t = self.execute("select '999999:00:00.9'::interval")
353-
self.assertEqual(total_seconds(t), 999999 * 60 * 60 + 0.9)
354-
355-
t = self.execute("select '-999999:00:00.1'::interval")
356-
self.assertEqual(total_seconds(t), -999999 * 60 * 60 - 0.1)
357-
358-
t = self.execute("select '-999999:00:00.9'::interval")
359-
self.assertEqual(total_seconds(t), -999999 * 60 * 60 - 0.9)
347+
self._check_interval('999999:00:00')
348+
self._check_interval('-999999:00:00')
349+
self._check_interval('999999:00:00.1')
350+
self._check_interval('999999:00:00.9')
351+
self._check_interval('-999999:00:00.1')
352+
self._check_interval('-999999:00:00.9')
360353

361354
def test_micros_rounding(self):
362-
t = self.execute("select '0.1'::interval")
363-
self.assertEqual(total_seconds(t), 0.1)
364-
365-
t = self.execute("select '0.01'::interval")
366-
self.assertEqual(total_seconds(t), 0.01)
367-
368-
t = self.execute("select '0.000001'::interval")
369-
self.assertEqual(total_seconds(t), 1e-6)
370-
371-
t = self.execute("select '0.0000004'::interval")
372-
self.assertEqual(total_seconds(t), 0)
373-
374-
t = self.execute("select '0.0000006'::interval")
375-
self.assertEqual(total_seconds(t), 1e-6)
355+
self._check_interval('0.1')
356+
self._check_interval('0.01')
357+
self._check_interval('0.000001')
358+
self._check_interval('0.0000004', 0)
359+
self._check_interval('0.0000006', 1e-6)
376360

377361
def test_interval_overflow(self):
378362
cur = self.conn.cursor()

0 commit comments

Comments
 (0)