From 9f0111a3e78cd7b6df5b8527846477787ec16c55 Mon Sep 17 00:00:00 2001 From: Joachim Metz Date: Thu, 14 May 2026 12:19:12 +0200 Subject: [PATCH] Worked on tests --- dfdatetime/time_elements.py | 3 -- tests/interface.py | 34 ++++++++++++++++ tests/time_elements.py | 79 +++++++++++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+), 3 deletions(-) diff --git a/dfdatetime/time_elements.py b/dfdatetime/time_elements.py index 0d76d6c..91b8a8f 100644 --- a/dfdatetime/time_elements.py +++ b/dfdatetime/time_elements.py @@ -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.') diff --git a/tests/interface.py b/tests/interface.py index 215cc46..9df76e7 100644 --- a/tests/interface.py +++ b/tests/interface.py @@ -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() @@ -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, @@ -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() @@ -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) @@ -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.""" @@ -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() diff --git a/tests/time_elements.py b/tests/time_elements.py index 9de9270..67e95fd 100644 --- a/tests/time_elements.py +++ b/tests/time_elements.py @@ -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( @@ -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') @@ -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') @@ -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('') @@ -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') @@ -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()