tictactoe_llem/
lib.rs

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}