@@ -6280,10 +6280,10 @@ test_sort_tables_offsets(void)
6280
6280
CU_ASSERT_EQUAL_FATAL (ret , 0 );
6281
6281
CU_ASSERT_TRUE (tsk_table_collection_equals (& tables , & copy , 0 ));
6282
6282
6283
- /* Check that sorting would have had an effect */
6283
+ /* Check that sorting would have had no effect as individuals not in default sort */
6284
6284
ret = tsk_table_collection_sort (& tables , NULL , 0 );
6285
6285
CU_ASSERT_EQUAL_FATAL (ret , 0 );
6286
- CU_ASSERT_FALSE (tsk_table_collection_equals (& tables , & copy , 0 ));
6286
+ CU_ASSERT_TRUE (tsk_table_collection_equals (& tables , & copy , 0 ));
6287
6287
6288
6288
tsk_memset (& bookmark , 0 , sizeof (bookmark ));
6289
6289
bookmark .individuals = tables .individuals .num_rows - 1 ;
@@ -6802,17 +6802,28 @@ test_sort_tables_individuals(void)
6802
6802
const char * individuals_cycle = "1 0.2 2 0\n"
6803
6803
"2 0.5 0 1\n"
6804
6804
"3 0.3 1 2\n" ;
6805
+ const tsk_id_t bad_parents [] = { 200 };
6806
+ tsk_id_t ret_id ;
6805
6807
6806
6808
ret = tsk_table_collection_init (& tables , 0 );
6807
6809
CU_ASSERT_EQUAL_FATAL (ret , 0 );
6808
6810
tables .sequence_length = 1.0 ;
6809
6811
parse_individuals (individuals , & tables .individuals );
6812
+
6813
+ ret = tsk_table_collection_copy (& tables , & copy , 0 );
6814
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
6815
+
6816
+ /* Table sort doesn't touch individuals by default*/
6817
+ ret = tsk_table_collection_sort (& tables , NULL , 0 );
6818
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
6819
+ CU_ASSERT_FATAL (tsk_table_collection_equals (& tables , & copy , 0 ));
6820
+
6810
6821
/* Not calling with TSK_CHECK_TREES so casting is safe */
6811
6822
ret = (int ) tsk_table_collection_check_integrity (
6812
6823
& tables , TSK_CHECK_INDIVIDUAL_ORDERING );
6813
6824
CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_UNSORTED_INDIVIDUALS );
6814
6825
6815
- ret = tsk_table_collection_sort (& tables , NULL , 0 );
6826
+ ret = tsk_table_collection_individual_topological_sort (& tables , 0 );
6816
6827
CU_ASSERT_EQUAL_FATAL (ret , 0 );
6817
6828
ret = (int ) tsk_table_collection_check_integrity (
6818
6829
& tables , TSK_CHECK_INDIVIDUAL_ORDERING );
@@ -6821,16 +6832,21 @@ test_sort_tables_individuals(void)
6821
6832
/* Check that the sort is stable */
6822
6833
ret = tsk_table_collection_copy (& tables , & copy , 0 );
6823
6834
CU_ASSERT_EQUAL_FATAL (ret , 0 );
6835
+ ret = tsk_table_collection_individual_topological_sort (& tables , 0 );
6836
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
6824
6837
CU_ASSERT_FATAL (tsk_table_collection_equals (& tables , & copy , 0 ));
6825
6838
6826
- ret = tsk_table_collection_sort (& tables , NULL , 0 );
6827
- CU_ASSERT_EQUAL_FATAL (ret , 0 );
6828
- CU_ASSERT (tsk_table_collection_equals (& tables , & copy , 0 ));
6839
+ /* Errors on bad table */
6840
+ ret_id = tsk_individual_table_add_row (
6841
+ & tables .individuals , 0 , NULL , 0 , bad_parents , 1 , NULL , 0 );
6842
+ CU_ASSERT_EQUAL_FATAL (ret_id , 6 );
6843
+ ret = tsk_table_collection_individual_topological_sort (& tables , 0 );
6844
+ CU_ASSERT_EQUAL (ret , TSK_ERR_INDIVIDUAL_OUT_OF_BOUNDS );
6829
6845
6830
6846
/* Errors on cycle */
6831
6847
tsk_individual_table_clear (& tables .individuals );
6832
6848
parse_individuals (individuals_cycle , & tables .individuals );
6833
- ret = tsk_table_collection_sort (& tables , NULL , 0 );
6849
+ ret = tsk_table_collection_individual_topological_sort (& tables , 0 );
6834
6850
CU_ASSERT_EQUAL (ret , TSK_ERR_INDIVIDUAL_PARENT_CYCLE );
6835
6851
6836
6852
tsk_table_collection_free (& tables );
0 commit comments