Skip to content

Commit

Permalink
Add tests to player module
Browse files Browse the repository at this point in the history
  • Loading branch information
kimpors committed Jan 27, 2024
1 parent 82a6359 commit f916acc
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 35 deletions.
58 changes: 29 additions & 29 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,43 +118,43 @@ mod test {
assert_eq!(cases[2].0, cases[2].1);
assert_eq!(cases[3].0, cases[3].1);
}
}

fn cases() -> Vec<(String, String)> {
let case1 = Game::new();
fn cases() -> Vec<(String, String)> {
let case1 = Game::new();

let case2 = Game::build_with()
.field(vec![vec!['1', 'x', '3'],
vec!['4', 'x', '6'],
vec!['7', 'x', '9']]).build();
let case2 = Game::build_with()
.field(vec![vec!['1', 'x', '3'],
vec!['4', 'x', '6'],
vec!['7', 'x', '9']]).build();

let case3 = Game::build_with()
.field(vec![vec!['1', '2', '3'],
vec!['o', 'o', 'o'],
vec!['7', '8', '9']]).build();
let case3 = Game::build_with()
.field(vec![vec!['1', '2', '3'],
vec!['o', 'o', 'o'],
vec!['7', '8', '9']]).build();

let case4 = Game::build_with()
.field(vec![vec!['x', '2', 'o'],
vec!['4', 'o', '6'],
vec!['o', '8', 'x']]).build();
let case4 = Game::build_with()
.field(vec![vec!['x', '2', 'o'],
vec!['4', 'o', '6'],
vec!['o', '8', 'x']]).build();

let underline = "-".repeat(13);
let underline = "-".repeat(13);

let case1 = (case1.to_string(), format!(" 1 | 2 | 3 \n{underline}\n \
4 | 5 | 6 \n{underline}\n \
7 | 8 | 9 \n{underline}\n"));
let case1 = (case1.to_string(), format!(" 1 | 2 | 3 \n{underline}\n \
4 | 5 | 6 \n{underline}\n \
7 | 8 | 9 \n{underline}\n"));

let case2 = (case2.to_string(), format!(" 1 | x | 3 \n{underline}\n \
4 | x | 6 \n{underline}\n \
7 | x | 9 \n{underline}\n"));
let case2 = (case2.to_string(), format!(" 1 | x | 3 \n{underline}\n \
4 | x | 6 \n{underline}\n \
7 | x | 9 \n{underline}\n"));

let case3 = (case3.to_string(), format!(" 1 | 2 | 3 \n{underline}\n \
o | o | o \n{underline}\n \
7 | 8 | 9 \n{underline}\n"));
let case3 = (case3.to_string(), format!(" 1 | 2 | 3 \n{underline}\n \
o | o | o \n{underline}\n \
7 | 8 | 9 \n{underline}\n"));

let case4 = (case4.to_string(), format!(" x | 2 | o \n{underline}\n \
4 | o | 6 \n{underline}\n \
o | 8 | x \n{underline}\n"));
let case4 = (case4.to_string(), format!(" x | 2 | o \n{underline}\n \
4 | o | 6 \n{underline}\n \
o | 8 | x \n{underline}\n"));

return vec![case1, case2, case3, case4];
return vec![case1, case2, case3, case4];
}
}
56 changes: 55 additions & 1 deletion src/player.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,62 @@ fn move_bot(game: &mut Game) -> Result<(), &'static str> {

#[cfg(test)]
mod test {
use super::*;

#[test]
fn bot_move() {
assert!(true);
let bot = Type::Bot;
let mut cases = cases();

let _ = bot.r#move(&mut cases[0].0);
assert_eq!(cases[0].0.to_string(), cases[0].1);

let _ = bot.r#move(&mut cases[1].0);
assert_eq!(cases[1].0.to_string(), cases[1].1);

let _ = bot.r#move(&mut cases[2].0);
assert_eq!(cases[2].0.to_string(), cases[2].1);

let _ = bot.r#move(&mut cases[3].0);
assert_eq!(cases[3].0.to_string(), cases[3].1);
}

fn cases() -> Vec<(Game, String)> {
let case1 = Game::new();

let case2 = Game::build_with()
.field(vec![vec!['1', 'x', '3'],
vec!['4', 'o', 'o'],
vec!['x', 'x', '9']]).build();

let case3 = Game::build_with()
.field(vec![vec!['o', 'x', 'x'],
vec!['4', 'x', 'o'],
vec!['7', '8', '9']]).build();

let case4 = Game::build_with()
.field(vec![vec!['x', 'x', 'o'],
vec!['4', 'o', '6'],
vec!['7', '8', 'x']]).build();

let underline = "-".repeat(13);

let case1 = (case1, format!(" 1 | 2 | 3 \n{underline}\n \
4 | o | 6 \n{underline}\n \
7 | 8 | 9 \n{underline}\n"));

let case2 = (case2, format!(" 1 | x | 3 \n{underline}\n \
o | o | o \n{underline}\n \
x | x | 9 \n{underline}\n"));

let case3 = (case3, format!(" o | x | x \n{underline}\n \
o | x | o \n{underline}\n \
7 | 8 | 9 \n{underline}\n"));

let case4 = (case4, format!(" x | x | o \n{underline}\n \
4 | o | 6 \n{underline}\n \
o | 8 | x \n{underline}\n"));

return vec![case1, case2, case3, case4];
}
}
15 changes: 10 additions & 5 deletions src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@ mod test {
fn game_state() {
let cases = cases();

assert_eq!(State::None, State::calculate(&cases[0]));
assert_eq!(State::Win, State::calculate(&cases[1]));
assert_eq!(State::Lose, State::calculate(&cases[2]));
assert_eq!(State::Draw, State::calculate(&cases[3]));
assert_eq!(cases[0].0, cases[0].1);
assert_eq!(cases[1].0, cases[1].1);
assert_eq!(cases[2].0, cases[2].1);
assert_eq!(cases[3].0, cases[3].1);
}

#[test]
Expand All @@ -92,7 +92,7 @@ mod test {
assert_eq!(State::None.to_string(), "");
}

fn cases() -> Vec<Game> {
fn cases() -> Vec<(State, State)> {
let case1 = Game::new();

let case2 = Game::build_with()
Expand All @@ -113,6 +113,11 @@ mod test {
vec!['x', 'o', 'x']]).build();


let case1 = (State::None, State::calculate(&case1));
let case2 = (State::Win, State::calculate(&case2));
let case3 = (State::Lose, State::calculate(&case3));
let case4 = (State::Draw, State::calculate(&case4));

return vec![case1, case2, case3, case4];
}
}

0 comments on commit f916acc

Please sign in to comment.