@@ -105,6 +105,116 @@ START_TEST(test_gps_adjust_week_cycle)
105105}
106106END_TEST
107107
108+ START_TEST (test_is_leap_year )
109+ {
110+ struct is_leap_year_testcase {
111+ u16 year ;
112+ bool ret ;
113+ } testcases [] = {
114+ {.year = 1900 , .ret = false},
115+ {.year = 1901 , .ret = false},
116+ {.year = 1904 , .ret = true},
117+ {.year = 1980 , .ret = true},
118+ {.year = 1981 , .ret = false},
119+ {.year = 1982 , .ret = false},
120+ {.year = 1983 , .ret = false},
121+ {.year = 1984 , .ret = true},
122+ {.year = 1985 , .ret = false},
123+ {.year = 1986 , .ret = false},
124+ {.year = 1987 , .ret = false},
125+ {.year = 1988 , .ret = true},
126+ {.year = 1989 , .ret = false},
127+ {.year = 1990 , .ret = false},
128+ {.year = 1991 , .ret = false},
129+ {.year = 1992 , .ret = true},
130+ {.year = 1993 , .ret = false},
131+ {.year = 1994 , .ret = false},
132+ {.year = 1995 , .ret = false},
133+ {.year = 1996 , .ret = true},
134+ {.year = 1997 , .ret = false},
135+ {.year = 1998 , .ret = false},
136+ {.year = 1999 , .ret = false},
137+ {.year = 2000 , .ret = true},
138+ {.year = 2001 , .ret = false},
139+ {.year = 2002 , .ret = false},
140+ {.year = 2003 , .ret = false},
141+ {.year = 2004 , .ret = true},
142+ {.year = 2005 , .ret = false},
143+ {.year = 2006 , .ret = false},
144+ {.year = 2007 , .ret = false},
145+ {.year = 2008 , .ret = true},
146+ {.year = 2009 , .ret = false},
147+ {.year = 2010 , .ret = false},
148+ {.year = 2011 , .ret = false},
149+ {.year = 2012 , .ret = true},
150+ {.year = 2013 , .ret = false},
151+ {.year = 2014 , .ret = false},
152+ {.year = 2015 , .ret = false},
153+ {.year = 2016 , .ret = true},
154+ {.year = 2017 , .ret = false},
155+ {.year = 2018 , .ret = false},
156+ {.year = 2019 , .ret = false},
157+ {.year = 2020 , .ret = true},
158+ };
159+
160+ for (size_t i = 0 ;
161+ i < sizeof (testcases ) / sizeof (struct is_leap_year_testcase );
162+ i ++ ) {
163+ fail_unless (is_leap_year (testcases [i ].year ) == testcases [i ].ret ,
164+ "is_leap_year test case %d failed, year = %d" ,
165+ testcases [i ].year );
166+ }
167+ }
168+ END_TEST
169+
170+ START_TEST (test_glo_time2gps_time )
171+ {
172+ struct glo_time2gps_time_testcase {
173+ u16 nt ;
174+ u8 n4 ;
175+ s8 h ;
176+ s8 m ;
177+ s8 s ;
178+ gps_time_t ret ;
179+ } testcases [] = {
180+ /* GLO time 29th Dec 2000 01:00:00 */
181+ {.nt = 364 , .n4 = 2 , .h = 1 , .m = 0 , .s = 0 ,
182+ .ret = {.wn = 1094 , .tow = 424817 }},
183+ /* GLO time 30th Dec 2000 01:00:00 */
184+ {.nt = 365 , .n4 = 2 , .h = 1 , .m = 0 , .s = 0 ,
185+ .ret = {.wn = 1094 , .tow = 511217 }},
186+ /* GLO time 31st Dec 2000 02:00:00 */
187+ {.nt = 366 , .n4 = 2 , .h = 2 , .m = 0 , .s = 0 ,
188+ .ret = {.wn = 1094 , .tow = 601217 }},
189+ /* GLO time 1st Jan 2001 02:00:00 */
190+ {.nt = 367 , .n4 = 2 , .h = 2 , .m = 0 , .s = 0 ,
191+ .ret = {.wn = 1095 , .tow = 82817 }},
192+ /* GLO time 2nd Jan 2001 02:00:00 */
193+ {.nt = 368 , .n4 = 2 , .h = 2 , .m = 0 , .s = 0 ,
194+ .ret = {.wn = 1095 , .tow = 169217 }},
195+ /* GLO time 31st Dec 2009 12:12:12 */
196+ {.nt = 731 , .n4 = 4 , .h = 12 , .m = 12 , .s = 12 ,
197+ .ret = {.wn = 1564 , .tow = 378749 }},
198+ /* GLO time 31st Dec 2010 12:12:12 */
199+ {.nt = 1096 , .n4 = 4 , .h = 12 , .m = 12 , .s = 12 ,
200+ .ret = {.wn = 1616 , .tow = 465149 }},
201+ /* GLO time 31st Dec 2011 12:12:12 */
202+ {.nt = 1461 , .n4 = 4 , .h = 12 , .m = 12 , .s = 12 ,
203+ .ret = {.wn = 1668 , .tow = 551549 }},
204+ };
205+ for (size_t i = 0 ;
206+ i < sizeof (testcases ) / sizeof (struct glo_time2gps_time_testcase );
207+ i ++ ) {
208+ gps_time_t ret = glo_time2gps_time (testcases [i ].nt , testcases [i ].n4 ,
209+ testcases [i ].h , testcases [i ].m ,
210+ testcases [i ].s );
211+ fail_unless (ret .wn == testcases [i ].ret .wn &&
212+ ret .tow == testcases [i ].ret .tow ,
213+ "glo_time2gps_time test case %d failed, %d, %f" , i , ret .wn , ret .tow );
214+ }
215+ }
216+ END_TEST
217+
108218Suite * time_test_suite (void )
109219{
110220 Suite * s = suite_create ("Time handling" );
@@ -114,6 +224,8 @@ Suite* time_test_suite(void)
114224 tcase_add_test (tc_core , test_normalize_gps_time );
115225 tcase_add_test (tc_core , test_gps_time_match_weeks );
116226 tcase_add_test (tc_core , test_gps_adjust_week_cycle );
227+ tcase_add_test (tc_core , test_is_leap_year );
228+ tcase_add_test (tc_core , test_glo_time2gps_time );
117229 suite_add_tcase (s , tc_core );
118230
119231 return s ;
0 commit comments