diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-09-10 14:49:38 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-09-10 14:49:38 -0400 |
commit | 55a24a3b7d1b3fcc07f0bb8e53b00abf23e651b3 (patch) | |
tree | e85911ccc1eca8c820d7b4f40c9e3b36aa121034 /webapp/src/bridge_engine.rs | |
parent | 5ad23c12d718e5b4b6f9076ef2d29de5addd40fc (diff) |
Add nav bar with context
Diffstat (limited to 'webapp/src/bridge_engine.rs')
-rw-r--r-- | webapp/src/bridge_engine.rs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/webapp/src/bridge_engine.rs b/webapp/src/bridge_engine.rs index fd52c33..2161a53 100644 --- a/webapp/src/bridge_engine.rs +++ b/webapp/src/bridge_engine.rs @@ -243,12 +243,31 @@ pub enum ContractModifier { Redoubled, } +impl fmt::Display for ContractModifier { + fn fmt(&self, f: &mut fmt::Formatter) -> std::result::Result<(), std::fmt::Error> { + match self { + ContractModifier::None => Ok(()), + ContractModifier::Doubled => write!(f, "x"), + ContractModifier::Redoubled => write!(f, "xx"), + } + } +} + #[derive(Debug, PartialEq, Eq, Copy, Clone)] pub struct Contract { highest_bid: Option<Raise>, modifier: ContractModifier, } +impl fmt::Display for Contract { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> std::result::Result<(), fmt::Error> { + match self.highest_bid { + None => write!(f, "Passed"), + Some(bid) => write!(f, "{}{}", bid, self.modifier), + } + } +} + #[derive(Debug, PartialEq, Eq, Clone)] pub struct Bidding { pub dealer: Player, @@ -389,6 +408,42 @@ mod tests { } #[test] + fn fmt_contract() { + assert_eq!( + format!( + "{}", + Contract { + highest_bid: None, + modifier: ContractModifier::None + } + ), + "Passed" + ); + + assert_eq!( + format!( + "{}", + Contract { + highest_bid: Some("1♥".parse().unwrap()), + modifier: ContractModifier::None + } + ), + "1♡" + ); + + assert_eq!( + format!( + "{}", + Contract { + highest_bid: Some("1♥".parse().unwrap()), + modifier: ContractModifier::Doubled + } + ), + "1♡x" + ); + } + + #[test] fn bid_ord() { let bid = |s| Raise::from_str(s).unwrap(); assert!(bid("2♦") < bid("3♦")); |