1#![no_std]
2pub mod constants;
3mod square;
4mod board;
5pub use board::board_manager;
6
7
8pub struct Move
9{
10 pub row: usize,
11 pub column: usize,
12}
13
14impl Move
15{
16 pub fn new(row: usize, column: usize) -> Self
17 {
18 Move{row, column}
19 }
20}
21
22
23
24#[cfg(test)]
25mod tests
26{
27 use crate::board::board::Board;
28 use crate::board_manager::GameState;
29 use crate::square::square_state::SquareState;
30 use crate::board::board_analyzer::analyze_grid_state;
31 use crate::board_manager::Player;
32
33 #[test]
34 fn test_vertical()
35 {
36 let mut g = Board::default();
37 g.set_value_at_index(0, 0, SquareState::X).unwrap();
38 g.set_value_at_index(1, 0, SquareState::X).unwrap();
39 g.set_value_at_index(2, 0, SquareState::X).unwrap();
40
41 let res = analyze_grid_state(g.get_grid());
42 assert_eq!(res, GameState::Winner(Player::PlayerX));
43 }
44
45
46 #[test]
47 fn test_horizontal()
48 {
49 let mut g = Board::default();
50 g.set_value_at_index(0, 0, SquareState::X).unwrap();
51 g.set_value_at_index(0, 1, SquareState::X).unwrap();
52 g.set_value_at_index(0, 2, SquareState::X).unwrap();
53
54 let res = analyze_grid_state(g.get_grid());
55 assert_eq!(res, GameState::Winner(Player::PlayerX));
56 }
57
58 #[test]
59 fn test_diagnol()
60 {
61 let mut g = Board::default();
62 g.set_value_at_index(0, 0, SquareState::X).unwrap();
63 g.set_value_at_index(1, 1, SquareState::X).unwrap();
64 g.set_value_at_index(2, 2, SquareState::X).unwrap();
65
66 let res = analyze_grid_state(g.get_grid());
67 assert_eq!(res, GameState::Winner(Player::PlayerX));
68 }
69
70}