@@ -57,6 +57,42 @@ int setup_alpha5(void **state) {
5757 return 0 ;
5858}
5959
60+ int setup_csv_nonexistent (void * * state ) {
61+ tle_array_t * tle_array = load_tles_from_csv ("tests/data/nonexistent.csv" );
62+
63+ if (tle_array == NULL ) {
64+ return -1 ;
65+ }
66+
67+ * state = tle_array ;
68+
69+ return 0 ;
70+ }
71+
72+ int setup_csv_empty (void * * state ) {
73+ tle_array_t * tle_array = load_tles_from_csv ("tests/data/empty.csv" );
74+
75+ if (tle_array == NULL ) {
76+ return -1 ;
77+ }
78+
79+ * state = tle_array ;
80+
81+ return 0 ;
82+ }
83+
84+ int setup_csv (void * * state ) {
85+ tle_array_t * tle_array = load_tles_from_csv ("tests/data/catalog.csv" );
86+
87+ if (tle_array == NULL ) {
88+ return -1 ;
89+ }
90+
91+ * state = tle_array ;
92+
93+ return 0 ;
94+ }
95+
6096int teardown (void * * state ) {
6197 free_tles (* state );
6298
@@ -247,7 +283,45 @@ void TLE_decode_alpha5_designation(void **state) {
247283
248284 assert_string_equal (tle -> orbit .desig , "98067A" );
249285 assert_int_equal (tle -> orbit .satno , 339999 );
286+ }
287+
288+ void TLE_load_csv_nonexistent_file (void * * state ) {
289+ tle_array_t tle_array = * * (tle_array_t * * )state ;
290+
291+ assert_null (tle_array .tles );
292+ assert_int_equal (tle_array .number_of_elements , 0 );
293+ }
294+
295+ void TLE_load_csv_empty_file (void * * state ) {
296+ tle_array_t tle_array = * * (tle_array_t * * )state ;
297+
298+ assert_null (tle_array .tles );
299+ assert_int_equal (tle_array .number_of_elements , 0 );
300+ }
301+
302+ void TLE_load_csv (void * * state ) {
303+ tle_array_t tle_array = * * (tle_array_t * * )state ;
304+
305+ assert_non_null (tle_array .tles );
306+ assert_int_equal (tle_array .number_of_elements , 2 );
307+
308+ // 1st element, 00005 - VANGUARD 1
309+ tle_t * tle = get_tle_by_catalog_id (& tle_array , 5 );
310+
311+ assert_non_null (tle -> name );
312+ assert_string_equal (tle -> name , "VANGUARD 1" );
313+
314+ assert_string_equal (tle -> orbit .desig , "58002B" );
315+ assert_int_equal (tle -> orbit .satno , 5 );
316+
317+ // 2nd element, 00011 - VANGUARD 2
318+ tle = get_tle_by_catalog_id (& tle_array , 11 );
319+
320+ assert_non_null (tle -> name );
321+ assert_string_equal (tle -> name , "VANGUARD 2" );
250322
323+ assert_string_equal (tle -> orbit .desig , "59001A" );
324+ assert_int_equal (tle -> orbit .satno , 11 );
251325}
252326
253327// Entry point to run all tests
@@ -259,7 +333,10 @@ int run_tle_tests() {
259333 cmocka_unit_test_setup_teardown (TLE_load_index_from_file , setup , teardown ),
260334 cmocka_unit_test_setup_teardown (TLE_load_invalid_catalog_id_from_file , setup , teardown ),
261335 cmocka_unit_test_setup_teardown (TLE_load_catalog_id_from_file , setup , teardown ),
262- cmocka_unit_test_setup_teardown (TLE_decode_alpha5_designation , setup_alpha5 , teardown ),
336+ cmocka_unit_test_setup_teardown (TLE_decode_alpha5_designation , setup_alpha5 , teardown ),
337+ cmocka_unit_test_setup_teardown (TLE_load_csv_nonexistent_file , setup_csv_nonexistent , teardown ),
338+ cmocka_unit_test_setup_teardown (TLE_load_csv_empty_file , setup_csv_empty , teardown ),
339+ cmocka_unit_test_setup_teardown (TLE_load_csv , setup_csv , teardown ),
263340 };
264341
265342 return cmocka_run_group_tests_name ("TLE" , tests , NULL , NULL );
0 commit comments