back_end: Fix bug where CyanWin is MagentaWin
This commit is contained in:
parent
6b430660b7
commit
e0ed5fc5d8
1 changed files with 47 additions and 1 deletions
|
@ -528,9 +528,11 @@ pub fn string_from_board(board: BoardType, placed: usize) -> (String, Option<Boa
|
||||||
if is_full && win_set.is_empty() {
|
if is_full && win_set.is_empty() {
|
||||||
(board_string, Some(BoardState::Empty))
|
(board_string, Some(BoardState::Empty))
|
||||||
} else if !win_set.is_empty() {
|
} else if !win_set.is_empty() {
|
||||||
|
let winning_char: char =
|
||||||
|
board_string.chars().collect::<Vec<char>>()[*win_set.iter().next().unwrap()];
|
||||||
(
|
(
|
||||||
board_string.clone(),
|
board_string.clone(),
|
||||||
if board_string.chars().collect::<Vec<char>>()[*win_set.iter().next().unwrap()] == 'd' {
|
if winning_char == 'd' || winning_char == 'h' {
|
||||||
Some(BoardState::CyanWin)
|
Some(BoardState::CyanWin)
|
||||||
} else {
|
} else {
|
||||||
Some(BoardState::MagentaWin)
|
Some(BoardState::MagentaWin)
|
||||||
|
@ -616,4 +618,48 @@ mod tests {
|
||||||
};
|
};
|
||||||
assert!(state.is_networked_multiplayer());
|
assert!(state.is_networked_multiplayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_board_string() {
|
||||||
|
let board = new_empty_board();
|
||||||
|
board[49].set(BoardState::Cyan);
|
||||||
|
board[51].set(BoardState::Cyan);
|
||||||
|
board[52].set(BoardState::Cyan);
|
||||||
|
board[53].set(BoardState::Cyan);
|
||||||
|
board[54].set(BoardState::Cyan);
|
||||||
|
board[55].set(BoardState::Magenta);
|
||||||
|
|
||||||
|
let (board_string, state_opt) = string_from_board(board.clone(), 51);
|
||||||
|
|
||||||
|
let board_chars: Vec<char> = board_string.chars().collect();
|
||||||
|
assert_eq!(board_chars[49], 'b');
|
||||||
|
assert_eq!(board_chars[50], 'a');
|
||||||
|
assert_eq!(board_chars[51], 'h');
|
||||||
|
assert_eq!(board_chars[52], 'd');
|
||||||
|
assert_eq!(board_chars[53], 'd');
|
||||||
|
assert_eq!(board_chars[54], 'd');
|
||||||
|
assert_eq!(board_chars[55], 'c');
|
||||||
|
|
||||||
|
assert_eq!(state_opt, Some(BoardState::CyanWin));
|
||||||
|
|
||||||
|
board[49].set(BoardState::Magenta);
|
||||||
|
board[51].set(BoardState::Magenta);
|
||||||
|
board[52].set(BoardState::Magenta);
|
||||||
|
board[53].set(BoardState::Magenta);
|
||||||
|
board[54].set(BoardState::Magenta);
|
||||||
|
board[55].set(BoardState::Cyan);
|
||||||
|
|
||||||
|
let (board_string, state_opt) = string_from_board(board.clone(), 51);
|
||||||
|
|
||||||
|
let board_chars: Vec<char> = board_string.chars().collect();
|
||||||
|
assert_eq!(board_chars[49], 'c');
|
||||||
|
assert_eq!(board_chars[50], 'a');
|
||||||
|
assert_eq!(board_chars[51], 'i');
|
||||||
|
assert_eq!(board_chars[52], 'e');
|
||||||
|
assert_eq!(board_chars[53], 'e');
|
||||||
|
assert_eq!(board_chars[54], 'e');
|
||||||
|
assert_eq!(board_chars[55], 'b');
|
||||||
|
|
||||||
|
assert_eq!(state_opt, Some(BoardState::MagentaWin));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue