extern crate foundry;
use foundry::Grid;
use std::fs;
#[test]
fn test_toroidal_load_file() {
let grid = Grid::from_file("tests/input_files/sanity_check_toroidal.life").unwrap();
assert_eq!("#Toroidal Life", grid.get_format());
assert_eq!(true, grid.is_toroidal());
assert_eq!(vec![2, 3], grid.get_survival());
assert_eq!(vec![3], grid.get_birth());
assert_eq!((5, 5), grid.get_grid_size());
assert_eq!(0, grid.get_cell_state(0, 0));
assert_eq!(0, grid.get_cell_state(0, 1));
assert_eq!(0, grid.get_cell_state(0, 2));
assert_eq!(0, grid.get_cell_state(0, 3));
assert_eq!(0, grid.get_cell_state(0, 4));
assert_eq!(0, grid.get_cell_state(1, 0));
assert_eq!(0, grid.get_cell_state(1, 1));
assert_eq!(0, grid.get_cell_state(1, 2));
assert_eq!(0, grid.get_cell_state(1, 3));
assert_eq!(0, grid.get_cell_state(1, 4));
assert_eq!(0, grid.get_cell_state(2, 0));
assert_eq!(255, grid.get_cell_state(2, 1));
assert_eq!(255, grid.get_cell_state(2, 2));
assert_eq!(255, grid.get_cell_state(2, 3));
assert_eq!(0, grid.get_cell_state(2, 4));
assert_eq!(0, grid.get_cell_state(3, 0));
assert_eq!(0, grid.get_cell_state(3, 1));
assert_eq!(0, grid.get_cell_state(3, 2));
assert_eq!(0, grid.get_cell_state(3, 3));
assert_eq!(0, grid.get_cell_state(3, 4));
assert_eq!(0, grid.get_cell_state(4, 0));
assert_eq!(0, grid.get_cell_state(4, 1));
assert_eq!(0, grid.get_cell_state(4, 2));
assert_eq!(0, grid.get_cell_state(4, 3));
assert_eq!(0, grid.get_cell_state(4, 4));
}
#[test]
fn test_toroidal_next_gen() {
let mut grid = Grid::from_file("tests/input_files/sanity_check_toroidal.life").unwrap();
grid.next_gen();
assert_eq!("#Toroidal Life", grid.get_format());
assert_eq!(true, grid.is_toroidal());
assert_eq!(vec![2, 3], grid.get_survival());
assert_eq!(vec![3], grid.get_birth());
assert_eq!((5, 5), grid.get_grid_size());
assert_eq!(0, grid.get_cell_state(0, 0));
assert_eq!(0, grid.get_cell_state(0, 1));
assert_eq!(0, grid.get_cell_state(0, 2));
assert_eq!(0, grid.get_cell_state(0, 3));
assert_eq!(0, grid.get_cell_state(0, 4));
assert_eq!(0, grid.get_cell_state(1, 0));
assert_eq!(0, grid.get_cell_state(1, 1));
assert_eq!(255, grid.get_cell_state(1, 2));
assert_eq!(0, grid.get_cell_state(1, 3));
assert_eq!(0, grid.get_cell_state(1, 4));
assert_eq!(0, grid.get_cell_state(2, 0));
assert_eq!(0, grid.get_cell_state(2, 1));
assert_eq!(255, grid.get_cell_state(2, 2));
assert_eq!(0, grid.get_cell_state(2, 3));
assert_eq!(0, grid.get_cell_state(2, 4));
assert_eq!(0, grid.get_cell_state(3, 0));
assert_eq!(0, grid.get_cell_state(3, 1));
assert_eq!(255, grid.get_cell_state(3, 2));
assert_eq!(0, grid.get_cell_state(3, 3));
assert_eq!(0, grid.get_cell_state(3, 4));
assert_eq!(0, grid.get_cell_state(4, 0));
assert_eq!(0, grid.get_cell_state(4, 1));
assert_eq!(0, grid.get_cell_state(4, 2));
assert_eq!(0, grid.get_cell_state(4, 3));
assert_eq!(0, grid.get_cell_state(4, 4));
}
#[test]
fn test_toroidal_save_file() {
let mut grid = Grid::from_file("tests/input_files/sanity_check_toroidal.life").unwrap();
grid.next_gen();
grid.save_life_grid("tests/output_files/sanity_check_toroidal.life")
.unwrap();
let expected_result =
fs::read_to_string("tests/output_files/sanity_check_toroidal_expected.life").unwrap();
let actual_result =
fs::read_to_string("tests/output_files/sanity_check_toroidal.life").unwrap();
assert_eq!(expected_result, actual_result);
fs::remove_file("tests/output_files/sanity_check_toroidal.life").unwrap();
}
#[test]
fn test_resizable_load_file() {
let grid = Grid::from_file("tests/input_files/sanity_check_resizable.life").unwrap();
assert_eq!("#Resizable Life", grid.get_format());
assert_eq!(false, grid.is_toroidal());
assert_eq!(vec![2, 3], grid.get_survival());
assert_eq!(vec![3], grid.get_birth());
assert_eq!((3, 5), grid.get_grid_size());
assert_eq!(255, grid.get_cell_state(0, 0));
assert_eq!(255, grid.get_cell_state(0, 1));
assert_eq!(255, grid.get_cell_state(0, 2));
assert_eq!(0, grid.get_cell_state(0, 3));
assert_eq!(0, grid.get_cell_state(0, 4));
assert_eq!(0, grid.get_cell_state(1, 0));
assert_eq!(0, grid.get_cell_state(1, 1));
assert_eq!(0, grid.get_cell_state(1, 2));
assert_eq!(0, grid.get_cell_state(1, 3));
assert_eq!(0, grid.get_cell_state(1, 4));
assert_eq!(0, grid.get_cell_state(2, 0));
assert_eq!(0, grid.get_cell_state(2, 1));
assert_eq!(0, grid.get_cell_state(2, 2));
assert_eq!(0, grid.get_cell_state(2, 3));
assert_eq!(0, grid.get_cell_state(2, 4));
}
#[test]
fn test_resizable_next_gen() {
let mut grid = Grid::from_file("tests/input_files/sanity_check_resizable.life").unwrap();
grid.next_gen();
assert_eq!("#Resizable Life", grid.get_format());
assert_eq!(false, grid.is_toroidal());
assert_eq!(vec![2, 3], grid.get_survival());
assert_eq!(vec![3], grid.get_birth());
assert_eq!((3, 5), grid.get_grid_size());
assert_eq!(0, grid.get_cell_state(0, 0));
assert_eq!(0, grid.get_cell_state(0, 1));
assert_eq!(255, grid.get_cell_state(0, 2));
assert_eq!(0, grid.get_cell_state(0, 3));
assert_eq!(0, grid.get_cell_state(0, 4));
assert_eq!(0, grid.get_cell_state(0, 5));
assert_eq!(0, grid.get_cell_state(0, 6));
assert_eq!(0, grid.get_cell_state(1, 0));
assert_eq!(0, grid.get_cell_state(1, 1));
assert_eq!(255, grid.get_cell_state(1, 2));
assert_eq!(0, grid.get_cell_state(1, 3));
assert_eq!(0, grid.get_cell_state(1, 4));
assert_eq!(0, grid.get_cell_state(1, 5));
assert_eq!(0, grid.get_cell_state(1, 6));
assert_eq!(0, grid.get_cell_state(2, 0));
assert_eq!(0, grid.get_cell_state(2, 1));
assert_eq!(255, grid.get_cell_state(2, 2));
assert_eq!(0, grid.get_cell_state(2, 3));
assert_eq!(0, grid.get_cell_state(2, 4));
assert_eq!(0, grid.get_cell_state(2, 5));
assert_eq!(0, grid.get_cell_state(2, 6));
assert_eq!(0, grid.get_cell_state(3, 0));
assert_eq!(0, grid.get_cell_state(3, 1));
assert_eq!(0, grid.get_cell_state(3, 2));
assert_eq!(0, grid.get_cell_state(3, 3));
assert_eq!(0, grid.get_cell_state(3, 4));
assert_eq!(0, grid.get_cell_state(3, 5));
assert_eq!(0, grid.get_cell_state(3, 6));
assert_eq!(0, grid.get_cell_state(4, 0));
assert_eq!(0, grid.get_cell_state(4, 1));
assert_eq!(0, grid.get_cell_state(4, 2));
assert_eq!(0, grid.get_cell_state(4, 3));
assert_eq!(0, grid.get_cell_state(4, 4));
assert_eq!(0, grid.get_cell_state(4, 5));
assert_eq!(0, grid.get_cell_state(4, 6));
}
#[test]
fn test_resizable_save_file() {
let mut grid = Grid::from_file("tests/input_files/sanity_check_resizable.life").unwrap();
grid.next_gen();
grid.save_life_grid("tests/output_files/sanity_check_resizable.life")
.unwrap();
let expected_result =
fs::read_to_string("tests/output_files/sanity_check_resizable_expected.life").unwrap();
let actual_result =
fs::read_to_string("tests/output_files/sanity_check_resizable.life").unwrap();
assert_eq!(expected_result, actual_result);
fs::remove_file("tests/output_files/sanity_check_resizable.life").unwrap();
}