#[allow(unused_imports)] use stackline::prelude::*; use stackline::signal; mod common; #[test] fn test_reader() { let mut world = load_test!("tests/storage/reader.json"); world.init(); world.set_signal((0, 0), signal!(Direction::Down, [0])); run!(world, 5); assert_stored!(world, 0, 1, signal!([0])); assert_no_stored!(world, 2, 0); world.set_signal((1, 2), signal!(Direction::Up, [-1])); run!(world, 5); assert_stored!(world, 2, 0, signal!([0])); world.set_signal((0, 0), signal!(Direction::Down, [1])); run!(world, 5); assert_stored!(world, 0, 1, signal!([1])); assert_stored!(world, 2, 0, signal!([0])); } #[test] fn test_counter() { let mut world = load_test!("tests/storage/counter.json"); world.init(); for n in 1..10 { world.set_signal((1, 3), signal!(Direction::Up)); println!("{}", world); run!(world, 11); assert_stored!(world, 0, 2, signal!([n])); } } #[test] fn test_natural() { for n in 1..10 { let mut world = load_test!("tests/storage/natural.json"); world.set_signal((0, 5), signal!()); world.init(); run!(world, n * 11 + 6); let mut signal = signal!(); for x in 0..n { signal.push(Value::Number(x.into())); } assert_stored!(world, 3, 4, signal); } }