diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-12-30 10:27:10 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-12-30 10:27:10 -0500 |
commit | dbe316d8b337eadff5518585dfc163f2724d0810 (patch) | |
tree | 6e2d772c7e4db77671cadb7ae240b6a44105b883 /protocol/src/simple_bots.rs | |
parent | 83ffcc667999879197508aba0d1f910ca7cb000b (diff) |
Utility method to reconstruct Deal from tricks played
Diffstat (limited to 'protocol/src/simple_bots.rs')
-rw-r--r-- | protocol/src/simple_bots.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/protocol/src/simple_bots.rs b/protocol/src/simple_bots.rs index 45d1a5b..182229f 100644 --- a/protocol/src/simple_bots.rs +++ b/protocol/src/simple_bots.rs @@ -46,7 +46,7 @@ impl PlayingBot for RandomPlayingBot { #[cfg(test)] mod tests { use std::str::FromStr; - use crate::move_result::MoveResult; + use crate::{move_result::MoveResult, bridge_engine::SUIT_DISPLAY_ORDER, card::RankOrder}; use super::*; use crate::{ @@ -159,7 +159,9 @@ mod tests { async fn play_until_completion() { crate::tests::test_setup(); let bot = RandomPlayingBot {}; - let mut result = MoveResult::Current(example_play_state()); + let play_state = example_play_state(); + let mut deal = play_state.deal.clone(); + let mut result = MoveResult::Current(play_state); while let MoveResult::Current(play_state) = result { info!("Play state: {play_state:#?}"); let player_state = PlayStatePlayerView::from_play_state( @@ -169,5 +171,13 @@ mod tests { let card = bot.play(&player_state).await; result = play_state.play(card).unwrap(); } + let play_result = result.next().unwrap(); + + // Verify that the deal is intact. + deal.sort(&SUIT_DISPLAY_ORDER, RankOrder::Descending); + let mut result_deal = play_result.deal().into_owned(); + result_deal.sort(&SUIT_DISPLAY_ORDER, RankOrder::Descending); + + assert_eq!(result_deal, deal); } } |