@@ -5441,60 +5441,147 @@ test_column_overflow(void)
5441
5441
ret = tsk_table_collection_init (& tables , 0 );
5442
5442
CU_ASSERT_EQUAL_FATAL (ret , 0 );
5443
5443
5444
+ // location
5444
5445
/* We can't trigger a column overflow with one element because the parameter
5445
5446
* value is 32 bit */
5446
5447
ret_id = tsk_individual_table_add_row (
5447
5448
& tables .individuals , 0 , & zero , 1 , NULL , 0 , NULL , 0 );
5448
5449
CU_ASSERT_EQUAL_FATAL (ret_id , 0 );
5450
+ // Check normal overflow from additional length
5449
5451
ret_id = tsk_individual_table_add_row (
5450
5452
& tables .individuals , 0 , NULL , too_big , NULL , 0 , NULL , 0 );
5451
5453
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5454
+ // Check overflow from minimum increment
5455
+ ret = tsk_individual_table_set_max_location_length_increment (
5456
+ & tables .individuals , too_big );
5457
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5452
5458
ret_id = tsk_individual_table_add_row (
5453
- & tables .individuals , 0 , NULL , 0 , NULL , 0 , zeros , 1 );
5459
+ & tables .individuals , 0 , NULL , 1 , NULL , 0 , NULL , 0 );
5460
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5461
+ // parents
5462
+ ret_id = tsk_individual_table_add_row (
5463
+ & tables .individuals , 0 , NULL , 0 , id_zeros , 1 , NULL , 0 );
5454
5464
CU_ASSERT_EQUAL_FATAL (ret_id , 1 );
5455
5465
ret_id = tsk_individual_table_add_row (
5456
- & tables .individuals , 0 , NULL , 0 , NULL , 0 , NULL , too_big );
5466
+ & tables .individuals , 0 , NULL , 0 , NULL , too_big , NULL , 0 );
5457
5467
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5468
+ ret = tsk_individual_table_set_max_parents_length_increment (
5469
+ & tables .individuals , too_big );
5470
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5458
5471
ret_id = tsk_individual_table_add_row (
5459
- & tables .individuals , 0 , NULL , 0 , id_zeros , 1 , NULL , 0 );
5472
+ & tables .individuals , 0 , NULL , 0 , NULL , 1 , NULL , 0 );
5473
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5474
+ // metadata
5475
+ ret_id = tsk_individual_table_add_row (
5476
+ & tables .individuals , 0 , NULL , 0 , NULL , 0 , zeros , 1 );
5460
5477
CU_ASSERT_EQUAL_FATAL (ret_id , 2 );
5461
5478
ret_id = tsk_individual_table_add_row (
5462
- & tables .individuals , 0 , NULL , 0 , NULL , too_big , NULL , 0 );
5479
+ & tables .individuals , 0 , NULL , 0 , NULL , 0 , NULL , too_big );
5480
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5481
+ ret = tsk_individual_table_set_max_metadata_length_increment (
5482
+ & tables .individuals , too_big );
5483
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5484
+ ret_id = tsk_individual_table_add_row (
5485
+ & tables .individuals , 0 , NULL , 0 , NULL , 0 , NULL , 1 );
5463
5486
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5464
5487
5465
5488
ret_id = tsk_node_table_add_row (& tables .nodes , 0 , 0 , 0 , 0 , zeros , 1 );
5466
5489
CU_ASSERT_EQUAL_FATAL (ret_id , 0 );
5467
5490
ret_id = tsk_node_table_add_row (& tables .nodes , 0 , 0 , 0 , 0 , NULL , too_big );
5468
5491
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5492
+ ret = tsk_node_table_set_max_metadata_length_increment (& tables .nodes , too_big );
5493
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5494
+ ret_id = tsk_node_table_add_row (& tables .nodes , 0 , 0 , 0 , 0 , NULL , 1 );
5495
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5496
+
5497
+ ret_id = tsk_edge_table_add_row (& tables .edges , 0 , 0 , 0 , 0 , zeros , 1 );
5498
+ CU_ASSERT_EQUAL_FATAL (ret_id , 0 );
5499
+ ret_id = tsk_edge_table_add_row (& tables .edges , 0 , 0 , 0 , 0 , NULL , too_big );
5500
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5501
+ ret = tsk_edge_table_set_max_metadata_length_increment (& tables .edges , too_big );
5502
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5503
+ ret_id = tsk_edge_table_add_row (& tables .edges , 0 , 0 , 0 , 0 , NULL , 1 );
5504
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5469
5505
5470
5506
ret_id = tsk_site_table_add_row (& tables .sites , 0 , zeros , 1 , zeros , 1 );
5471
5507
CU_ASSERT_EQUAL_FATAL (ret_id , 0 );
5508
+ // ancestral state
5472
5509
ret_id = tsk_site_table_add_row (& tables .sites , 0 , NULL , too_big , NULL , 0 );
5473
5510
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5511
+ ret = tsk_site_table_set_max_ancestral_state_length_increment (
5512
+ & tables .sites , too_big );
5513
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5514
+ ret_id = tsk_site_table_add_row (& tables .sites , 0 , NULL , 1 , NULL , 0 );
5515
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5516
+ // metadata
5474
5517
ret_id = tsk_site_table_add_row (& tables .sites , 0 , NULL , 0 , NULL , too_big );
5475
5518
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5519
+ ret = tsk_site_table_set_max_metadata_length_increment (& tables .sites , too_big );
5520
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5521
+ ret_id = tsk_site_table_add_row (& tables .sites , 0 , NULL , 0 , NULL , 1 );
5522
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5476
5523
5477
5524
ret_id
5478
5525
= tsk_mutation_table_add_row (& tables .mutations , 0 , 0 , 0 , 0 , zeros , 1 , zeros , 1 );
5479
5526
CU_ASSERT_EQUAL_FATAL (ret_id , 0 );
5527
+ // derived state
5480
5528
ret_id = tsk_mutation_table_add_row (
5481
- & tables .mutations , 0 , 0 , 0 , 0 , NULL , 0 , NULL , too_big );
5529
+ & tables .mutations , 0 , 0 , 0 , 0 , NULL , too_big , NULL , 0 );
5530
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5531
+ ret = tsk_mutation_table_set_max_derived_state_length_increment (
5532
+ & tables .mutations , too_big );
5533
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5534
+ ret_id = tsk_mutation_table_add_row (& tables .mutations , 0 , 0 , 0 , 0 , NULL , 1 , NULL , 0 );
5482
5535
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5536
+ // metadata
5483
5537
ret_id = tsk_mutation_table_add_row (
5484
- & tables .mutations , 0 , 0 , 0 , 0 , NULL , too_big , NULL , 0 );
5538
+ & tables .mutations , 0 , 0 , 0 , 0 , NULL , 0 , NULL , too_big );
5539
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5540
+ ret = tsk_mutation_table_set_max_metadata_length_increment (
5541
+ & tables .mutations , too_big );
5542
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5543
+ ret_id = tsk_mutation_table_add_row (& tables .mutations , 0 , 0 , 0 , 0 , NULL , 0 , NULL , 1 );
5485
5544
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5486
5545
5487
5546
ret_id = tsk_provenance_table_add_row (& tables .provenances , zeros , 1 , zeros , 1 );
5488
5547
CU_ASSERT_EQUAL_FATAL (ret_id , 0 )
5548
+ // timestamp
5489
5549
ret_id = tsk_provenance_table_add_row (& tables .provenances , NULL , too_big , NULL , 0 );
5490
5550
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5551
+ ret = tsk_provenance_table_set_max_timestamp_length_increment (
5552
+ & tables .provenances , too_big );
5553
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5554
+ ret_id = tsk_provenance_table_add_row (& tables .provenances , NULL , 1 , NULL , 0 );
5555
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5556
+ // record
5491
5557
ret_id = tsk_provenance_table_add_row (& tables .provenances , NULL , 0 , NULL , too_big );
5492
5558
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5559
+ ret = tsk_provenance_table_set_max_record_length_increment (
5560
+ & tables .provenances , too_big );
5561
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5562
+ ret_id = tsk_provenance_table_add_row (& tables .provenances , NULL , 0 , NULL , 1 );
5563
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5493
5564
5494
5565
ret_id = tsk_population_table_add_row (& tables .populations , zeros , 1 );
5495
5566
CU_ASSERT_EQUAL_FATAL (ret_id , 0 );
5496
5567
ret_id = tsk_population_table_add_row (& tables .populations , NULL , too_big );
5497
5568
CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5569
+ ret = tsk_population_table_set_max_metadata_length_increment (
5570
+ & tables .populations , too_big );
5571
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5572
+ ret_id = tsk_population_table_add_row (& tables .populations , NULL , 1 );
5573
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5574
+
5575
+ ret_id = tsk_migration_table_add_row (& tables .migrations , 0 , 0 , 0 , 0 , 0 , 0 , zeros , 1 );
5576
+ CU_ASSERT_EQUAL_FATAL (ret_id , 0 );
5577
+ ret_id = tsk_migration_table_add_row (
5578
+ & tables .migrations , 0 , 0 , 0 , 0 , 0 , 0 , NULL , too_big );
5579
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5580
+ ret = tsk_migration_table_set_max_metadata_length_increment (
5581
+ & tables .migrations , too_big );
5582
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
5583
+ ret_id = tsk_migration_table_add_row (& tables .migrations , 0 , 0 , 0 , 0 , 0 , 0 , NULL , 1 );
5584
+ CU_ASSERT_EQUAL_FATAL (ret_id , TSK_ERR_COLUMN_OVERFLOW );
5498
5585
5499
5586
tsk_table_collection_free (& tables );
5500
5587
}
0 commit comments