From d8de16a7187d2a05fd043946cf4cb32449a5aa3b Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 27 Nov 2022 16:45:07 -0500 Subject: Add basic bot trait for bot bidding --- protocol/src/simple_bots.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 protocol/src/simple_bots.rs (limited to 'protocol/src/simple_bots.rs') diff --git a/protocol/src/simple_bots.rs b/protocol/src/simple_bots.rs new file mode 100644 index 0000000..ffa1be2 --- /dev/null +++ b/protocol/src/simple_bots.rs @@ -0,0 +1,35 @@ +use async_trait::async_trait; + +use crate::{bot::BiddingBot, bridge_engine::{BiddingStatePlayerView, Bid}}; + +struct AlwaysPassBiddingBot {} + +#[async_trait] +impl BiddingBot for AlwaysPassBiddingBot { + async fn bid(&self, bidding: &BiddingStatePlayerView) -> Bid { + Bid::Pass + } +} + +#[cfg(test)] +mod tests { + use super::*; + use log::info; + use rand::random; + use crate::bridge_engine::{deal, GameState, BiddingState, Bidding, BiddingStatePlayerView}; + + #[tokio::test] + async fn always_passing_bot_passes() { + crate::tests::test_setup(); + let dealer = random(); + let player_position = random(); + let bidding_state = BiddingState { + dealer, + deal: deal(), + bidding: Bidding::new(dealer), + }; + let player_view = BiddingStatePlayerView::from_bidding_state(&bidding_state, player_position); + info!("Bidding state: {bidding_state:#?}"); + assert_eq!(Bid::Pass, (AlwaysPassBiddingBot {}).bid(&player_view).await); + } +} -- cgit v1.2.3