use kings_eunuch::hand_building::{find_straight_flush, Card}; #[test] fn test_straight_flush_basic() { let sf_basic: Vec = ["9h", "8h", "7h", "6h", "5h"] .iter() .map(|s| Card::str_to_card(s).unwrap()) .collect(); let cards = find_straight_flush(&sf_basic).expect("Should find straight flush"); assert_eq!(cards.len(), 5, "Straight flush should have 5 cards"); } #[test] fn test_royal_flush() { let royal: Vec = ["Ah", "Kh", "Qh", "Jh", "Th"] .iter() .map(|s| Card::str_to_card(s).unwrap()) .collect(); let cards = find_straight_flush(&royal).expect("Should find royal flush"); assert_eq!(cards.len(), 5); } #[test] fn test_straight_flush_from_7_cards() { let sf_7cards: Vec = ["9s", "8s", "7s", "6s", "5s", "Kd", "2c"] .iter() .map(|s| Card::str_to_card(s).unwrap()) .collect(); let cards = find_straight_flush(&sf_7cards).expect("Should find straight flush from 7 cards"); assert_eq!(cards.len(), 5); } #[test] fn test_wheel_straight_flush() { let wheel_sf: Vec = ["Ad", "2d", "3d", "4d", "5d"] .iter() .map(|s| Card::str_to_card(s).unwrap()) .collect(); let cards = find_straight_flush(&wheel_sf).expect("Should find wheel straight flush"); assert_eq!(cards.len(), 5); } #[test] fn test_flush_but_not_straight() { let flush_only: Vec = ["Ac", "Kc", "Qc", "Jc", "9c"] .iter() .map(|s| Card::str_to_card(s).unwrap()) .collect(); assert!(find_straight_flush(&flush_only).is_none(), "Flush without straight should not match"); } #[test] fn test_straight_but_not_flush() { let straight_only: Vec = ["9h", "8d", "7s", "6c", "5h"] .iter() .map(|s| Card::str_to_card(s).unwrap()) .collect(); assert!(find_straight_flush(&straight_only).is_none(), "Straight without flush should not match"); } #[test] fn test_no_straight_flush() { let no_sf: Vec = ["Ah", "Ks", "Qd", "Jc", "9h"] .iter() .map(|s| Card::str_to_card(s).unwrap()) .collect(); assert!(find_straight_flush(&no_sf).is_none(), "No straight flush in random cards"); }