@@ -3542,14 +3542,8 @@ async def main():
35423542 board .push_san ("d4" )
35433543 board .push_san ("Nf6" )
35443544 board .push_san ("c4" )
3545- opponent = chess .engine .Opponent ("Turk" , "Mechanical" , 2100 , True )
3546- engine_rating = 3600
3547- await protocol .send_opponent_information (opponent = opponent , engine_rating = engine_rating )
35483545
35493546 mock .expect ("new" )
3550- mock .expect ("name Mechanical Turk" )
3551- mock .expect ("rating 3600 2100" )
3552- mock .expect ("computer" )
35533547 mock .expect ("force" )
35543548 mock .expect ("d2d4" )
35553549 mock .expect ("g8f6" )
@@ -3595,6 +3589,55 @@ async def main():
35953589 asyncio .set_event_loop_policy (chess .engine .EventLoopPolicy ())
35963590 asyncio .run (main ())
35973591
3592+ def test_xboard_opponent (self ):
3593+ async def main ():
3594+ protocol = chess .engine .XBoardProtocol ()
3595+ mock = chess .engine .MockTransport (protocol )
3596+
3597+ mock .expect ("xboard" )
3598+ mock .expect ("protover 2" , ["feature ping=1 setboard=1 name=1 done=1" ])
3599+ await protocol .initialize ()
3600+ mock .assert_done ()
3601+
3602+ limit = chess .engine .Limit (time = 5 )
3603+ board = chess .Board ()
3604+ opponent = chess .engine .Opponent ("Turk" , "Mechanical" , 2100 , True )
3605+ await protocol .send_opponent_information (opponent = opponent , engine_rating = 3600 )
3606+
3607+ mock .expect ("new" )
3608+ mock .expect ("name Mechanical Turk" )
3609+ mock .expect ("rating 3600 2100" )
3610+ mock .expect ("computer" )
3611+ mock .expect ("force" )
3612+ mock .expect ("st 5" )
3613+ mock .expect ("nopost" )
3614+ mock .expect ("easy" )
3615+ mock .expect ("go" , ["move e2e4" ])
3616+ mock .expect_ping ()
3617+ result = await protocol .play (board , limit , game = "game" )
3618+ self .assertEqual (result .move , board .parse_san ("e4" ))
3619+ mock .assert_done ()
3620+
3621+ new_opponent = chess .engine .Opponent ("Turochamp" , None , 800 , True )
3622+ board .push (result .move )
3623+ mock .expect ("new" )
3624+ mock .expect ("name Turochamp" )
3625+ mock .expect ("rating 3600 800" )
3626+ mock .expect ("computer" )
3627+ mock .expect ("force" )
3628+ mock .expect ("e2e4" )
3629+ mock .expect ("st 5" )
3630+ mock .expect ("nopost" )
3631+ mock .expect ("easy" )
3632+ mock .expect ("go" , ["move e7e5" ])
3633+ mock .expect_ping ()
3634+ result = await protocol .play (board , limit , game = "game" , opponent = new_opponent )
3635+ self .assertEqual (result .move , board .parse_san ("e5" ))
3636+ mock .assert_done ()
3637+
3638+ asyncio .set_event_loop_policy (chess .engine .EventLoopPolicy ())
3639+ asyncio .run (main ())
3640+
35983641 def test_xboard_analyse (self ):
35993642 async def main ():
36003643 protocol = chess .engine .XBoardProtocol ()
0 commit comments