Skip to content

Commit

Permalink
Tests cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
lrubasze committed Jan 24, 2025
1 parent 338d7ed commit db73ae3
Showing 1 changed file with 100 additions and 197 deletions.
297 changes: 100 additions & 197 deletions radix-engine-tests/tests/vm/wasm_non_mvp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,215 +207,118 @@ mod multi_value {
}

#[test]
fn test_wasm_non_mvp_multi_value_if_return_multiple_values_dugong_success() {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_if_return_multiple_values.wat")
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Dugong);
let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
let package_address = receipt.expect_commit(true).new_package_addresses()[0];

// Act
let receipt = manifest_execute_test_function!(ledger, package_address);

// Assert
let outcome: i32 = receipt.expect_commit(true).output(1);
assert_eq!(outcome, 30);
}

#[test]
fn test_wasm_non_mvp_multi_value_loop_return_multiple_values_cuttlefish_failure() {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_return_multiple_values.wat")
.replace("${loop_or_block}", "loop")
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Cuttlefish);
let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
receipt.expect_specific_failure(|error| match error {
RuntimeError::ApplicationError(ApplicationError::PackageError(
PackageError::InvalidWasm(PrepareError::ValidationError(message)),
)) => message.contains(
"func type returns multiple values but the multi-value feature is not enabled",
),
_ => false,
});
}

#[test]
fn test_wasm_non_mvp_multi_value_block_return_multiple_values_dugong_success() {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_return_multiple_values.wat")
.replace("${loop_or_block}", "block")
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Dugong);
let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
let package_address = receipt.expect_commit(true).new_package_addresses()[0];

// Act
let receipt = manifest_execute_test_function!(ledger, package_address);

// Assert
let outcome: i32 = receipt.expect_commit(true).output(1);
assert_eq!(outcome, 30);
}

#[test]
fn test_wasm_non_mvp_multi_value_loop_return_multiple_values_dugong_success() {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_return_multiple_values.wat")
.replace("${loop_or_block}", "loop")
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Dugong);
let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
let package_address = receipt.expect_commit(true).new_package_addresses()[0];

// Act
let receipt = manifest_execute_test_function!(ledger, package_address);

// Assert
let outcome: i32 = receipt.expect_commit(true).output(1);
assert_eq!(outcome, 30);
}

#[test]
fn test_wasm_non_mvp_multi_value_block_params_cuttlefish_failure() {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_params.wat")
.replace("${loop_or_block}", "block")
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Cuttlefish);

let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
receipt.expect_specific_failure(|error| {
match error {
RuntimeError::ApplicationError(ApplicationError::PackageError(
PackageError::InvalidWasm(PrepareError::ValidationError(message)),
)) => message.contains(
"blocks, loops, and ifs may only produce a resulttype when multi-value is not enabled",
),
_ => false,
}
});
}

#[test]
fn test_wasm_non_mvp_multi_value_loop_params_cuttlefish_failure() {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_params.wat")
.replace("${loop_or_block}", "loop")
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Cuttlefish);
let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
receipt.expect_specific_failure(|error| {
match error {
fn test_wasm_non_mvp_multi_value_return_multiple_values_cuttlefish_failure() {
for section in ["block", "loop"] {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_return_multiple_values.wat")
.replace("${loop_or_block}", section)
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Cuttlefish);
let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
receipt.expect_specific_failure(|error| match error {
RuntimeError::ApplicationError(ApplicationError::PackageError(
PackageError::InvalidWasm(PrepareError::ValidationError(message)),
)) => message.contains(
"blocks, loops, and ifs may only produce a resulttype when multi-value is not enabled",
"func type returns multiple values but the multi-value feature is not enabled",
),
_ => false,
}
});
});
}
}

#[test]
fn test_wasm_non_mvp_multi_value_block_params_dugong_success() {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_params.wat")
.replace("${loop_or_block}", "block")
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Dugong);
let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
let package_address = receipt.expect_commit(true).new_package_addresses()[0];

// Act
let receipt = manifest_execute_test_function!(ledger, package_address);

// Assert
let outcome: i32 = receipt.expect_commit(true).output(1);
assert_eq!(outcome, 30);
fn test_wasm_non_mvp_multi_value_return_multiple_values_dugong_success() {
for section in ["block", "loop"] {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_return_multiple_values.wat")
.replace("${loop_or_block}", section)
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Dugong);
let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
let package_address = receipt.expect_commit(true).new_package_addresses()[0];

// Act
let receipt = manifest_execute_test_function!(ledger, package_address);

// Assert
let outcome: i32 = receipt.expect_commit(true).output(1);
assert_eq!(outcome, 30);
}
}

#[test]
fn test_wasm_non_mvp_multi_value_loop_params_dugong_success() {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_params.wat")
.replace("${loop_or_block}", "loop")
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Dugong);

let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));
// Assert
let package_address = receipt.expect_commit(true).new_package_addresses()[0];

// Act
let receipt = manifest_execute_test_function!(ledger, package_address);
fn test_wasm_non_mvp_multi_value_params_cuttlefish_failure() {
for section in ["block", "loop"] {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_params.wat")
.replace("${loop_or_block}", section)
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Cuttlefish);

let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
receipt.expect_specific_failure(|error| {
match error {
RuntimeError::ApplicationError(ApplicationError::PackageError(
PackageError::InvalidWasm(PrepareError::ValidationError(message)),
)) => message.contains(
"blocks, loops, and ifs may only produce a resulttype when multi-value is not enabled",
),
_ => false,
}
});
}
}

// Assert
let outcome: i32 = receipt.expect_commit(true).output(1);
assert_eq!(outcome, 30);
#[test]
fn test_wasm_non_mvp_multi_value_params_dugong_success() {
for section in ["block", "loop"] {
// Arrange
let code = wat2wasm(
&include_local_wasm_str!("multi_value_loop_or_block_params.wat")
.replace("${loop_or_block}", section)
.replace("${a}", "10")
.replace("${b}", "20"),
);

// Act
let mut ledger = get_ledger!(ProtocolVersion::Dugong);
let receipt =
ledger.try_publish_package((code, single_function_package_definition("Test", "f")));

// Assert
let package_address = receipt.expect_commit(true).new_package_addresses()[0];

// Act
let receipt = manifest_execute_test_function!(ledger, package_address);

// Assert
let outcome: i32 = receipt.expect_commit(true).output(1);
assert_eq!(outcome, 30);
}
}
}

Expand Down

0 comments on commit db73ae3

Please sign in to comment.