chess_turn_engine/game/
availableturn.rs1use std::fmt;
2
3pub struct AvailableTurn {
11 pub src: String,
13
14 pub dst: String,
16
17 pub piece: String,
19
20 pub captured: Option<String>,
22
23 turn: String,
25}
26
27impl fmt::Display for AvailableTurn {
28 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
29 write!(
30 f,
31 "AvailableTurn (src: {}, dst: {}, piece: {}, captured: {:?}, \
32 turn: {}",
33 self.src, self.dst, self.piece, self.captured, self.turn
34 )
35 }
36}
37
38impl AvailableTurn {
39 pub fn new(
41 src: String,
42 dst: String,
43 piece: String,
44 captured: Option<String>,
45 turn: String,
46 ) -> AvailableTurn {
47 Self {
48 src,
49 dst,
50 piece,
51 captured,
52 turn,
53 }
54 }
55
56 pub fn get_turn(&self) -> &str {
61 self.turn.as_str()
62 }
63}
64
65#[cfg(test)]
66mod tests {
67 use super::*;
68
69 #[test]
70 fn print() {
71 let src = String::from("a2");
72 let dst = String::from("a3");
73 let turn = String::from("a3");
74 let piece = String::from("Pawn");
75 let captured: Option<String> = None;
76
77 assert_eq!(
78 format!(
79 "AvailableTurn (src: {}, dst: {}, piece: {}, captured: {:?}, \
80 turn: {}",
81 src, dst, piece, captured, turn
82 ),
83 AvailableTurn::new(
84 src.clone(),
85 dst.clone(),
86 piece,
87 captured,
88 turn.clone()
89 )
90 .to_string()
91 );
92 }
93}