You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: transport/src/lib.rs
+75Lines changed: 75 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -4,12 +4,20 @@ pub mod rpc;
4
4
#[cfg(test)]
5
5
pubmod tests {
6
6
usecrate::rpc::RpcTransport;
7
+
use core::panic;
7
8
use futures_util::StreamExt;
9
+
use nekoton_core::contracts::blockchain_context::BlockchainContextBuilder;
8
10
use nekoton_core::transactions::TraceTransaction;
11
+
use nekoton_core::transport::{SimpleTransport,Transport};
12
+
use num_bigint::BigUint;
13
+
use num_traits::Zero;
9
14
use reqwest::Url;
10
15
use std::str::FromStr;
11
16
use std::sync::Arc;
17
+
use tycho_types::abi::{AbiHeaderType,AbiType,AbiValue,AbiVersion,Function};
18
+
use tycho_types::boc::Boc;
12
19
use tycho_types::cell::HashBytes;
20
+
use tycho_types::models::BlockchainConfig;
13
21
14
22
#[tokio::test]
15
23
asyncfntraced_tx(){
@@ -28,4 +36,71 @@ pub mod tests {
28
36
}
29
37
assert_eq!(counter,12);
30
38
}
39
+
40
+
#[tokio::test]
41
+
asyncfnget_state_with_retries_for_libraries(){
42
+
let config_cell = Boc::decode_base64("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").unwrap();
43
+
let config = config_cell.parse::<BlockchainConfig>().unwrap();
44
+
45
+
let account_cell = Boc::decode_base64("te6ccgEBBAEA3wACboARPmKFmZb7UI1FgPY5MbJYJKPzmu4RUDN9k8WayPe7kGQRAqUGil+P0AAAT3BmG1o6AvrwgCYDAQGTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAIurEomVjZY/EfuvEyNXOvBmybt5bgpnmtwgyymLnInvgCAGOACOx2tye/5lfR4Ih+BBGfLQA67cTHekeUzHx9YuGo73UAAAAAAAAAAAAAAAAAAAABUAhCApZ8lwbZVdfn7LyATToKdb89MzDWfAhUcDRsBzsioiQS").unwrap();
46
+
47
+
let inputs = vec![AbiType::Uint(32).named("answerId")];
48
+
49
+
let outputs = vec![AbiType::Uint(128).named("value0")];
50
+
51
+
let headers = vec![
52
+
AbiHeaderType::PublicKey,
53
+
AbiHeaderType::Time,
54
+
AbiHeaderType::Expire,
55
+
];
56
+
let function = Function::builder(AbiVersion::V2_3,"balance")
57
+
.with_headers(headers)
58
+
.with_inputs(inputs)
59
+
.with_outputs(outputs)
60
+
.build();
61
+
62
+
let transport = SimpleTransport::new(vec![], config.clone()).unwrap();
63
+
64
+
let context = BlockchainContextBuilder::new()
65
+
.with_config(config)
66
+
.with_transport(Arc::new(transport))
67
+
.build()
68
+
.unwrap();
69
+
70
+
letmut account = context
71
+
.get_account_from_cell(account_cell.as_ref())
72
+
.unwrap();
73
+
74
+
let values = vec![AbiValue::Uint(32,BigUint::zero()).named("answerId")];
75
+
76
+
let urls = vec![Url::from_str("https://rpc-testnet.tychoprotocol.com/").unwrap()];
77
+
let rpc_transport = RpcTransport::new(urls,Default::default(),false)
78
+
.await
79
+
.unwrap();
80
+
81
+
loop{
82
+
match account.run_local(&function, values.as_slice()){
0 commit comments