@@ -43,22 +43,45 @@ def test_gps_week_day_to_datetime(self):
4343 with self .assertRaises (TypeError ):
4444 gn_datetime .gps_week_day_to_datetime (2173 ) # Not a string!
4545
46+ def test_datetime_to_gps_week (self ):
47+
48+ # Day of year 244. GPS week and weekday: 2173-3, Wednesday.
49+ self .assertEqual (gn_datetime .datetime_to_gps_week (_datetime (year = 2021 , month = 9 , day = 1 )), "2173" )
50+
51+ # With day of week:
52+ self .assertEqual (
53+ gn_datetime .datetime_to_gps_week (_datetime (year = 2021 , month = 9 , day = 1 ), wkday_suff = True ), "21733"
54+ )
55+
56+ # Legacy version:
57+ self .assertEqual (gn_datetime .dt2gpswk (_datetime (year = 2021 , month = 9 , day = 1 )), "2173" )
58+ self .assertEqual (gn_datetime .dt2gpswk (_datetime (year = 2021 , month = 9 , day = 1 ), wkday_suff = True ), "21733" )
59+ self .assertEqual (gn_datetime .dt2gpswk (_datetime (year = 2021 , month = 9 , day = 1 ), both = True ), ("2173" , "21733" ))
60+
4661
4762class TestGPSDate (unittest .TestCase ):
4863 def test_gpsdate (self ):
49- date : gn_datetime .GPSDate = gn_datetime .GPSDate (np .datetime64 ("2021-08-31" ))
50- self .assertEqual (int (date .yr ), 2021 )
51- self .assertEqual (int (date .dy ), 243 )
52- self .assertEqual (int (date .gpswk ), 2173 )
53- self .assertEqual (int (date .gpswkD [- 1 ]), 2 )
54- self .assertEqual (str (date ), "2021-08-31" )
55-
56- date = date .next
57- self .assertEqual (int (date .yr ), 2021 )
58- self .assertEqual (int (date .dy ), 244 )
59- self .assertEqual (int (date .gpswk ), 2173 )
60- self .assertEqual (int (date .gpswkD [- 1 ]), 3 )
61- self .assertEqual (str (date ), "2021-09-01" )
64+ gps_date : gn_datetime .GPSDate = gn_datetime .GPSDate (np .datetime64 ("2021-08-31" ))
65+ self .assertEqual (int (gps_date .yr ), 2021 ) # Deprecated
66+ self .assertEqual (int (gps_date .year ), 2021 )
67+ self .assertEqual (int (gps_date .dy ), 243 ) # Deprecated
68+ self .assertEqual (int (gps_date .day_of_year ), 243 )
69+ self .assertEqual (int (gps_date .gpswk ), 2173 ) # Deprecated
70+ self .assertEqual (int (gps_date .gps_week ), 2173 )
71+ self .assertEqual (int (gps_date .gpswkD [- 1 ]), 2 ) # Deprecated
72+ self .assertEqual (int (gps_date .gps_week_and_day_of_week [- 1 ]), 2 )
73+ self .assertEqual (str (gps_date ), "2021-08-31" )
74+
75+ gps_date = gps_date .next
76+ self .assertEqual (int (gps_date .yr ), 2021 ) # Deprecated
77+ self .assertEqual (int (gps_date .year ), 2021 )
78+ self .assertEqual (int (gps_date .dy ), 244 ) # Deprecated
79+ self .assertEqual (int (gps_date .day_of_year ), 244 )
80+ self .assertEqual (int (gps_date .gpswk ), 2173 ) # Deprecated
81+ self .assertEqual (int (gps_date .gps_week ), 2173 )
82+ self .assertEqual (int (gps_date .gpswkD [- 1 ]), 3 ) # Deprecated
83+ self .assertEqual (int (gps_date .gps_week_and_day_of_week [- 1 ]), 3 )
84+ self .assertEqual (str (gps_date ), "2021-09-01" )
6285
6386 yds = np .asarray (["00:000:00000" ])
6487 yds_j2000 = gn_datetime .yydoysec2datetime (yds , recenter = False , as_j2000 = True )
@@ -70,25 +93,34 @@ def test_gpsdate(self):
7093
7194 # Test as_datetime property
7295 # Expect 2021-09-01 as a python datetime, not a date or a Numpy datetime64
73- self .assertEqual (date .as_datetime , _datetime (year = 2021 , month = 9 , day = 1 ))
74- self .assertTrue (isinstance (date .as_datetime , _datetime ))
96+ self .assertEqual (gps_date .as_datetime , _datetime (year = 2021 , month = 9 , day = 1 ))
97+ self .assertTrue (isinstance (gps_date .as_datetime , _datetime ))
98+
99+ # Test as_date
100+ self .assertEqual (gps_date .as_date , _date (year = 2021 , month = 9 , day = 1 ))
101+ self .assertTrue (isinstance (gps_date .as_date , _date ))
102+
103+ # Check accessor works
104+ self .assertEqual (gps_date .get_datetime64 , np .datetime64 ("2021-09-01" ))
105+ # Check legacy version
106+ self .assertEqual (gps_date .ts , np .datetime64 ("2021-09-01" ))
75107
76108 # Test construction from other types
77- date = gn_datetime .GPSDate (_datetime (year = 2021 , month = 9 , day = 5 ))
78- self .assertEqual (date . dy , "248" )
79- self .assertEqual (date .as_datetime , _datetime (year = 2021 , month = 9 , day = 5 ))
109+ gps_date = gn_datetime .GPSDate (_datetime (year = 2021 , month = 9 , day = 5 ))
110+ self .assertEqual (gps_date . day_of_year , "248" )
111+ self .assertEqual (gps_date .as_datetime , _datetime (year = 2021 , month = 9 , day = 5 ))
80112
81- date = gn_datetime .GPSDate (_date (year = 2021 , month = 9 , day = 5 ))
82- self .assertEqual (date . dy , "248" )
83- self .assertEqual (date .as_datetime , _datetime (year = 2021 , month = 9 , day = 5 ))
113+ gps_date = gn_datetime .GPSDate (_date (year = 2021 , month = 9 , day = 5 ))
114+ self .assertEqual (gps_date . day_of_year , "248" )
115+ self .assertEqual (gps_date .as_datetime , _datetime (year = 2021 , month = 9 , day = 5 ))
84116
85- date = gn_datetime .GPSDate ("2021-09-05" )
86- self .assertEqual (date . dy , "248" )
87- self .assertEqual (date .as_datetime , _datetime (year = 2021 , month = 9 , day = 5 ))
117+ gps_date = gn_datetime .GPSDate ("2021-09-05" )
118+ self .assertEqual (gps_date . day_of_year , "248" )
119+ self .assertEqual (gps_date .as_datetime , _datetime (year = 2021 , month = 9 , day = 5 ))
88120
89121 # And exceptions on trying to construct from incorrect types or date string formats
90122 with self .assertRaises (TypeError ):
91- gn_datetime .GPSDate (5 ) # An int isn't one of the supported date types
123+ gn_datetime .GPSDate (5 ) # type: ignore # An int isn't one of the supported date types
92124
93125 with self .assertRaises (ValueError ):
94126 gn_datetime .GPSDate ("123-12-123" ) # A string, but not a valid date format
0 commit comments