Skip to content

Commit 5e060d4

Browse files
committed
Added test cases and amended doy_2_date
Padded date string with zeros in doy_2_date
1 parent 1c89de0 commit 5e060d4

2 files changed

Lines changed: 30 additions & 10 deletions

File tree

kessler/util.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -432,8 +432,9 @@ def doy_2_date(value, doy, year, idx):
432432
'''
433433
# Calculate datetime format
434434
date_num = datetime.datetime(int(year), 1, 1) + datetime.timedelta(int(doy) - 1)
435+
435436
# Split datetime object into a date list
436437
date_vec = [date_num.year, date_num.month, date_num.day, date_num.hour, date_num.minute]
437-
value = str(date_vec[0]) +'-' + str(date_vec[1]) + '-' + str(date_vec[2]) + 'T' + value[idx+4:-1]
438-
438+
# Extract final date string. Use zfill() to pad year, month and day fields with zeroes if not filling up sufficient spaces.
439+
value = str(date_vec[0]).zfill(4) +'-' + str(date_vec[1]).zfill(2) + '-' + str(date_vec[2]).zfill(2) + 'T' + value[idx+4:-1]
439440
return value

tests/test_util.py

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -122,17 +122,36 @@ def test_get_ccsds_time_format(self):
122122

123123
self.assertEqual(kessler.util.get_ccsds_time_format(test_case1), test_case1_correct)
124124
self.assertEqual(kessler.util.get_ccsds_time_format(test_case2), test_case2_correct)
125+
125126
def test_doy_2_date(self):
126127
# This test is written by Andrew Ng, 19/03/22. It makes use of example CDMs provided by the NASA CARA
127128
# analysis repo at https://github.com/nasa/CARA_Analysis_Tools/tree/master/two-dimension_Pc/UnitTest/InputFiles.
128129
example1 = "2010-202T12:25:19.000" # From SingleCovTestCase1-4.cdm
129130
example2 = "2018-229T13:56:33.000" # From DensityDecorrelationTestCaseCDM.txt
130-
DOY_1 = example1[5:5+3]
131-
Year_1= example1[0:4]
132-
DOY_2 = example2[5:5+3]
133-
Year_2= example2[0:4]
134-
test_case1_correct = "2010-7-21T12:25:19.00"
135-
test_case2_correct = "2018-8-17T13:56:33.00"
136-
self.assertEqual(kessler.util.doy_2_date(example1, DOY_1, Year_1, 5), test_case1_correct)
137-
self.assertEqual(kessler.util.doy_2_date(example2, DOY_2, Year_2, 5), test_case2_correct)
131+
example3 = "2010-365T00:00:00.000" # Check that works at the final day of a non leap year
132+
example4 = "2010-001T00:00:00.000" # Check that works at the first day of a year
133+
example5 = "2012-366T00:00:00.000" # Check that works at the final day of a leap year
134+
135+
doy_1 = example1[5:5+3]
136+
year_1= example1[0:4]
137+
doy_2 = example2[5:5+3]
138+
year_2= example2[0:4]
139+
doy_3 = example3[5:5+3]
140+
year_3= example3[0:4]
141+
doy_4 = example4[5:5+3]
142+
year_4= example4[0:4]
143+
doy_5 = example5[5:5+3]
144+
year_5= example5[0:4]
145+
146+
test_case1_correct = "2010-07-21T12:25:19.00"
147+
test_case2_correct = "2018-08-17T13:56:33.00"
148+
test_case3_correct = "2010-12-31T00:00:00.00"
149+
test_case4_correct = "2010-01-01T00:00:00.00"
150+
test_case5_correct = "2012-12-31T00:00:00.00"
151+
152+
self.assertEqual(kessler.util.doy_2_date(example1, doy_1, year_1, 5), test_case1_correct)
153+
self.assertEqual(kessler.util.doy_2_date(example2, doy_2, year_2, 5), test_case2_correct)
154+
self.assertEqual(kessler.util.doy_2_date(example3, doy_3, year_3, 5), test_case3_correct)
155+
self.assertEqual(kessler.util.doy_2_date(example4, doy_4, year_4, 5), test_case4_correct)
156+
self.assertEqual(kessler.util.doy_2_date(example5, doy_5, year_5, 5), test_case5_correct)
138157

0 commit comments

Comments
 (0)