rlifesrc-lib 0.2.0

A Game of Life pattern searcher.
Documentation
use rlifesrc_lib::{Config, Status, Symmetry, Transform};

#[test]
fn default() {
    let mut search = Config::default().set_world().unwrap();
    assert_eq!(search.search(None), Status::Found);
}

#[test]
fn not_found() {
    let config = Config::new(5, 5, 3);
    let mut search = config.set_world().unwrap();
    assert_eq!(search.search(None), Status::None);
}

#[test]
fn max_cell_count() {
    let config = Config::new(5, 5, 1).set_max_cell_count(Some(5));
    let mut search = config.set_world().unwrap();
    assert_eq!(search.search(None), Status::Found);
    search.set_max_cell_count(Some(3));
    assert_eq!(search.search(None), Status::None);
}

#[test]
fn reduce_max() {
    let config = Config::new(5, 5, 1)
        .set_max_cell_count(Some(5))
        .set_reduce_max(true);
    let mut search = config.set_world().unwrap();
    assert_eq!(search.search(None), Status::Found);
    assert_eq!(search.search(None), Status::None);
}

#[test]
fn p3_spaceship() {
    let config = Config::new(16, 5, 3).set_translate(0, 1);
    let mut search = config.set_world().unwrap();
    assert_eq!(search.search(None), Status::Found);
    assert_eq!(
        search.display_gen(0),
        String::from(
            "........O.......\n\
             .OO.OOO.OOO.....\n\
             .OO....O..OO.OO.\n\
             O..O.OO...O..OO.\n\
             ............O..O\n"
        )
    );
}

#[test]
fn lwss() {
    let config = Config::new(6, 6, 4).set_translate(0, 2);
    let mut search = config.set_world().unwrap();
    assert_eq!(search.search(None), Status::Found);
}

#[test]
fn lwss_flip() {
    let config = Config::new(5, 5, 2)
        .set_translate(0, 1)
        .set_transform(Transform::FlipCol);
    let mut search = config.set_world().unwrap();
    assert_eq!(search.search(None), Status::Found);
}

#[test]
fn turtle() {
    let config = Config::new(12, 13, 3)
        .set_translate(0, 1)
        .set_symmetry(Symmetry::D2Col);
    let mut search = config.set_world().unwrap();
    assert_eq!(search.search(None), Status::Found);
}