From 27f74d8c366be675e7ab64ca746496a66b3cf024 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 18 Dec 2022 15:33:02 -0500 Subject: Add bidding from webapp --- protocol/src/bridge_engine.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'protocol') 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 { @@ -991,6 +993,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()); -- cgit v1.2.3