extern crate rustijvm; fn steps(machine: &mut rustijvm::Machine, num: usize) { for _ in 0..num { machine.step().unwrap(); } } #[test] fn advancedstack_100() { let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap(); steps(&mut machine, 1); steps(&mut machine, 2 * 100); assert_eq!(machine.get_tos(), Ok(0x2)); } #[test] fn advancedstack_3000() { let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap(); steps(&mut machine, 1); steps(&mut machine, 2 * 3000); assert_eq!(machine.get_tos(), Ok(0x2)); } #[test] fn advancedstack_50000() { let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap(); steps(&mut machine, 1); steps(&mut machine, 2 * 50000); assert_eq!(machine.get_tos(), Ok(0x2)); } #[test] fn advancedstack_contents() { let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap(); steps(&mut machine, 1); steps(&mut machine, 2 * 100); let stack = machine.cur_stack(); let size = stack.len(); assert!(size >= 100); let markers = (0..size).filter(|i| { stack.get(*i) == 0x2 }).count(); assert!(markers >= 99); } #[test] fn advancedstack_method() { let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack2.ijvm").unwrap(); steps(&mut machine, 8); { let stack = machine.cur_stack(); let markers = (0..stack.len()).filter(|i| { stack.get(*i) == 0x2 }).count(); assert_eq!(markers, 4); } steps(&mut machine, 1); steps(&mut machine, 2 * 5000); { let stack = machine.cur_stack(); let markers = (0..stack.len()).filter(|i| { stack.get(*i) == 0x2 }).count(); assert!(markers > 4000); } }