Skip to content

Commit cc15bb3

Browse files
committed
add tests for BrFalse instruction
1 parent 7259a0b commit cc15bb3

File tree

1 file changed

+35
-2
lines changed
  • crates/move-bytecode-verifier/src/type_safety_tests

1 file changed

+35
-2
lines changed

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

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,9 @@ fn get_fun_context(module: &CompiledModule) -> FunctionContext {
4646
)
4747
}
4848

49+
4950
#[test]
50-
fn test_br_true_bool() {
51+
fn test_br_true_correct_type() {
5152
let code = vec![Bytecode::LdTrue, Bytecode::BrTrue(0)];
5253
let module = make_module(code);
5354
let fun_context = get_fun_context(&module);
@@ -56,7 +57,7 @@ fn test_br_true_bool() {
5657
}
5758

5859
#[test]
59-
fn test_br_true_u32() {
60+
fn test_br_true_wrong_type() {
6061
let code = vec![Bytecode::LdU32(0), Bytecode::BrTrue(0)];
6162
let module = make_module(code);
6263
let fun_context = get_fun_context(&module);
@@ -75,3 +76,35 @@ fn test_br_true_no_arg() {
7576
let fun_context = get_fun_context(&module);
7677
let _result = type_safety::verify(&module, &fun_context, &mut DummyMeter);
7778
}
79+
80+
81+
#[test]
82+
fn test_br_false_correct_type() {
83+
let code = vec![Bytecode::LdTrue, Bytecode::BrFalse(0)];
84+
let module = make_module(code);
85+
let fun_context = get_fun_context(&module);
86+
let result = type_safety::verify(&module, &fun_context, &mut DummyMeter);
87+
assert!(result.is_ok());
88+
}
89+
90+
#[test]
91+
fn test_br_false_wrong_type() {
92+
let code = vec![Bytecode::LdU32(0), Bytecode::BrFalse(0)];
93+
let module = make_module(code);
94+
let fun_context = get_fun_context(&module);
95+
let result = type_safety::verify(&module, &fun_context, &mut DummyMeter);
96+
assert_eq!(
97+
result.unwrap_err().major_status(),
98+
StatusCode::BR_TYPE_MISMATCH_ERROR
99+
);
100+
}
101+
102+
#[test]
103+
#[should_panic]
104+
fn test_br_false_no_arg() {
105+
let code = vec![Bytecode::BrFalse(0)];
106+
let module = make_module(code);
107+
let fun_context = get_fun_context(&module);
108+
let _result = type_safety::verify(&module, &fun_context, &mut DummyMeter);
109+
}
110+

0 commit comments

Comments
 (0)