hext-boards 0.4.0

A small library that renders hexagonal boards with text on the terminal
Documentation
#![cfg(test)]

use super::*;
use indoc::indoc;
use pretty_assertions::assert_eq;

#[test]
fn display() {
    let board =
        HexagonalBoard::from([([0, 0], 'a'), ([1, 0], 'b'), ([0, 1], 'c'), ([-1, -1], 'd')]);

    let output = format!("{board}");
    let expected = indoc!(
        r"
             /---\     /---\
            ⟨  b  ⟩---⟨  c  ⟩
             \---⟨  a  ⟩---/
                  ⟩---⟨
                 ⟨  d  ⟩
                  \---/
        "
    );

    println!("{output}");
    println!("{expected}");

    for (output, expected) in output.split('\n').zip(expected.split('\n')) {
        for (output, expected) in expected.chars().zip(output.chars()) {
            assert_eq!(output, expected)
        }
    }
}

#[test]
fn single() {
    let board = HexagonalBoard::from([([0, 0], 'a')]);

    print!("{board}");

    let expected = indoc!(
        r"
             /---\ 
            ⟨  a  ⟩
             \---/ 
        "
    ).trim_end_matches('\n');

    assert_eq!(board.render(), expected);
}

#[test]
fn four() {
    let board =
        HexagonalBoard::from([([0, 0], 'a'), ([1, 0], 'b'), ([0, 1], 'c'), ([-1, -1], 'd')]);

    let expected = indoc!(
        r"
             /---\     /---\ 
            ⟨  b  ⟩---⟨  c  ⟩
             \---⟨  a  ⟩---/ 
                  ⟩---⟨      
                 ⟨  d  ⟩     
                  \---/      
        "
    ).trim_end_matches('\n');

    assert_eq!(board.render(), expected);
}

#[test]
fn empty_center() {
    let board = HexagonalBoard::from([([1, 1], 't'), ([-1, -1], 'b')]);

    let expected = indoc!(
        r"
             /---\ 
            ⟨  t  ⟩
             \---/ 
                   
             /---\ 
            ⟨  b  ⟩
             \---/ 
        "
    ).trim_end_matches('\n');

    assert_eq!(board.render(), expected);
}