standard_card 1.4.0

A Lightweight Library for Efficient Card Representation
Documentation
/// Check if the deck is a flush
///
/// # Arguments
/// cards: &[i32] - the cards in the deck
///
/// # Returns
/// bool - true if the deck is a flush
///
/// # Example
/// ```
/// use standard_card::deck::is_flush;
/// use standard_card::card::create;
///
/// let cards = vec![create(0, 0), create(1, 0), create(2, 0)];
/// let actual = is_flush(&cards);
///
/// assert!(actual);
/// ```
pub fn is_flush(cards: &Vec<i32>) -> bool {
    let mut result: i32 = 0xf000;

    for card in cards {
        result = result & card;
    }

    return result != 0;
}

#[cfg(test)]
mod is_flush {
    use crate::card::create;
    use crate::deck::is_flush;

    #[test]
    fn return_true() {
        // Arrange
        let cards = vec![create(0, 0), create(1, 0), create(2, 0)];

        // Act
        let actual = is_flush(&cards);

        // Assert
        assert!(actual);
    }

    #[test]
    fn return_false() {
        // Arrange
        let cards = vec![create(0, 0), create(1, 0), create(2, 1)];

        // Act
        let actual = is_flush(&cards);

        // Assert
        assert!(!actual);
    }
}