@@ -3820,6 +3820,67 @@ test_population_table(void)
3820
3820
free (metadata_offset );
3821
3821
}
3822
3822
3823
+ static void
3824
+ test_population_table_update_row (void )
3825
+ {
3826
+ int ret ;
3827
+ tsk_id_t ret_id ;
3828
+ tsk_population_table_t table ;
3829
+ tsk_population_t row ;
3830
+ const char * metadata = "ABC" ;
3831
+
3832
+ ret = tsk_population_table_init (& table , 0 );
3833
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3834
+
3835
+ ret_id = tsk_population_table_add_row (& table , metadata , 1 );
3836
+ CU_ASSERT_FATAL (ret_id >= 0 );
3837
+ ret_id = tsk_population_table_add_row (& table , metadata , 2 );
3838
+ CU_ASSERT_FATAL (ret_id >= 0 );
3839
+ ret_id = tsk_population_table_add_row (& table , metadata , 3 );
3840
+ CU_ASSERT_FATAL (ret_id >= 0 );
3841
+
3842
+ ret = tsk_population_table_update_row (& table , 0 , & metadata [1 ], 1 );
3843
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3844
+ ret = tsk_population_table_get_row (& table , 0 , & row );
3845
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3846
+ CU_ASSERT_EQUAL_FATAL (row .metadata_length , 1 );
3847
+ CU_ASSERT_EQUAL_FATAL (row .metadata [0 ], 'B' );
3848
+
3849
+ ret = tsk_population_table_update_row (& table , 0 , row .metadata , row .metadata_length );
3850
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3851
+ ret = tsk_population_table_get_row (& table , 0 , & row );
3852
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3853
+ CU_ASSERT_EQUAL_FATAL (row .metadata_length , 1 );
3854
+ CU_ASSERT_EQUAL_FATAL (row .metadata [0 ], 'B' );
3855
+
3856
+ ret = tsk_population_table_update_row (& table , 0 , metadata , 3 );
3857
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3858
+ ret = tsk_population_table_get_row (& table , 0 , & row );
3859
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3860
+ CU_ASSERT_EQUAL_FATAL (row .metadata_length , 3 );
3861
+ CU_ASSERT_EQUAL_FATAL (row .metadata [0 ], 'A' );
3862
+ CU_ASSERT_EQUAL_FATAL (row .metadata [1 ], 'B' );
3863
+ CU_ASSERT_EQUAL_FATAL (row .metadata [2 ], 'C' );
3864
+
3865
+ ret = tsk_population_table_update_row (& table , 1 , NULL , 0 );
3866
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3867
+ ret = tsk_population_table_get_row (& table , 1 , & row );
3868
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3869
+ CU_ASSERT_EQUAL_FATAL (row .metadata_length , 0 );
3870
+
3871
+ ret = tsk_population_table_get_row (& table , 2 , & row );
3872
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
3873
+ CU_ASSERT_EQUAL_FATAL (row .metadata_length , 3 );
3874
+ CU_ASSERT_EQUAL_FATAL (row .metadata [0 ], 'A' );
3875
+ CU_ASSERT_EQUAL_FATAL (row .metadata [1 ], 'B' );
3876
+ CU_ASSERT_EQUAL_FATAL (row .metadata [2 ], 'C' );
3877
+
3878
+ ret = tsk_population_table_update_row (& table , 3 , NULL , 0 );
3879
+ CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_POPULATION_OUT_OF_BOUNDS );
3880
+
3881
+ tsk_population_table_free (& table );
3882
+ }
3883
+
3823
3884
static void
3824
3885
test_provenance_table (void )
3825
3886
{
@@ -7588,6 +7649,7 @@ main(int argc, char **argv)
7588
7649
{ "test_individual_table" , test_individual_table },
7589
7650
{ "test_individual_table_update_row" , test_individual_table_update_row },
7590
7651
{ "test_population_table" , test_population_table },
7652
+ { "test_population_table_update_row" , test_population_table_update_row },
7591
7653
{ "test_provenance_table" , test_provenance_table },
7592
7654
{ "test_table_size_increments" , test_table_size_increments },
7593
7655
{ "test_table_collection_equals_options" , test_table_collection_equals_options },
0 commit comments