@@ -345,6 +345,16 @@ verify_window_errors(tsk_treeseq_t *ts, tsk_flags_t mode)
345
345
ts , 1 , W , 1 , general_stat_error , NULL , 2 , windows , options , sigma );
346
346
CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_BAD_WINDOWS );
347
347
348
+ windows [0 ] = -1 ;
349
+ ret = tsk_treeseq_general_stat (
350
+ ts , 1 , W , 1 , general_stat_error , NULL , 2 , windows , options , sigma );
351
+ CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_BAD_WINDOWS );
352
+
353
+ windows [1 ] = -1 ;
354
+ ret = tsk_treeseq_general_stat (
355
+ ts , 1 , W , 1 , general_stat_error , NULL , 1 , windows , options , sigma );
356
+ CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_BAD_WINDOWS );
357
+
348
358
windows [0 ] = 10 ;
349
359
ret = tsk_treeseq_general_stat (
350
360
ts , 1 , W , 1 , general_stat_error , NULL , 2 , windows , options , sigma );
@@ -438,11 +448,10 @@ verify_node_general_stat_errors(tsk_treeseq_t *ts)
438
448
static void
439
449
verify_one_way_weighted_func_errors (tsk_treeseq_t * ts , one_way_weighted_method * method )
440
450
{
441
- // we don't have any specific errors for this function
442
- // but we might add some in the future
443
451
int ret ;
444
452
tsk_size_t num_samples = tsk_treeseq_get_num_samples (ts );
445
453
double * weights = tsk_malloc (num_samples * sizeof (double ));
454
+ double bad_windows [] = { 0 , -1 };
446
455
double result ;
447
456
tsk_size_t j ;
448
457
@@ -451,7 +460,10 @@ verify_one_way_weighted_func_errors(tsk_treeseq_t *ts, one_way_weighted_method *
451
460
}
452
461
453
462
ret = method (ts , 0 , weights , 0 , NULL , 0 , & result );
454
- CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_BAD_STATE_DIMS );
463
+ CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_INSUFFICIENT_WEIGHTS );
464
+
465
+ ret = method (ts , 1 , weights , 1 , bad_windows , 0 , & result );
466
+ CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_BAD_WINDOWS );
455
467
456
468
free (weights );
457
469
}
@@ -460,12 +472,11 @@ static void
460
472
verify_one_way_weighted_covariate_func_errors (
461
473
tsk_treeseq_t * ts , one_way_covariates_method * method )
462
474
{
463
- // we don't have any specific errors for this function
464
- // but we might add some in the future
465
475
int ret ;
466
476
tsk_size_t num_samples = tsk_treeseq_get_num_samples (ts );
467
477
double * weights = tsk_malloc (num_samples * sizeof (double ));
468
478
double * covariates = NULL ;
479
+ double bad_windows [] = { 0 , -1 };
469
480
double result ;
470
481
tsk_size_t j ;
471
482
@@ -474,7 +485,10 @@ verify_one_way_weighted_covariate_func_errors(
474
485
}
475
486
476
487
ret = method (ts , 0 , weights , 0 , covariates , 0 , NULL , 0 , & result );
477
- CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_BAD_STATE_DIMS );
488
+ CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_INSUFFICIENT_WEIGHTS );
489
+
490
+ ret = method (ts , 1 , weights , 0 , covariates , 1 , bad_windows , 0 , & result );
491
+ CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_BAD_WINDOWS );
478
492
479
493
free (weights );
480
494
}
@@ -558,6 +572,28 @@ verify_two_way_stat_func_errors(tsk_treeseq_t *ts, general_sample_stat_method *m
558
572
CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_BAD_SAMPLE_SET_INDEX );
559
573
}
560
574
575
+ static void
576
+ verify_two_way_weighted_stat_func_errors (
577
+ tsk_treeseq_t * ts , two_way_weighted_method * method )
578
+ {
579
+ int ret ;
580
+ tsk_id_t indexes [] = { 0 , 0 , 0 , 1 };
581
+ double bad_windows [] = { -1 , -1 };
582
+ double weights [10 ];
583
+ double result [10 ];
584
+
585
+ memset (weights , 0 , sizeof (weights ));
586
+
587
+ ret = method (ts , 2 , weights , 2 , indexes , 0 , NULL , result , 0 );
588
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
589
+
590
+ ret = method (ts , 0 , weights , 2 , indexes , 0 , NULL , result , 0 );
591
+ CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_INSUFFICIENT_WEIGHTS );
592
+
593
+ ret = method (ts , 2 , weights , 2 , indexes , 1 , bad_windows , result , 0 );
594
+ CU_ASSERT_EQUAL_FATAL (ret , TSK_ERR_BAD_WINDOWS );
595
+ }
596
+
561
597
static void
562
598
verify_three_way_stat_func_errors (tsk_treeseq_t * ts , general_sample_stat_method * method )
563
599
{
@@ -1504,32 +1540,54 @@ test_paper_ex_genetic_relatedness(void)
1504
1540
tsk_treeseq_free (& ts );
1505
1541
}
1506
1542
1543
+ static void
1544
+ test_paper_ex_genetic_relatedness_errors (void )
1545
+ {
1546
+ tsk_treeseq_t ts ;
1547
+
1548
+ tsk_treeseq_from_text (& ts , 10 , paper_ex_nodes , paper_ex_edges , NULL , paper_ex_sites ,
1549
+ paper_ex_mutations , paper_ex_individuals , NULL , 0 );
1550
+ verify_two_way_stat_func_errors (& ts , tsk_treeseq_genetic_relatedness );
1551
+ tsk_treeseq_free (& ts );
1552
+ }
1553
+
1507
1554
static void
1508
1555
test_paper_ex_genetic_relatedness_weighted (void )
1509
1556
{
1510
1557
tsk_treeseq_t ts ;
1511
1558
double weights [] = { 1.2 , 0.1 , 0.0 , 0.0 , 3.4 , 5.0 , 1.0 , -1.0 };
1512
1559
tsk_id_t indexes [] = { 0 , 0 , 0 , 1 };
1513
- double result [2 ];
1560
+ double result [100 ];
1561
+ tsk_size_t num_weights ;
1514
1562
int ret ;
1515
1563
1516
1564
tsk_treeseq_from_text (& ts , 10 , paper_ex_nodes , paper_ex_edges , NULL , paper_ex_sites ,
1517
1565
paper_ex_mutations , paper_ex_individuals , NULL , 0 );
1518
1566
1519
- ret = tsk_treeseq_genetic_relatedness_weighted (
1520
- & ts , 2 , weights , 2 , indexes , 0 , NULL , result , TSK_STAT_SITE );
1521
- CU_ASSERT_EQUAL_FATAL (ret , 0 );
1567
+ for (num_weights = 1 ; num_weights < 3 ; num_weights ++ ) {
1568
+ ret = tsk_treeseq_genetic_relatedness_weighted (
1569
+ & ts , num_weights , weights , 2 , indexes , 0 , NULL , result , TSK_STAT_SITE );
1570
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
1571
+ ret = tsk_treeseq_genetic_relatedness_weighted (
1572
+ & ts , num_weights , weights , 2 , indexes , 0 , NULL , result , TSK_STAT_BRANCH );
1573
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
1574
+ ret = tsk_treeseq_genetic_relatedness_weighted (
1575
+ & ts , num_weights , weights , 2 , indexes , 0 , NULL , result , TSK_STAT_NODE );
1576
+ CU_ASSERT_EQUAL_FATAL (ret , 0 );
1577
+ }
1578
+
1522
1579
tsk_treeseq_free (& ts );
1523
1580
}
1524
1581
1525
1582
static void
1526
- test_paper_ex_genetic_relatedness_errors (void )
1583
+ test_paper_ex_genetic_relatedness_weighted_errors (void )
1527
1584
{
1528
1585
tsk_treeseq_t ts ;
1529
1586
1530
1587
tsk_treeseq_from_text (& ts , 10 , paper_ex_nodes , paper_ex_edges , NULL , paper_ex_sites ,
1531
1588
paper_ex_mutations , paper_ex_individuals , NULL , 0 );
1532
- verify_two_way_stat_func_errors (& ts , tsk_treeseq_genetic_relatedness );
1589
+ verify_two_way_weighted_stat_func_errors (
1590
+ & ts , tsk_treeseq_genetic_relatedness_weighted );
1533
1591
tsk_treeseq_free (& ts );
1534
1592
}
1535
1593
@@ -2128,6 +2186,8 @@ main(int argc, char **argv)
2128
2186
{ "test_paper_ex_genetic_relatedness" , test_paper_ex_genetic_relatedness },
2129
2187
{ "test_paper_ex_genetic_relatedness_weighted" ,
2130
2188
test_paper_ex_genetic_relatedness_weighted },
2189
+ { "test_paper_ex_genetic_relatedness_weighted_errors" ,
2190
+ test_paper_ex_genetic_relatedness_weighted_errors },
2131
2191
{ "test_paper_ex_Y2_errors" , test_paper_ex_Y2_errors },
2132
2192
{ "test_paper_ex_Y2" , test_paper_ex_Y2 },
2133
2193
{ "test_paper_ex_f2_errors" , test_paper_ex_f2_errors },
0 commit comments