Skip to content

Commit

Permalink
Merge pull request #1763 from multiversx/rc-53-merge-master
Browse files Browse the repository at this point in the history
Merge master -> rc/v0.53
  • Loading branch information
andrei-marinica authored Sep 4, 2024
2 parents b26f964 + 9781aa9 commit 131a04b
Show file tree
Hide file tree
Showing 9 changed files with 105 additions and 9 deletions.
30 changes: 30 additions & 0 deletions .github/workflows/plotter-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: CI

on:
push:
branches:
- master
pull_request:

permissions:
checks: write
pull-requests: write

jobs:
template_test_current:
name: Plotter tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Install rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
target: wasm32-unknown-unknown

- name: Run plotter tests
run: |
cd tools/plotter
cargo test
8 changes: 7 additions & 1 deletion contracts/feature-tests/basic-features/sc-config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,10 @@ kill_legacy_callback = true
[[proxy]]
path = "src/basic_features_proxy.rs"
add-unlabelled = false
add-endpoints = ["init", "store_bytes", "load_bytes", "returns_egld_decimal"]
add-endpoints = [
"init",
"store_bytes",
"load_bytes",
"returns_egld_decimal",
"echo_managed_option",
]
14 changes: 14 additions & 0 deletions contracts/feature-tests/basic-features/src/basic_features_proxy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,20 @@ where
To: TxTo<Env>,
Gas: TxGas<Env>,
{
/// This tests how is generated type name in proxy
pub fn echo_managed_option<
Arg0: ProxyArg<ManagedOption<Env::Api, BigUint<Env::Api>>>,
>(
self,
mo: Arg0,
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ManagedOption<Env::Api, BigUint<Env::Api>>> {
self.wrapped_tx
.payment(NotPayable)
.raw_call("echo_managed_option")
.argument(&mo)
.original_result()
}

pub fn load_bytes(
self,
) -> TxTypedCall<Env, From, To, NotPayable, Gas, ManagedBuffer<Env::Api>> {
Expand Down
8 changes: 7 additions & 1 deletion contracts/feature-tests/basic-features/src/echo_managed.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
multiversx_sc::imports!();
use multiversx_sc::imports::*;

/// Test endpoint argument and result serialization.
#[multiversx_sc::module]
Expand All @@ -23,6 +23,12 @@ pub trait EchoManagedTypes {
ma
}

/// This tests how is generated type name in proxy
#[endpoint]
fn echo_managed_option(&self, mo: ManagedOption<BigUint>) -> ManagedOption<BigUint> {
mo
}

/// This tests that nested serialization of big ints within unmanaged types works.
#[endpoint]
fn echo_big_int_managed_vec(&self, x: ManagedVec<BigInt>) -> ManagedVec<BigInt> {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
use imports::{MxscPath, ReturnsResult, TestAddress, TestSCAddress};
use multiversx_sc::types::{BigUint, ManagedOption};
use multiversx_sc_scenario::{api::StaticApi, imports, ScenarioTxRun, ScenarioWorld};

const OWNER_ADDRESS: TestAddress = TestAddress::new("owner");
const BASIC_FEATURES_ADDRESS: TestSCAddress = TestSCAddress::new("basic-features");
const BASIC_FEATURES_PATH: MxscPath = MxscPath::new("output/basic-features.mxsc.json");

fn world() -> ScenarioWorld {
let mut blockchain = ScenarioWorld::new();

blockchain.register_contract(BASIC_FEATURES_PATH, basic_features::ContractBuilder);

blockchain.account(OWNER_ADDRESS).nonce(1);
blockchain
.account(BASIC_FEATURES_ADDRESS)
.nonce(1)
.code(BASIC_FEATURES_PATH);

blockchain
}

#[test]
fn managed_option_test() {
let mut world = world();

let type_number: BigUint<StaticApi> = BigUint::zero();
let expected_type_managed_option: ManagedOption<StaticApi, BigUint<StaticApi>> =
ManagedOption::some(type_number);

let output = world
.tx()
.from(OWNER_ADDRESS)
.to(BASIC_FEATURES_ADDRESS)
.typed(basic_features::basic_features_proxy::BasicFeaturesProxy)
.echo_managed_option(expected_type_managed_option.clone())
.returns(ReturnsResult)
.run();

assert_eq!(output, expected_type_managed_option);
}
5 changes: 3 additions & 2 deletions contracts/feature-tests/basic-features/wasm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
////////////////////////////////////////////////////

// Init: 1
// Endpoints: 403
// Endpoints: 404
// Async Callback: 1
// Total number of exported functions: 405
// Total number of exported functions: 406

#![no_std]

Expand Down Expand Up @@ -169,6 +169,7 @@ multiversx_sc_wasm_adapter::endpoints! {
echo_big_int => echo_big_int
echo_managed_buffer => echo_managed_buffer
echo_managed_address => echo_managed_address
echo_managed_option => echo_managed_option
echo_big_int_managed_vec => echo_big_int_managed_vec
echo_big_int_tuple => echo_big_int_tuple
echo_big_int_option => echo_big_int_option
Expand Down
2 changes: 0 additions & 2 deletions tools/plotter/start-server.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
#!/bin/bash
set -e

mkdir -p www/pkg

./build-wasm.sh

cd www
Expand Down
4 changes: 2 additions & 2 deletions tools/plotter/www/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ async function init() {
if (typeof process == "object") {
// We run in the npm/webpack environment.
const [{Chart}, {main, setup}] = await Promise.all([
import("wasm-demo"),
import("sc-plotter-wasm"),
import("./index.js"),
]);
setup(Chart);
main();
} else {
const [{Chart, default: init}, {main, setup}] = await Promise.all([
import("../pkg/wasm_demo.js"),
import("../pkg/sc_plotter_wasm.js"),
import("./index.js"),
]);
await init();
Expand Down
2 changes: 1 addition & 1 deletion tools/plotter/www/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
},
"homepage": "https://github.com/38/plotters",
"dependencies": {
"wasm-demo": "file:../pkg"
"sc-plotter-wasm": "file:../pkg"
},
"devDependencies": {
"webpack": "^4.43.0",
Expand Down

0 comments on commit 131a04b

Please sign in to comment.