use crate::{Effect, Eval, Script};
#[test]
fn copy() {
let script = Script::compile("3 5 8 1 copy");
let mut eval = Eval::new();
let (effect, _) = eval.run(&script);
assert_eq!(effect, Effect::OutOfOperators);
assert_eq!(eval.operand_stack.to_u32_slice(), &[3, 5, 8, 5]);
}
#[test]
fn copy_trigger_effect_on_invalid_index() {
let script = Script::compile("0 copy");
let mut eval = Eval::new();
let (effect, _) = eval.run(&script);
assert_eq!(effect, Effect::InvalidOperandStackIndex);
assert_eq!(eval.operand_stack.to_u32_slice(), &[]);
}
#[test]
fn drop() {
let script = Script::compile("3 5 8 1 drop");
let mut eval = Eval::new();
let (effect, _) = eval.run(&script);
assert_eq!(effect, Effect::OutOfOperators);
assert_eq!(eval.operand_stack.to_u32_slice(), &[3, 8]);
}