summaryrefslogtreecommitdiff
path: root/protocol/src/bridge_engine.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-12-18 15:33:02 -0500
committerKjetil Orbekk <kj@orbekk.com>2022-12-18 15:33:02 -0500
commit27f74d8c366be675e7ab64ca746496a66b3cf024 (patch)
tree7bee8fee0b8753d1c3974e33bcb155b509bae100 /protocol/src/bridge_engine.rs
parent4512c5ead9406206de32e37490b7a4ac792d93bf (diff)
Add bidding from webapp
Diffstat (limited to 'protocol/src/bridge_engine.rs')
-rw-r--r--protocol/src/bridge_engine.rs16
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!());