-
Notifications
You must be signed in to change notification settings - Fork 83
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Resolve parameters of type vector<vector<Object<T>>> (#2811)
* parse the type nested and resolve argument * refactor error handling * adjust the caller * use the several methods to read data from common struct * remove unused imports * add integrations test for argument resolver
- Loading branch information
1 parent
bed7a8f
commit cf661ec
Showing
7 changed files
with
492 additions
and
123 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
Feature: Rooch CLI argument resolver integration tests | ||
|
||
@serial | ||
Scenario: argument_resolver_test | ||
Given a server for vector_object_test | ||
Then cmd: "account list --json" | ||
|
||
Then cmd: "move publish -p ../../examples/argument_resolver --named-addresses argument_resolver=default --json" | ||
Then assert: "{{$.move[-1].execution_info.status.type}} == executed" | ||
|
||
Then cmd: "move run --function default::argument_resolver::create_mock_object_to_sender --args u64:123" | ||
Then assert: "{{$.move[-1].execution_info.status.type}} == executed" | ||
Then sleep: "3" | ||
Then cmd: "object -o default -t {{$.account[-1].default.hex_address}}::argument_resolver::MockObject" | ||
Then cmd: "move run --function default::argument_resolver::object --args object:{{$.object[-1].data[0].id}} --args u64:123" | ||
Then assert: "{{$.move[-1].execution_info.status.type}} == executed" | ||
|
||
Then cmd: "move run --function default::argument_resolver::create_mock_object_to_sender --args u64:123" | ||
Then assert: "{{$.move[-1].execution_info.status.type}} == executed" | ||
Then sleep: "3" | ||
Then cmd: "object -o default -t {{$.account[-1].default.hex_address}}::argument_resolver::MockObject" | ||
Then cmd: "move run --function default::argument_resolver::object_ref --args object:{{$.object[-1].data[0].id}} --args u64:123" | ||
Then assert: "{{$.move[-1].execution_info.status.type}} == executed" | ||
|
||
Then cmd: "move run --function default::argument_resolver::create_mock_object_to_sender --args u64:123" | ||
Then assert: "{{$.move[-1].execution_info.status.type}} == executed" | ||
Then sleep: "3" | ||
Then cmd: "object -o default -t {{$.account[-1].default.hex_address}}::argument_resolver::MockObject" | ||
Then cmd: "move run --function default::argument_resolver::object_mut_ref --args object:{{$.object[-1].data[0].id}} --args u64:123" | ||
Then assert: "{{$.move[-1].execution_info.status.type}} == executed" | ||
|
||
Then cmd: "move view --function default::argument_resolver::vector_string_argument --args vector<string>:hello123" | ||
Then assert: "{{$.move[-1].return_values[0].decoded_value}} == 'hello123'" | ||
|
||
Then cmd: "move view --function default::argument_resolver::vector_object_id_argument --args vector<object_id>:0x0a3e8d86b65c8d51ffa92ed278ac96f895a4b7c8bdb60a8b6cd8a5393cb27760" | ||
Then assert: "{{$.move[-1].return_values[0].decoded_value}} == 0x0a3e8d86b65c8d51ffa92ed278ac96f895a4b7c8bdb60a8b6cd8a5393cb27760" | ||
|
||
Then cmd: "move view --function default::argument_resolver::string_argument --args string:hello123" | ||
Then assert: "{{$.move[-1].return_values[0].decoded_value}} == 'hello123'" | ||
|
||
Then cmd: "move view --function default::argument_resolver::object_id_argument --args object_id:0x0a3e8d86b65c8d51ffa92ed278ac96f895a4b7c8bdb60a8b6cd8a5393cb27760" | ||
Then assert: "{{$.move[-1].return_values[0].decoded_value}} == '0x0a3e8d86b65c8d51ffa92ed278ac96f895a4b7c8bdb60a8b6cd8a5393cb27760'" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
[package] | ||
name = "argument_resolver" | ||
version = "0.0.1" | ||
|
||
[dependencies] | ||
MoveStdlib = { local = "../../frameworks/move-stdlib" } | ||
MoveosStdlib = { local = "../../frameworks/moveos-stdlib" } | ||
RoochFramework = { local = "../../frameworks/rooch-framework" } | ||
|
||
[addresses] | ||
argument_resolver = "_" | ||
std = "0x1" | ||
moveos_std = "0x2" | ||
rooch_framework = "0x3" | ||
|
||
[dev-addresses] | ||
argument_resolver = "0x42" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
module argument_resolver::argument_resolver { | ||
use moveos_std::object; | ||
use moveos_std::object::{Object, ObjectID}; | ||
use std::vector; | ||
use std::signer; | ||
use std::debug; | ||
use std::string::String; | ||
|
||
struct MockObject has key,store,drop,copy {value: u64} | ||
|
||
entry public fun create_mock_object_to_sender(account: &signer, arg: u64) { | ||
let user_object = object::new(MockObject{value: arg}); | ||
let object_id = object::id(&user_object); | ||
debug::print(&object_id); | ||
object::transfer(user_object, signer::address_of(account)); | ||
} | ||
|
||
entry public fun object(_account:&signer, object: Object<MockObject>, arg: u64) { | ||
assert!(object::borrow(&object).value == arg, 1); | ||
object::remove(object); | ||
} | ||
|
||
entry public fun object_ref(_account: &signer, object_ref: &Object<MockObject>, arg: u64) { | ||
assert!(object::borrow(object_ref).value == arg, 1); | ||
} | ||
|
||
entry public fun object_mut_ref(_account: &signer, mut_object_ref: &mut Object<MockObject>, arg: u64) { | ||
assert!(object::borrow_mut(mut_object_ref).value == arg, 1); | ||
} | ||
|
||
public fun vector_string_argument(_account: &signer, string_vector_argument: vector<String>): String { | ||
vector::pop_back(&mut string_vector_argument) | ||
} | ||
|
||
public fun vector_object_id_argument(_account: &signer, object_id_vector_argument: vector<ObjectID>): ObjectID { | ||
vector::pop_back(&mut object_id_vector_argument) | ||
} | ||
|
||
public fun string_argument(_account: &signer, string_argument: String): String { | ||
string_argument | ||
} | ||
|
||
public fun object_id_argument(_account: &signer, object_id_argument: ObjectID): ObjectID { | ||
object_id_argument | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.