extern crate foundry; use foundry::view::View; use foundry::Grid; use std::fs; #[test] fn test_render() { let grid = Grid::from_file("tests/input_files/view_rendering.life").unwrap(); let mut view = View::new(&grid); println!("Grid:\n{}", grid); view.set_position(3, 2); view.set_width(4); view.set_height(3); let rendering = view.render(view.width() * 2, view.height() * 2); println!("Rendering:\n{}", format_rendering(&rendering, &view)); assert_eq!(0, rendering[0]); assert_eq!(0, rendering[1]); assert_eq!(255, rendering[2]); assert_eq!(255, rendering[3]); assert_eq!(255, rendering[4]); assert_eq!(255, rendering[5]); assert_eq!(255, rendering[6]); assert_eq!(255, rendering[7]); assert_eq!(0, rendering[8]); assert_eq!(0, rendering[9]); assert_eq!(255, rendering[10]); assert_eq!(255, rendering[11]); assert_eq!(255, rendering[12]); assert_eq!(255, rendering[13]); assert_eq!(255, rendering[14]); assert_eq!(255, rendering[15]); assert_eq!(0, rendering[16]); assert_eq!(0, rendering[17]); assert_eq!(0, rendering[18]); assert_eq!(0, rendering[19]); assert_eq!(255, rendering[20]); assert_eq!(255, rendering[21]); assert_eq!(0, rendering[22]); assert_eq!(0, rendering[23]); assert_eq!(0, rendering[24]); assert_eq!(0, rendering[25]); assert_eq!(0, rendering[26]); assert_eq!(0, rendering[27]); assert_eq!(255, rendering[28]); assert_eq!(255, rendering[29]); assert_eq!(0, rendering[30]); assert_eq!(0, rendering[31]); assert_eq!(0, rendering[32]); assert_eq!(0, rendering[33]); assert_eq!(0, rendering[34]); assert_eq!(0, rendering[35]); assert_eq!(255, rendering[36]); assert_eq!(255, rendering[37]); assert_eq!(0, rendering[38]); assert_eq!(0, rendering[39]); assert_eq!(0, rendering[40]); assert_eq!(0, rendering[41]); assert_eq!(0, rendering[42]); assert_eq!(0, rendering[43]); assert_eq!(255, rendering[44]); assert_eq!(255, rendering[45]); assert_eq!(0, rendering[46]); assert_eq!(0, rendering[47]); } fn format_rendering(r: &Vec, v: &View) -> String { let mut ret = String::new(); let mut idx = 0; for _ in 0..v.height() * 2 { for _ in 0..v.width() * 2 { if r[idx] != 0 { ret.push_str("*"); } else { ret.push_str("."); } idx += 1; } ret.push_str("\n"); } ret }