cgol-tui 0.6.10

Conway's Game of Life implementation with a TUI
use super::*;

#[test]
fn frame_test00() {
    let area = Area::new(3, 2);
    let univ = Universe::from_str("...\n...").unwrap().with_name("frame");
    let frame = frame(area);
    print!("{frame}");
    assert_eq!(univ, frame);
}
#[test]
fn frame_test0() {
    let area = Area::new(3, 3);
    let univ = Universe::from_str("...\n.O.\n...")
        .unwrap()
        .with_name("frame");
    let frame = frame(area);
    print!("{frame}");
    assert_eq!(univ, frame);
}
#[test]
fn frame_test1() {
    let area = Area::new(4, 4);
    let univ = Universe::from_str(
        "\
....
.OO.
.OO.
....",
    )
    .unwrap()
    .with_name("frame");
    let frame = frame(area);
    print!("{frame}");
    assert_eq!(univ, frame);
}
#[test]
fn frame_test2() {
    let area = Area::new(5, 5);
    let univ = Universe::from_str(
        "\
.....
.OOO.
.O.O.
.OOO.
.....",
    )
    .unwrap()
    .with_name("frame");
    let frame = frame(area);
    print!("{frame}");
    assert_eq!(univ, frame);
}
#[test]
fn frame_test3() {
    let area = Area::new(6, 6);
    let univ = Universe::from_str(
        "\
......
.OOOO.
.O..O.
.O..O.
.OOOO.
......",
    )
    .unwrap()
    .with_name("frame");
    let frame = frame(area);
    print!("{frame}");
    assert_eq!(univ, frame);
}

#[test]
fn glider_test() {
    let area = Area::new(3, 3);
    let m = Universe::from_str(GLIDER).unwrap();
    assert_eq!(m.area, area);
    dbg!(&m);
    let alive = [(0u8, 2u8), (1u8, 0u8), (1u8, 2u8), (2u8, 1u8), (2u8, 2u8)];
    for alive_cell in alive {
        dbg!(alive_cell);
        assert_eq!(m[alive_cell], Cell::Alive);
    }
}

#[test]
fn rabbits_test() {
    let area = Area::new(8, 4);
    let m = Universe::from_str(RABBITS).unwrap();
    assert_eq!(m.area, area);
    dbg!(&m);
    let alive = [
        (0u8, 0u8),
        (0u8, 6u8),
        (1u8, 2u8),
        (1u8, 6u8),
        (2u8, 2u8),
        (2u8, 5u8),
        (2u8, 7u8),
        (3u8, 1u8),
        (3u8, 3u8),
    ];
    for alive_cell in alive {
        dbg!(alive_cell);
        assert_eq!(m[alive_cell], Cell::Alive);
    }
}
#[test]
fn bonk_tie_test() {
    let area = Area::new(3, 5);
    let m = Universe::from_str(BONK_TIE).unwrap();
    assert_eq!(m.area, area);
    dbg!(&m);
    let alive = [
        (0u8, 0u8),
        (0u8, 1u8),
        (1u8, 0u8),
        (1u8, 1u8),
        (2u8, 2u8),
        (3u8, 2u8),
        (4u8, 2u8),
    ];
    for alive_cell in alive {
        dbg!(alive_cell);
        assert_eq!(m[alive_cell], Cell::Alive);
    }
}

#[test]
fn acorn_test() {
    let area = Area::new(7, 3);
    let m = Universe::from_str(ACORN).unwrap();
    assert_eq!(m.area, area);
    dbg!(&m);
    let alive = [
        (0u8, 1u8),
        (1u8, 3u8),
        (2u8, 0u8),
        (2u8, 1u8),
        (2u8, 4u8),
        (2u8, 5u8),
        (2u8, 6u8),
    ];
    for alive_cell in alive {
        dbg!(alive_cell);
        assert_eq!(m[alive_cell], Cell::Alive);
    }
}
#[test]
fn stripes_test() {
    let area = Area::new(0, 0);
    let m = stripes(area);
    assert!(m.cells.is_empty());
    assert_eq!(m.area, area);
    dbg!(&m);
}
#[test]
fn full_test() {
    let area = Area::new(4, 3);
    let m = full(area);
    assert_eq!(m.area, area);
    assert!(m.cells.iter().all(|j| *j == Cell::Alive));
    dbg!(&m);
    for i in 0..m.height() - 1 {
        for j in 0..m.width() - 1 {
            dbg!((i, j));
            assert_eq!(m[(i, j)], Cell::Alive);
        }
    }
}