Skip to content

Commit 1ad0730

Browse files
committed
tests for Abort instruction
1 parent cc15bb3 commit 1ad0730

File tree

1 file changed

+31
-0
lines changed
  • crates/move-bytecode-verifier/src/type_safety_tests

1 file changed

+31
-0
lines changed

crates/move-bytecode-verifier/src/type_safety_tests/mod.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,34 @@ fn test_br_false_no_arg() {
108108
let _result = type_safety::verify(&module, &fun_context, &mut DummyMeter);
109109
}
110110

111+
112+
#[test]
113+
fn test_abort_correct_type() {
114+
let code = vec![Bytecode::LdU64(0), Bytecode::Abort];
115+
let module = make_module(code);
116+
let fun_context = get_fun_context(&module);
117+
let result = type_safety::verify(&module, &fun_context, &mut DummyMeter);
118+
assert!(result.is_ok());
119+
}
120+
121+
122+
#[test]
123+
fn test_abort_wrong_type() {
124+
let code = vec![Bytecode::LdU32(0), Bytecode::Abort];
125+
let module = make_module(code);
126+
let fun_context = get_fun_context(&module);
127+
let result = type_safety::verify(&module, &fun_context, &mut DummyMeter);
128+
assert_eq!(
129+
result.unwrap_err().major_status(),
130+
StatusCode::ABORT_TYPE_MISMATCH_ERROR
131+
);
132+
}
133+
134+
#[test]
135+
#[should_panic]
136+
fn test_abort_no_arg() {
137+
let code = vec![Bytecode::Abort];
138+
let module = make_module(code);
139+
let fun_context = get_fun_context(&module);
140+
let _result = type_safety::verify(&module, &fun_context, &mut DummyMeter);
141+
}

0 commit comments

Comments
 (0)