use crate::moves::DDS_NOTRUMP;
use contract_bridge::{Strain, Suit};
#[inline]
pub const fn dds_suit_from_cb(suit: Suit) -> usize {
3 - suit as usize
}
#[inline]
pub fn dds_trump_from_strain(strain: Strain) -> i32 {
strain
.suit()
.map_or(DDS_NOTRUMP, |suit| dds_suit_from_cb(suit) as i32)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn strain_to_trump_uses_dds_descending_order() {
assert_eq!(dds_trump_from_strain(Strain::Spades), 0);
assert_eq!(dds_trump_from_strain(Strain::Hearts), 1);
assert_eq!(dds_trump_from_strain(Strain::Diamonds), 2);
assert_eq!(dds_trump_from_strain(Strain::Clubs), 3);
assert_eq!(dds_trump_from_strain(Strain::Notrump), DDS_NOTRUMP);
}
}