diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-12-18 15:33:02 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-12-18 15:33:02 -0500 |
commit | 27f74d8c366be675e7ab64ca746496a66b3cf024 (patch) | |
tree | 7bee8fee0b8753d1c3974e33bcb155b509bae100 /protocol/src/bridge_engine.rs | |
parent | 4512c5ead9406206de32e37490b7a4ac792d93bf (diff) |
Add bidding from webapp
Diffstat (limited to 'protocol/src/bridge_engine.rs')
-rw-r--r-- | protocol/src/bridge_engine.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/protocol/src/bridge_engine.rs b/protocol/src/bridge_engine.rs index ec88183..925676e 100644 --- a/protocol/src/bridge_engine.rs +++ b/protocol/src/bridge_engine.rs @@ -440,6 +440,7 @@ impl Bidding { } fn passed_out(&self) -> bool { + if self.bids.len() < 4 { return false; } let mut passes = 0; for b in self.bids.iter().rev().take(3) { if b == &Bid::Pass { @@ -717,6 +718,7 @@ impl GameStatePlayerView { mod tests { use super::*; use log::info; + use rand::random; fn as_bidding(r: BiddingResult) -> Bidding { match r { @@ -992,6 +994,20 @@ mod tests { } #[test] + fn pass_out_bid() { + let mut bidding = Bidding::new(random()); + for i in 0..3 { + bidding = as_bidding(bidding.bid(Bid::Pass).unwrap()); + assert!(!bidding.passed_out()); + } + bidding = match bidding.bid(Bid::Pass).unwrap() { + BiddingResult::Contract(None, bidding) => bidding, + _ => panic!("should be passed out"), + }; + assert!(bidding.passed_out()); + } + + #[test] fn play_hand() { let deal = DealInPlay::new(Player::West, mini_deal()); assert_eq!(deal.tricks_played, vec!()); |