Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions dfdatetime/time_elements.py
Original file line number Diff line number Diff line change
Expand Up @@ -582,9 +582,6 @@ def _CopyTimeFromStringRFC(self, time_string, time_zone_string):
if seconds not in range(0, 60):
raise ValueError(f'Seconds value: {seconds:d} out of bounds.')

if time_string_length < 5:
raise ValueError('Time string too short.')

time_zone_string_length = len(time_zone_string)
if time_zone_string_length > 5:
raise ValueError('Time zone string too long.')
Expand Down
34 changes: 34 additions & 0 deletions tests/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,22 @@ class DateTimeValuesTest(unittest.TestCase):

# pylint: disable=protected-access

def testIsDelta(self):
"""Tests the is_delta property."""
date_time_values = interface.DateTimeValues(is_delta=True)
self.assertTrue(date_time_values.is_delta)

def testPrecision(self):
"""Tests the precision property."""
date_time_values = interface.DateTimeValues(
precision=definitions.PRECISION_1_MILLISECOND)
self.assertEqual(date_time_values.precision, '1ms')

def testTimeZoneOffset(self):
"""Tests the time_zone_offset property."""
date_time_values = interface.DateTimeValues(time_zone_offset=60)
self.assertEqual(date_time_values.time_zone_offset, 60)

def testComparison(self):
"""Tests the comparison functions."""
date_time_values1 = EmptyDateTimeValues()
Expand Down Expand Up @@ -211,6 +227,13 @@ def testCopyDateTimeFromString(self):
'2010-08-12 21:06:31.546875+01:00')
self.assertEqual(date_dict, expected_date_dict)

expected_date_dict = {
'year': 2010, 'month': 8, 'day_of_month': 12,
'hours': 21, 'minutes': 6, 'seconds': 31, 'nanoseconds': 546875333}
date_dict = date_time_values._CopyDateTimeFromString(
'2010-08-12 21:06:31.546875333')
self.assertEqual(date_dict, expected_date_dict)

expected_date_dict = {
'year': 2010, 'month': 8, 'day_of_month': 12,
'hours': 21, 'minutes': 6, 'seconds': 31, 'nanoseconds': 546875333,
Expand Down Expand Up @@ -448,6 +471,9 @@ def testGetDateValuesWithEpoch(self):
self.assertEqual(month, 1)
self.assertEqual(day_of_month, 1)

with self.assertRaises(ValueError):
date_time_values._GetDateValuesWithEpoch(-1000000000, date_time_epoch)

def testGetDayOfYear(self):
"""Tests the _GetDayOfYear function."""
date_time_values = interface.DateTimeValues()
Expand Down Expand Up @@ -514,6 +540,8 @@ def testGetNumberOfDaysInCentury(self):

self.assertEqual(date_time_values._GetNumberOfDaysInCentury(1700), 36524)
self.assertEqual(date_time_values._GetNumberOfDaysInCentury(2000), 36525)
self.assertEqual(date_time_values._GetNumberOfDaysInCentury(10000), 36525)
self.assertEqual(date_time_values._GetNumberOfDaysInCentury(10100), 36524)

with self.assertRaises(ValueError):
date_time_values._GetNumberOfDaysInCentury(-1)
Expand All @@ -525,6 +553,8 @@ def testGetNumberOfDaysInYear(self):
self.assertEqual(date_time_values._GetNumberOfDaysInYear(1999), 365)
self.assertEqual(date_time_values._GetNumberOfDaysInYear(2000), 366)
self.assertEqual(date_time_values._GetNumberOfDaysInYear(1996), 366)
self.assertEqual(date_time_values._GetNumberOfDaysInYear(10000), 366)
self.assertEqual(date_time_values._GetNumberOfDaysInYear(10100), 365)

def testGetNumberOfSecondsFromElements(self):
"""Tests the _GetNumberOfSecondsFromElements function."""
Expand Down Expand Up @@ -586,6 +616,10 @@ def testGetNumberOfSecondsFromElements(self):
date_time_values._GetNumberOfSecondsFromElements(
2013, 2, 29, 1, 4, 25)

with self.assertRaises(ValueError):
date_time_values._GetNumberOfSecondsFromElements(
10000, 8, 12, 21, 6, 31)

def testGetTimeValues(self):
"""Tests the _GetTimeValues function."""
date_time_values = interface.DateTimeValues()
Expand Down
79 changes: 79 additions & 0 deletions tests/time_elements.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,36 @@ def testInitialize(self):
time_elements.TimeElements(
time_elements_tuple=(2010, 13, 12, 20, 6, 31))

def testDayOfMonth(self):
"""Tests the day_of_month property."""
time_elements_object = time_elements.TimeElements()
self.assertIsNone(time_elements_object.day_of_month)

def testHours(self):
"""Tests the hours property."""
time_elements_object = time_elements.TimeElements()
self.assertIsNone(time_elements_object.hours)

def testMinutes(self):
"""Tests the minutes property."""
time_elements_object = time_elements.TimeElements()
self.assertIsNone(time_elements_object.minutes)

def testMonth(self):
"""Tests the month property."""
time_elements_object = time_elements.TimeElements()
self.assertIsNone(time_elements_object.month)

def testSeconds(self):
"""Tests the seconds property."""
time_elements_object = time_elements.TimeElements()
self.assertIsNone(time_elements_object.seconds)

def testYear(self):
"""Tests the year property."""
time_elements_object = time_elements.TimeElements()
self.assertIsNone(time_elements_object.year)

def testGetNormalizedTimestamp(self):
"""Tests the _GetNormalizedTimestamp function."""
time_elements_object = time_elements.TimeElements(
Expand Down Expand Up @@ -186,6 +216,13 @@ def testCopyDateTimeFromStringRFC822(self):
'Sun, 20 Jun 82 11:57:09 -0500')
self.assertEqual(date_dict, expected_date_dict)

with self.assertRaises(ValueError):
time_elements_object._CopyDateTimeFromStringRFC822(None)

with self.assertRaises(ValueError):
time_elements_object._CopyDateTimeFromStringRFC822(
'XXX, 20 Jun 82 11:57:09 GMT BOGUS')

with self.assertRaises(ValueError):
time_elements_object._CopyDateTimeFromStringRFC822(
'XXX, 20 Jun 82 11:57:09 GMT')
Expand Down Expand Up @@ -250,6 +287,13 @@ def testCopyDateTimeFromStringRFC1123(self):
'Sun, 20 Jun 1982 11:57:09 -0500')
self.assertEqual(date_dict, expected_date_dict)

with self.assertRaises(ValueError):
time_elements_object._CopyDateTimeFromStringRFC1123(None)

with self.assertRaises(ValueError):
time_elements_object._CopyDateTimeFromStringRFC1123(
'XXX, 20 Jun 1982 11:57:09 GMT BOGUS')

with self.assertRaises(ValueError):
time_elements_object._CopyDateTimeFromStringRFC1123(
'XXX, 20 Jun 1982 11:57:09 GMT')
Expand Down Expand Up @@ -345,6 +389,16 @@ def testCopyTimeFromStringISO8601(self):
'20:23:56.327124-05:00')
self.assertEqual(time_tuple, expected_time_tuple)

expected_time_tuple = (20, 23, 56, 327124519, None)
time_tuple = time_elements_object._CopyTimeFromStringISO8601(
'20:23:56.327124519')
self.assertEqual(time_tuple, expected_time_tuple)

expected_time_tuple = (20, 23, 56, 327124519, -300)
time_tuple = time_elements_object._CopyTimeFromStringISO8601(
'20:23:56.327124519-05:00')
self.assertEqual(time_tuple, expected_time_tuple)

with self.assertRaises(ValueError):
time_elements_object._CopyTimeFromStringISO8601('')

Expand Down Expand Up @@ -465,6 +519,9 @@ def testCopyTimeFromStringRFC(self):
with self.assertRaises(ValueError):
time_elements_object._CopyTimeFromStringRFC('11:57', 'ZZZ')

with self.assertRaises(ValueError):
time_elements_object._CopyTimeFromStringRFC('11:57', 'A0160')

with self.assertRaises(ValueError):
time_elements_object._CopyTimeFromStringRFC('11:57', '+A500')

Expand Down Expand Up @@ -642,6 +699,28 @@ def testCopyFromStringISO8601(self):
with self.assertRaises(ValueError):
time_elements_object.CopyFromStringISO8601('2016-230')

def testCopyFromStringRFC822(self):
"""Tests the CopyFromStringRFC822 function."""
time_elements_object = time_elements.TimeElements()

expected_time_elements_tuple = (1982, 6, 20, 11, 57, 9)
time_elements_object.CopyFromStringRFC822('Sun, 20 Jun 82 11:57:09 GMT')
self.assertEqual(
time_elements_object._time_elements_tuple, expected_time_elements_tuple)
self.assertEqual(time_elements_object._number_of_seconds, 393422229)
self.assertEqual(time_elements_object._time_zone_offset, 0)

def testCopyFromStringRFC1123(self):
"""Tests the CopyFromStringRFC1123 function."""
time_elements_object = time_elements.TimeElements()

expected_time_elements_tuple = (1982, 6, 20, 11, 57, 9)
time_elements_object.CopyFromStringRFC1123('Sun, 20 Jun 1982 11:57:09 GMT')
self.assertEqual(
time_elements_object._time_elements_tuple, expected_time_elements_tuple)
self.assertEqual(time_elements_object._number_of_seconds, 393422229)
self.assertEqual(time_elements_object._time_zone_offset, 0)

def testCopyFromStringTuple(self):
"""Tests the CopyFromStringTuple function."""
time_elements_object = time_elements.TimeElements()
Expand Down
Loading