1 #include "arm_vec_math.h" 2 3 #include "MISCF32.h" 4 #include <stdio.h> 5 #include "Error.h" 6 #include "Test.h" 7 8 #define SNR_THRESHOLD 120 9 /* 10 11 Reference patterns are generated with 12 a double precision computation. 13 14 */ 15 #define REL_ERROR (1.0e-6) 16 #define ABS_ERROR (1.0e-5) 17 18 /* 19 20 For tests of the error value of the Levinson Durbin algorithm 21 22 */ 23 #define REL_LD_ERROR (1.0e-6) 24 #define ABS_LD_ERROR (1.0e-6) 25 test_levinson_durbin_f32()26 void MISCF32::test_levinson_durbin_f32() 27 { 28 const float32_t *inpA=inputA.ptr(); 29 const float32_t *errs=inputB.ptr(); 30 float32_t *outp=output.ptr(); 31 float32_t err; 32 33 float32_t refError=errs[this->errOffset]; 34 35 arm_levinson_durbin_f32(inpA,outp,&err,this->nba); 36 37 ASSERT_EMPTY_TAIL(output); 38 ASSERT_SNR(ref,output,(float32_t)SNR_THRESHOLD); 39 ASSERT_CLOSE_ERROR(ref,output,ABS_LD_ERROR,REL_LD_ERROR); 40 41 42 ASSERT_CLOSE_ERROR(refError,err,ABS_LD_ERROR,REL_LD_ERROR); 43 44 } 45 test_correlate_f32()46 void MISCF32::test_correlate_f32() 47 { 48 const float32_t *inpA=inputA.ptr(); 49 const float32_t *inpB=inputB.ptr(); 50 float32_t *outp=output.ptr(); 51 52 arm_correlate_f32(inpA, inputA.nbSamples(), 53 inpB, inputB.nbSamples(), 54 outp); 55 56 ASSERT_EMPTY_TAIL(output); 57 ASSERT_SNR(ref,output,(float32_t)SNR_THRESHOLD); 58 ASSERT_CLOSE_ERROR(ref,output,ABS_ERROR,REL_ERROR); 59 60 } 61 test_conv_f32()62 void MISCF32::test_conv_f32() 63 { 64 const float32_t *inpA=inputA.ptr(); 65 const float32_t *inpB=inputB.ptr(); 66 float32_t *outp=output.ptr(); 67 68 arm_conv_f32(inpA, inputA.nbSamples(), 69 inpB, inputB.nbSamples(), 70 outp); 71 72 ASSERT_SNR(ref,output,(float32_t)SNR_THRESHOLD); 73 ASSERT_CLOSE_ERROR(ref,output,ABS_ERROR,REL_ERROR); 74 75 } 76 77 // This value must be coherent with the Python script 78 // generating the test patterns 79 #define NBPOINTS 4 80 test_conv_partial_f32()81 void MISCF32::test_conv_partial_f32() 82 { 83 const float32_t *inpA=inputA.ptr(); 84 const float32_t *inpB=inputB.ptr(); 85 float32_t *outp=output.ptr(); 86 float32_t *tmpp=tmp.ptr(); 87 88 89 arm_status status=arm_conv_partial_f32(inpA, inputA.nbSamples(), 90 inpB, inputB.nbSamples(), 91 outp, 92 this->first, 93 NBPOINTS); 94 95 memcpy((void*)tmpp,(void*)&outp[this->first],NBPOINTS*sizeof(float32_t)); 96 ASSERT_TRUE(status==ARM_MATH_SUCCESS); 97 ASSERT_SNR(ref,tmp,(float32_t)SNR_THRESHOLD); 98 ASSERT_CLOSE_ERROR(ref,tmp,ABS_ERROR,REL_ERROR); 99 100 101 } 102 103 104 setUp(Testing::testID_t id,std::vector<Testing::param_t> & paramsArgs,Client::PatternMgr * mgr)105 void MISCF32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr) 106 { 107 (void)paramsArgs; 108 switch(id) 109 { 110 111 case MISCF32::TEST_CORRELATE_F32_1: 112 { 113 this->nba = 4; 114 this->nbb = 1; 115 ref.reload(MISCF32::REF1_F32_ID,mgr); 116 } 117 break; 118 119 case MISCF32::TEST_CORRELATE_F32_2: 120 { 121 this->nba = 4; 122 this->nbb = 2; 123 ref.reload(MISCF32::REF2_F32_ID,mgr); 124 } 125 break; 126 127 case MISCF32::TEST_CORRELATE_F32_3: 128 { 129 this->nba = 4; 130 this->nbb = 3; 131 ref.reload(MISCF32::REF3_F32_ID,mgr); 132 } 133 break; 134 135 case MISCF32::TEST_CORRELATE_F32_4: 136 { 137 this->nba = 4; 138 this->nbb = 8; 139 ref.reload(MISCF32::REF4_F32_ID,mgr); 140 } 141 break; 142 143 case MISCF32::TEST_CORRELATE_F32_5: 144 { 145 this->nba = 4; 146 this->nbb = 11; 147 ref.reload(MISCF32::REF5_F32_ID,mgr); 148 } 149 break; 150 151 case MISCF32::TEST_CORRELATE_F32_6: 152 { 153 this->nba = 5; 154 this->nbb = 1; 155 ref.reload(MISCF32::REF6_F32_ID,mgr); 156 } 157 break; 158 159 case MISCF32::TEST_CORRELATE_F32_7: 160 { 161 this->nba = 5; 162 this->nbb = 2; 163 ref.reload(MISCF32::REF7_F32_ID,mgr); 164 } 165 break; 166 167 case MISCF32::TEST_CORRELATE_F32_8: 168 { 169 this->nba = 5; 170 this->nbb = 3; 171 ref.reload(MISCF32::REF8_F32_ID,mgr); 172 } 173 break; 174 175 case MISCF32::TEST_CORRELATE_F32_9: 176 { 177 this->nba = 5; 178 this->nbb = 8; 179 ref.reload(MISCF32::REF9_F32_ID,mgr); 180 } 181 break; 182 183 case MISCF32::TEST_CORRELATE_F32_10: 184 { 185 this->nba = 5; 186 this->nbb = 11; 187 ref.reload(MISCF32::REF10_F32_ID,mgr); 188 } 189 break; 190 191 case MISCF32::TEST_CORRELATE_F32_11: 192 { 193 this->nba = 6; 194 this->nbb = 1; 195 ref.reload(MISCF32::REF11_F32_ID,mgr); 196 } 197 break; 198 199 case MISCF32::TEST_CORRELATE_F32_12: 200 { 201 this->nba = 6; 202 this->nbb = 2; 203 ref.reload(MISCF32::REF12_F32_ID,mgr); 204 } 205 break; 206 207 case MISCF32::TEST_CORRELATE_F32_13: 208 { 209 this->nba = 6; 210 this->nbb = 3; 211 ref.reload(MISCF32::REF13_F32_ID,mgr); 212 } 213 break; 214 215 case MISCF32::TEST_CORRELATE_F32_14: 216 { 217 this->nba = 6; 218 this->nbb = 8; 219 ref.reload(MISCF32::REF14_F32_ID,mgr); 220 } 221 break; 222 223 case MISCF32::TEST_CORRELATE_F32_15: 224 { 225 this->nba = 6; 226 this->nbb = 11; 227 ref.reload(MISCF32::REF15_F32_ID,mgr); 228 } 229 break; 230 231 case MISCF32::TEST_CORRELATE_F32_16: 232 { 233 this->nba = 9; 234 this->nbb = 1; 235 ref.reload(MISCF32::REF16_F32_ID,mgr); 236 } 237 break; 238 239 case MISCF32::TEST_CORRELATE_F32_17: 240 { 241 this->nba = 9; 242 this->nbb = 2; 243 ref.reload(MISCF32::REF17_F32_ID,mgr); 244 } 245 break; 246 247 case MISCF32::TEST_CORRELATE_F32_18: 248 { 249 this->nba = 9; 250 this->nbb = 3; 251 ref.reload(MISCF32::REF18_F32_ID,mgr); 252 } 253 break; 254 255 case MISCF32::TEST_CORRELATE_F32_19: 256 { 257 this->nba = 9; 258 this->nbb = 8; 259 ref.reload(MISCF32::REF19_F32_ID,mgr); 260 } 261 break; 262 263 case MISCF32::TEST_CORRELATE_F32_20: 264 { 265 this->nba = 9; 266 this->nbb = 11; 267 ref.reload(MISCF32::REF20_F32_ID,mgr); 268 } 269 break; 270 271 case MISCF32::TEST_CORRELATE_F32_21: 272 { 273 this->nba = 10; 274 this->nbb = 1; 275 ref.reload(MISCF32::REF21_F32_ID,mgr); 276 } 277 break; 278 279 case MISCF32::TEST_CORRELATE_F32_22: 280 { 281 this->nba = 10; 282 this->nbb = 2; 283 ref.reload(MISCF32::REF22_F32_ID,mgr); 284 } 285 break; 286 287 case MISCF32::TEST_CORRELATE_F32_23: 288 { 289 this->nba = 10; 290 this->nbb = 3; 291 ref.reload(MISCF32::REF23_F32_ID,mgr); 292 } 293 break; 294 295 case MISCF32::TEST_CORRELATE_F32_24: 296 { 297 this->nba = 10; 298 this->nbb = 8; 299 ref.reload(MISCF32::REF24_F32_ID,mgr); 300 } 301 break; 302 303 case MISCF32::TEST_CORRELATE_F32_25: 304 { 305 this->nba = 10; 306 this->nbb = 11; 307 ref.reload(MISCF32::REF25_F32_ID,mgr); 308 } 309 break; 310 311 case MISCF32::TEST_CORRELATE_F32_26: 312 { 313 this->nba = 11; 314 this->nbb = 1; 315 ref.reload(MISCF32::REF26_F32_ID,mgr); 316 } 317 break; 318 319 case MISCF32::TEST_CORRELATE_F32_27: 320 { 321 this->nba = 11; 322 this->nbb = 2; 323 ref.reload(MISCF32::REF27_F32_ID,mgr); 324 } 325 break; 326 327 case MISCF32::TEST_CORRELATE_F32_28: 328 { 329 this->nba = 11; 330 this->nbb = 3; 331 ref.reload(MISCF32::REF28_F32_ID,mgr); 332 } 333 break; 334 335 case MISCF32::TEST_CORRELATE_F32_29: 336 { 337 this->nba = 11; 338 this->nbb = 8; 339 ref.reload(MISCF32::REF29_F32_ID,mgr); 340 } 341 break; 342 343 case MISCF32::TEST_CORRELATE_F32_30: 344 { 345 this->nba = 11; 346 this->nbb = 11; 347 ref.reload(MISCF32::REF30_F32_ID,mgr); 348 } 349 break; 350 351 case MISCF32::TEST_CORRELATE_F32_31: 352 { 353 this->nba = 12; 354 this->nbb = 1; 355 ref.reload(MISCF32::REF31_F32_ID,mgr); 356 } 357 break; 358 359 case MISCF32::TEST_CORRELATE_F32_32: 360 { 361 this->nba = 12; 362 this->nbb = 2; 363 ref.reload(MISCF32::REF32_F32_ID,mgr); 364 } 365 break; 366 367 case MISCF32::TEST_CORRELATE_F32_33: 368 { 369 this->nba = 12; 370 this->nbb = 3; 371 ref.reload(MISCF32::REF33_F32_ID,mgr); 372 } 373 break; 374 375 case MISCF32::TEST_CORRELATE_F32_34: 376 { 377 this->nba = 12; 378 this->nbb = 8; 379 ref.reload(MISCF32::REF34_F32_ID,mgr); 380 } 381 break; 382 383 case MISCF32::TEST_CORRELATE_F32_35: 384 { 385 this->nba = 12; 386 this->nbb = 11; 387 ref.reload(MISCF32::REF35_F32_ID,mgr); 388 } 389 break; 390 391 case MISCF32::TEST_CORRELATE_F32_36: 392 { 393 this->nba = 13; 394 this->nbb = 1; 395 ref.reload(MISCF32::REF36_F32_ID,mgr); 396 } 397 break; 398 399 case MISCF32::TEST_CORRELATE_F32_37: 400 { 401 this->nba = 13; 402 this->nbb = 2; 403 ref.reload(MISCF32::REF37_F32_ID,mgr); 404 } 405 break; 406 407 case MISCF32::TEST_CORRELATE_F32_38: 408 { 409 this->nba = 13; 410 this->nbb = 3; 411 ref.reload(MISCF32::REF38_F32_ID,mgr); 412 } 413 break; 414 415 case MISCF32::TEST_CORRELATE_F32_39: 416 { 417 this->nba = 13; 418 this->nbb = 8; 419 ref.reload(MISCF32::REF39_F32_ID,mgr); 420 } 421 break; 422 423 case MISCF32::TEST_CORRELATE_F32_40: 424 { 425 this->nba = 13; 426 this->nbb = 11; 427 ref.reload(MISCF32::REF40_F32_ID,mgr); 428 } 429 break; 430 431 case MISCF32::TEST_CONV_F32_41: 432 { 433 this->nba = 4; 434 this->nbb = 1; 435 ref.reload(MISCF32::REF41_F32_ID,mgr); 436 } 437 break; 438 439 case MISCF32::TEST_CONV_F32_42: 440 { 441 this->nba = 4; 442 this->nbb = 2; 443 ref.reload(MISCF32::REF42_F32_ID,mgr); 444 } 445 break; 446 447 case MISCF32::TEST_CONV_F32_43: 448 { 449 this->nba = 4; 450 this->nbb = 3; 451 ref.reload(MISCF32::REF43_F32_ID,mgr); 452 } 453 break; 454 455 case MISCF32::TEST_CONV_F32_44: 456 { 457 this->nba = 4; 458 this->nbb = 8; 459 ref.reload(MISCF32::REF44_F32_ID,mgr); 460 } 461 break; 462 463 case MISCF32::TEST_CONV_F32_45: 464 { 465 this->nba = 4; 466 this->nbb = 11; 467 ref.reload(MISCF32::REF45_F32_ID,mgr); 468 } 469 break; 470 471 case MISCF32::TEST_CONV_F32_46: 472 { 473 this->nba = 5; 474 this->nbb = 1; 475 ref.reload(MISCF32::REF46_F32_ID,mgr); 476 } 477 break; 478 479 case MISCF32::TEST_CONV_F32_47: 480 { 481 this->nba = 5; 482 this->nbb = 2; 483 ref.reload(MISCF32::REF47_F32_ID,mgr); 484 } 485 break; 486 487 case MISCF32::TEST_CONV_F32_48: 488 { 489 this->nba = 5; 490 this->nbb = 3; 491 ref.reload(MISCF32::REF48_F32_ID,mgr); 492 } 493 break; 494 495 case MISCF32::TEST_CONV_F32_49: 496 { 497 this->nba = 5; 498 this->nbb = 8; 499 ref.reload(MISCF32::REF49_F32_ID,mgr); 500 } 501 break; 502 503 case MISCF32::TEST_CONV_F32_50: 504 { 505 this->nba = 5; 506 this->nbb = 11; 507 ref.reload(MISCF32::REF50_F32_ID,mgr); 508 } 509 break; 510 511 case MISCF32::TEST_CONV_F32_51: 512 { 513 this->nba = 6; 514 this->nbb = 1; 515 ref.reload(MISCF32::REF51_F32_ID,mgr); 516 } 517 break; 518 519 case MISCF32::TEST_CONV_F32_52: 520 { 521 this->nba = 6; 522 this->nbb = 2; 523 ref.reload(MISCF32::REF52_F32_ID,mgr); 524 } 525 break; 526 527 case MISCF32::TEST_CONV_F32_53: 528 { 529 this->nba = 6; 530 this->nbb = 3; 531 ref.reload(MISCF32::REF53_F32_ID,mgr); 532 } 533 break; 534 535 case MISCF32::TEST_CONV_F32_54: 536 { 537 this->nba = 6; 538 this->nbb = 8; 539 ref.reload(MISCF32::REF54_F32_ID,mgr); 540 } 541 break; 542 543 case MISCF32::TEST_CONV_F32_55: 544 { 545 this->nba = 6; 546 this->nbb = 11; 547 ref.reload(MISCF32::REF55_F32_ID,mgr); 548 } 549 break; 550 551 case MISCF32::TEST_CONV_F32_56: 552 { 553 this->nba = 9; 554 this->nbb = 1; 555 ref.reload(MISCF32::REF56_F32_ID,mgr); 556 } 557 break; 558 559 case MISCF32::TEST_CONV_F32_57: 560 { 561 this->nba = 9; 562 this->nbb = 2; 563 ref.reload(MISCF32::REF57_F32_ID,mgr); 564 } 565 break; 566 567 case MISCF32::TEST_CONV_F32_58: 568 { 569 this->nba = 9; 570 this->nbb = 3; 571 ref.reload(MISCF32::REF58_F32_ID,mgr); 572 } 573 break; 574 575 case MISCF32::TEST_CONV_F32_59: 576 { 577 this->nba = 9; 578 this->nbb = 8; 579 ref.reload(MISCF32::REF59_F32_ID,mgr); 580 } 581 break; 582 583 case MISCF32::TEST_CONV_F32_60: 584 { 585 this->nba = 9; 586 this->nbb = 11; 587 ref.reload(MISCF32::REF60_F32_ID,mgr); 588 } 589 break; 590 591 case MISCF32::TEST_CONV_F32_61: 592 { 593 this->nba = 10; 594 this->nbb = 1; 595 ref.reload(MISCF32::REF61_F32_ID,mgr); 596 } 597 break; 598 599 case MISCF32::TEST_CONV_F32_62: 600 { 601 this->nba = 10; 602 this->nbb = 2; 603 ref.reload(MISCF32::REF62_F32_ID,mgr); 604 } 605 break; 606 607 case MISCF32::TEST_CONV_F32_63: 608 { 609 this->nba = 10; 610 this->nbb = 3; 611 ref.reload(MISCF32::REF63_F32_ID,mgr); 612 } 613 break; 614 615 case MISCF32::TEST_CONV_F32_64: 616 { 617 this->nba = 10; 618 this->nbb = 8; 619 ref.reload(MISCF32::REF64_F32_ID,mgr); 620 } 621 break; 622 623 case MISCF32::TEST_CONV_F32_65: 624 { 625 this->nba = 10; 626 this->nbb = 11; 627 ref.reload(MISCF32::REF65_F32_ID,mgr); 628 } 629 break; 630 631 case MISCF32::TEST_CONV_F32_66: 632 { 633 this->nba = 11; 634 this->nbb = 1; 635 ref.reload(MISCF32::REF66_F32_ID,mgr); 636 } 637 break; 638 639 case MISCF32::TEST_CONV_F32_67: 640 { 641 this->nba = 11; 642 this->nbb = 2; 643 ref.reload(MISCF32::REF67_F32_ID,mgr); 644 } 645 break; 646 647 case MISCF32::TEST_CONV_F32_68: 648 { 649 this->nba = 11; 650 this->nbb = 3; 651 ref.reload(MISCF32::REF68_F32_ID,mgr); 652 } 653 break; 654 655 case MISCF32::TEST_CONV_F32_69: 656 { 657 this->nba = 11; 658 this->nbb = 8; 659 ref.reload(MISCF32::REF69_F32_ID,mgr); 660 } 661 break; 662 663 case MISCF32::TEST_CONV_F32_70: 664 { 665 this->nba = 11; 666 this->nbb = 11; 667 ref.reload(MISCF32::REF70_F32_ID,mgr); 668 } 669 break; 670 671 case MISCF32::TEST_CONV_F32_71: 672 { 673 this->nba = 12; 674 this->nbb = 1; 675 ref.reload(MISCF32::REF71_F32_ID,mgr); 676 } 677 break; 678 679 case MISCF32::TEST_CONV_F32_72: 680 { 681 this->nba = 12; 682 this->nbb = 2; 683 ref.reload(MISCF32::REF72_F32_ID,mgr); 684 } 685 break; 686 687 case MISCF32::TEST_CONV_F32_73: 688 { 689 this->nba = 12; 690 this->nbb = 3; 691 ref.reload(MISCF32::REF73_F32_ID,mgr); 692 } 693 break; 694 695 case MISCF32::TEST_CONV_F32_74: 696 { 697 this->nba = 12; 698 this->nbb = 8; 699 ref.reload(MISCF32::REF74_F32_ID,mgr); 700 } 701 break; 702 703 case MISCF32::TEST_CONV_F32_75: 704 { 705 this->nba = 12; 706 this->nbb = 11; 707 ref.reload(MISCF32::REF75_F32_ID,mgr); 708 } 709 break; 710 711 case MISCF32::TEST_CONV_F32_76: 712 { 713 this->nba = 13; 714 this->nbb = 1; 715 ref.reload(MISCF32::REF76_F32_ID,mgr); 716 } 717 break; 718 719 case MISCF32::TEST_CONV_F32_77: 720 { 721 this->nba = 13; 722 this->nbb = 2; 723 ref.reload(MISCF32::REF77_F32_ID,mgr); 724 } 725 break; 726 727 case MISCF32::TEST_CONV_F32_78: 728 { 729 this->nba = 13; 730 this->nbb = 3; 731 ref.reload(MISCF32::REF78_F32_ID,mgr); 732 } 733 break; 734 735 case MISCF32::TEST_CONV_F32_79: 736 { 737 this->nba = 13; 738 this->nbb = 8; 739 ref.reload(MISCF32::REF79_F32_ID,mgr); 740 } 741 break; 742 743 case MISCF32::TEST_CONV_F32_80: 744 { 745 this->nba = 13; 746 this->nbb = 11; 747 ref.reload(MISCF32::REF80_F32_ID,mgr); 748 } 749 break; 750 751 case MISCF32::TEST_LEVINSON_DURBIN_F32_81: 752 { 753 this->nba = 3; 754 inputA.reload(MISCF32::INPUTPHI_A_F32_ID,mgr); 755 756 this->errOffset=0; 757 inputB.reload(MISCF32::INPUT_ERRORS_F32_ID,mgr); 758 ref.reload(MISCF32::REF81_F32_ID,mgr); 759 } 760 break; 761 762 case MISCF32::TEST_LEVINSON_DURBIN_F32_82: 763 { 764 this->nba = 8; 765 inputA.reload(MISCF32::INPUTPHI_B_F32_ID,mgr); 766 767 this->errOffset=1; 768 inputB.reload(MISCF32::INPUT_ERRORS_F32_ID,mgr); 769 ref.reload(MISCF32::REF82_F32_ID,mgr); 770 } 771 break; 772 773 case MISCF32::TEST_LEVINSON_DURBIN_F32_83: 774 { 775 this->nba = 11; 776 inputA.reload(MISCF32::INPUTPHI_C_F32_ID,mgr); 777 778 this->errOffset=2; 779 inputB.reload(MISCF32::INPUT_ERRORS_F32_ID,mgr); 780 ref.reload(MISCF32::REF83_F32_ID,mgr); 781 } 782 break; 783 784 case MISCF32::TEST_CONV_PARTIAL_F32_84: 785 { 786 this->first=3; 787 this->nba = 6; 788 this->nbb = 8; 789 ref.reload(MISCF32::REF84_F32_ID,mgr); 790 tmp.create(ref.nbSamples(),MISCF32::TMP_F32_ID,mgr); 791 792 } 793 break; 794 795 case MISCF32::TEST_CONV_PARTIAL_F32_85: 796 { 797 this->first=9; 798 this->nba = 6; 799 this->nbb = 8; 800 ref.reload(MISCF32::REF85_F32_ID,mgr); 801 tmp.create(ref.nbSamples(),MISCF32::TMP_F32_ID,mgr); 802 803 } 804 break; 805 806 case MISCF32::TEST_CONV_PARTIAL_F32_86: 807 { 808 this->first=7; 809 this->nba = 6; 810 this->nbb = 8; 811 ref.reload(MISCF32::REF86_F32_ID,mgr); 812 tmp.create(ref.nbSamples(),MISCF32::TMP_F32_ID,mgr); 813 814 } 815 break; 816 817 818 } 819 820 if (id < TEST_LEVINSON_DURBIN_F32_81) 821 { 822 inputA.reload(MISCF32::INPUTA_F32_ID,mgr,nba); 823 inputB.reload(MISCF32::INPUTB_F32_ID,mgr,nbb); 824 } 825 826 if (id > TEST_LEVINSON_DURBIN_F32_83) 827 { 828 inputA.reload(MISCF32::INPUTA2_F32_ID,mgr,nba); 829 inputB.reload(MISCF32::INPUTB2_F32_ID,mgr,nbb); 830 } 831 832 output.create(ref.nbSamples(),MISCF32::OUT_F32_ID,mgr); 833 834 } 835 tearDown(Testing::testID_t id,Client::PatternMgr * mgr)836 void MISCF32::tearDown(Testing::testID_t id,Client::PatternMgr *mgr) 837 { 838 (void)id; 839 output.dump(mgr); 840 841 } 842