@@ -437,7 +437,8 @@ mod tests {
437437 nodes
438438 }
439439
440- fn split_perft ( pos : & Position , depth : u32 ) -> u64 {
440+ fn split_perft ( fen : & str , depth : u32 ) -> u64 {
441+ let pos = Position :: from_fen ( fen) . unwrap ( ) ;
441442 let moves = pseudo_legal_moves ( & pos) ;
442443 let mut total_nodes = 0 ;
443444
@@ -493,42 +494,34 @@ mod tests {
493494
494495 #[ test]
495496 fn test_perft_startpos_depth_1 ( ) {
496- let pos = & Position :: from_fen ( STARTPOS ) . unwrap ( ) ;
497- assert_eq ! ( split_perft( pos, 1 ) , 20 ) ;
497+ assert_eq ! ( split_perft( STARTPOS , 1 ) , 20 ) ;
498498 }
499499
500500 #[ test]
501501 fn test_perft_startpos_depth_2 ( ) {
502- assert_eq ! ( split_perft( & Position :: from_fen ( STARTPOS ) . unwrap ( ) , 2 ) , 400 ) ;
502+ assert_eq ! ( split_perft( STARTPOS , 2 ) , 400 ) ;
503503 }
504504
505505 #[ test]
506506 fn test_perft_startpos_depth_3 ( ) {
507- assert_eq ! ( split_perft( & Position :: from_fen ( STARTPOS ) . unwrap ( ) , 3 ) , 8902 ) ;
507+ assert_eq ! ( split_perft( STARTPOS , 3 ) , 8902 ) ;
508508 }
509509
510510 #[ test]
511511 fn test_perft_startpos_depth_4 ( ) {
512- assert_eq ! (
513- split_perft( & Position :: from_fen( STARTPOS ) . unwrap( ) , 4 ) ,
514- 197281
515- ) ;
512+ assert_eq ! ( split_perft( STARTPOS , 4 ) , 197281 ) ;
516513 }
517514
518515 #[ test]
519516 fn test_perft_startpos_depth_5 ( ) {
520- assert_eq ! (
521- split_perft( & Position :: from_fen( STARTPOS ) . unwrap( ) , 5 ) ,
522- 4865609
523- ) ;
517+ assert_eq ! ( split_perft( STARTPOS , 5 ) , 4865609 ) ;
524518 }
525519
526520 #[ test]
527521 fn test_perft_startpos_depth_7 ( ) {
528522 assert_eq ! (
529523 split_perft(
530- & Position :: from_fen( "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" )
531- . unwrap( ) ,
524+ "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" ,
532525 7
533526 ) ,
534527 3195901860
@@ -539,8 +532,7 @@ mod tests {
539532 fn test_perft_custom_position_1 ( ) {
540533 assert_eq ! (
541534 split_perft(
542- & Position :: from_fen( "rnbqkbnr/ppp1pppp/3p4/8/8/2P5/PP1PPPPP/RNBQKBNR w KQkq - 0 2" )
543- . unwrap( ) ,
535+ "rnbqkbnr/ppp1pppp/3p4/8/8/2P5/PP1PPPPP/RNBQKBNR w KQkq - 0 2" ,
544536 1
545537 ) ,
546538 21
@@ -551,8 +543,7 @@ mod tests {
551543 fn test_perft_custom_position_2 ( ) {
552544 assert_eq ! (
553545 split_perft(
554- & Position :: from_fen( "rnbqkbnr/pppppppp/8/8/8/2P5/PP1PPPPP/RNBQKBNR b KQkq - 0 1" )
555- . unwrap( ) ,
546+ "rnbqkbnr/pppppppp/8/8/8/2P5/PP1PPPPP/RNBQKBNR b KQkq - 0 1" ,
556547 2
557548 ) ,
558549 420
@@ -563,10 +554,7 @@ mod tests {
563554 fn test_perft_castle_position ( ) {
564555 assert_eq ! (
565556 split_perft(
566- & Position :: from_fen(
567- "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1"
568- )
569- . unwrap( ) ,
557+ "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1" ,
570558 1
571559 ) ,
572560 48
@@ -577,10 +565,7 @@ mod tests {
577565 fn test_perft_complex_position_1 ( ) {
578566 assert_eq ! (
579567 split_perft(
580- & Position :: from_fen(
581- "r3k2r/p1ppqpb1/bnN1pnp1/3P4/1p2P3/2N2Q1p/PPPBBPPP/R3K2R b KQkq - 1 1"
582- )
583- . unwrap( ) ,
568+ "r3k2r/p1ppqpb1/bnN1pnp1/3P4/1p2P3/2N2Q1p/PPPBBPPP/R3K2R b KQkq - 1 1" ,
584569 1
585570 ) ,
586571 41
@@ -591,10 +576,7 @@ mod tests {
591576 fn test_perft_complex_position_2 ( ) {
592577 assert_eq ! (
593578 split_perft(
594- & Position :: from_fen(
595- "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/P1N2Q2/1PPBBPpP/R3K2R w KQkq - 0 2"
596- )
597- . unwrap( ) ,
579+ "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/P1N2Q2/1PPBBPpP/R3K2R w KQkq - 0 2" ,
598580 1
599581 ) ,
600582 48
@@ -605,10 +587,7 @@ mod tests {
605587 fn test_perft_complex_position_32 ( ) {
606588 assert_eq ! (
607589 split_perft(
608- & Position :: from_fen(
609- "r3k2r/p1pNqpb1/bn2pnp1/3P4/1p2P3/2N2Q1p/PPPBBPPP/R3K2R b KQkq - 0 1"
610- )
611- . unwrap( ) ,
590+ "r3k2r/p1pNqpb1/bn2pnp1/3P4/1p2P3/2N2Q1p/PPPBBPPP/R3K2R b KQkq - 0 1" ,
612591 1
613592 ) ,
614593 45
@@ -619,10 +598,7 @@ mod tests {
619598 fn test_perft_complex_position_3 ( ) {
620599 assert_eq ! (
621600 split_perft(
622- & Position :: from_fen(
623- "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1"
624- )
625- . unwrap( ) ,
601+ "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1" ,
626602 2
627603 ) ,
628604 2039
@@ -633,10 +609,7 @@ mod tests {
633609 fn test_perft_complex_position_4 ( ) {
634610 assert_eq ! (
635611 split_perft(
636- & Position :: from_fen(
637- "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/P1N2Q1p/1PPBBPPP/R3K2R b KQkq - 0 1"
638- )
639- . unwrap( ) ,
612+ "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/P1N2Q1p/1PPBBPPP/R3K2R b KQkq - 0 1" ,
640613 2
641614 ) ,
642615 2186
@@ -647,10 +620,7 @@ mod tests {
647620 fn test_perft_complex_position_25 ( ) {
648621 assert_eq ! (
649622 split_perft(
650- & Position :: from_fen(
651- "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/5Q2/PPPBBPpP/RN2K2R w KQkq - 0 2"
652- )
653- . unwrap( ) ,
623+ "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/5Q2/PPPBBPpP/RN2K2R w KQkq - 0 2" ,
654624 1
655625 ) ,
656626 47
@@ -661,10 +631,7 @@ mod tests {
661631 fn test_perft_complex_position_5 ( ) {
662632 assert_eq ! (
663633 split_perft(
664- & Position :: from_fen(
665- "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1"
666- )
667- . unwrap( ) ,
634+ "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1" ,
668635 3
669636 ) ,
670637 97862
@@ -675,10 +642,7 @@ mod tests {
675642 fn test_perft_complex_position_6 ( ) {
676643 assert_eq ! (
677644 split_perft(
678- & Position :: from_fen(
679- "r3k2r/p1p1qpb1/bn1ppnp1/1B1PN3/1p2P3/P1N2Q1p/1PPB1PPP/R3K2R b KQkq - 1 2"
680- )
681- . unwrap( ) ,
645+ "r3k2r/p1p1qpb1/bn1ppnp1/1B1PN3/1p2P3/P1N2Q1p/1PPB1PPP/R3K2R b KQkq - 1 2" ,
682646 1
683647 ) ,
684648 7
@@ -689,10 +653,7 @@ mod tests {
689653 fn test_perft_complex_position_7 ( ) {
690654 assert_eq ! (
691655 split_perft(
692- & Position :: from_fen(
693- "r3k2r/p1p1qpb1/bn1ppnp1/3PN3/1p2P3/P1N2Q1p/1PPBBPPP/R3K2R w KQkq - 0 2"
694- )
695- . unwrap( ) ,
656+ "r3k2r/p1p1qpb1/bn1ppnp1/3PN3/1p2P3/P1N2Q1p/1PPBBPPP/R3K2R w KQkq - 0 2" ,
696657 2
697658 ) ,
698659 2135
@@ -703,10 +664,7 @@ mod tests {
703664 fn test_perft_complex_position_8 ( ) {
704665 assert_eq ! (
705666 split_perft(
706- & Position :: from_fen(
707- "r3k2r/p1ppqpb1/bn2p1p1/3PN3/1p2n3/P1N2Q1p/1PPBBPPP/R3K2R w KQkq - 0 2"
708- )
709- . unwrap( ) ,
667+ "r3k2r/p1ppqpb1/bn2p1p1/3PN3/1p2n3/P1N2Q1p/1PPBBPPP/R3K2R w KQkq - 0 2" ,
710668 2
711669 ) ,
712670 2717
@@ -717,10 +675,7 @@ mod tests {
717675 fn test_perft_complex_position_9 ( ) {
718676 assert_eq ! (
719677 split_perft(
720- & Position :: from_fen(
721- "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/P1N2Q1p/1PPBBPPP/R3K2R b KQkq - 0 1"
722- )
723- . unwrap( ) ,
678+ "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/P1N2Q1p/1PPBBPPP/R3K2R b KQkq - 0 1" ,
724679 3
725680 ) ,
726681 94405
@@ -731,10 +686,7 @@ mod tests {
731686 fn test_perft_complex_position_10 ( ) {
732687 assert_eq ! (
733688 split_perft(
734- & Position :: from_fen(
735- "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1"
736- )
737- . unwrap( ) ,
689+ "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1" ,
738690 4
739691 ) ,
740692 4085603
@@ -745,10 +697,7 @@ mod tests {
745697 fn test_perft_complex_position_11 ( ) {
746698 assert_eq ! (
747699 split_perft(
748- & Position :: from_fen(
749- "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1"
750- )
751- . unwrap( ) ,
700+ "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1" ,
752701 5
753702 ) ,
754703 193690690
@@ -758,10 +707,7 @@ mod tests {
758707 #[ test]
759708 fn test_perft_endgame_position ( ) {
760709 assert_eq ! (
761- split_perft(
762- & Position :: from_fen( "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 1" ) . unwrap( ) ,
763- 7
764- ) ,
710+ split_perft( "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 1" , 7 ) ,
765711 178633661
766712 ) ;
767713 }
@@ -770,10 +716,7 @@ mod tests {
770716 fn test_perft_tactical_position_1 ( ) {
771717 assert_eq ! (
772718 split_perft(
773- &&Position :: from_fen(
774- "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq - 0 1"
775- )
776- . unwrap( ) ,
719+ "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq - 0 1" ,
777720 6
778721 ) ,
779722 706045033
@@ -784,8 +727,7 @@ mod tests {
784727 fn test_perft_tactical_position_2 ( ) {
785728 assert_eq ! (
786729 split_perft(
787- & Position :: from_fen( "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8" )
788- . unwrap( ) ,
730+ "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8" ,
789731 5
790732 ) ,
791733 89941194
@@ -796,10 +738,7 @@ mod tests {
796738 fn test_perft_tactical_position_3 ( ) {
797739 assert_eq ! (
798740 split_perft(
799- & Position :: from_fen(
800- "r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - 0 1"
801- )
802- . unwrap( ) ,
741+ "r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - 0 1" ,
803742 5
804743 ) ,
805744 164075551
0 commit comments