pub fn create(rank: i32, suit: i32) -> i32 {
if let 0..=12 = rank {
if let 0..=3 = suit {
let primes: [i32; 13] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41];
let prime: i32 = primes[rank as usize];
return prime | (suit << 6) | (rank << 8) | (1 << (15 - suit)) | (1 << (16 + rank));
}
}
return 0;
}
#[cfg(test)]
mod create {
use crate::card::create;
#[test]
fn ace_of_clubs() {
let actual = create(12, 0);
assert_eq!(actual, 268471337);
}
#[test]
fn ace_of_diamonds() {
let actual = create(12, 1);
assert_eq!(actual, 268455017);
}
#[test]
fn ace_of_hearts() {
let actual = create(12, 2);
assert_eq!(actual, 268446889);
}
#[test]
fn ace_of_spades() {
let actual = create(12, 3);
assert_eq!(actual, 268442857);
}
}