[board] Remove the intermediate String when building a diagram representation of a Position
Also ignore the tests in position::diagram_formatter::tests. These don't assert anything; they're just there for visual spot check.
This commit is contained in:
parent
72316ad5f5
commit
3c699b0b3d
1 changed files with 14 additions and 16 deletions
|
@ -1,7 +1,7 @@
|
|||
// Eryn Wells <eryn@erynwells.me>
|
||||
|
||||
use crate::{File, Position, Rank, Square};
|
||||
use std::{fmt, fmt::Write};
|
||||
use std::fmt;
|
||||
|
||||
pub struct DiagramFormatter<'a>(&'a Position);
|
||||
|
||||
|
@ -13,38 +13,36 @@ impl<'a> DiagramFormatter<'a> {
|
|||
|
||||
impl<'a> fmt::Display for DiagramFormatter<'a> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let mut output = String::new();
|
||||
|
||||
output.push_str(" +-----------------+\n");
|
||||
write!(f, " +-----------------+\n")?;
|
||||
|
||||
for rank in Rank::ALL.iter().rev() {
|
||||
write!(output, "{} | ", rank)?;
|
||||
write!(f, "{rank} | ")?;
|
||||
|
||||
for file in File::ALL.iter() {
|
||||
let square = Square::from_file_rank(*file, *rank);
|
||||
match self.0.piece_on_square(square) {
|
||||
Some(placed_piece) => write!(output, "{} ", placed_piece.piece())?,
|
||||
None => output.push_str(". "),
|
||||
Some(placed_piece) => write!(f, "{} ", placed_piece.piece())?,
|
||||
None => write!(f, ". ")?,
|
||||
}
|
||||
}
|
||||
|
||||
output.push_str("|\n");
|
||||
write!(f, "|\n")?;
|
||||
}
|
||||
|
||||
output.push_str(" +-----------------+\n");
|
||||
output.push_str(" a b c d e f g h\n");
|
||||
write!(f, " +-----------------+\n")?;
|
||||
write!(f, " a b c d e f g h\n")?;
|
||||
|
||||
write!(f, "{}", output)
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::piece::{Color, Piece};
|
||||
use crate::{Position, PositionBuilder};
|
||||
use crate::Position;
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn empty() {
|
||||
let pos = Position::empty();
|
||||
let diagram = DiagramFormatter(&pos);
|
||||
|
@ -52,15 +50,15 @@ mod tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn one_king() {
|
||||
let pos = PositionBuilder::new()
|
||||
.place_piece(piece!(Black King on H3))
|
||||
.build();
|
||||
let pos = position![Black King on H3];
|
||||
let diagram = DiagramFormatter(&pos);
|
||||
println!("{}", diagram);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn starting() {
|
||||
let pos = Position::starting();
|
||||
let diagram = DiagramFormatter(&pos);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue