pub struct TestState<Cache, DataStore: WalletTest, Network> { /* private fields */ }test-dependencies only.Implementations§
Source§impl<Cache, DataStore: WalletTest, Network> TestState<Cache, DataStore, Network>
impl<Cache, DataStore: WalletTest, Network> TestState<Cache, DataStore, Network>
Sourcepub fn clock(&self) -> &FixedClock
pub fn clock(&self) -> &FixedClock
Exposes the fixed clock that this test state passes to wallet operations.
Sourcepub fn wallet(&self) -> &DataStore
pub fn wallet(&self) -> &DataStore
Exposes an immutable reference to the test’s DataStore.
Sourcepub fn wallet_mut(&mut self) -> &mut DataStore
pub fn wallet_mut(&mut self) -> &mut DataStore
Exposes a mutable reference to the test’s DataStore.
Source§impl<Cache, DataStore: WalletTest, Network: Parameters> TestState<Cache, DataStore, Network>
impl<Cache, DataStore: WalletTest, Network: Parameters> TestState<Cache, DataStore, Network>
Sourcepub fn sapling_activation_height(&self) -> BlockHeight
pub fn sapling_activation_height(&self) -> BlockHeight
Convenience method for obtaining the Sapling activation height for the network under test.
Sourcepub fn nu5_activation_height(&self) -> BlockHeight
pub fn nu5_activation_height(&self) -> BlockHeight
Convenience method for obtaining the NU5 activation height for the network under test.
Sourcepub fn test_account(
&self,
) -> Option<&TestAccount<<DataStore as WalletRead>::Account>>
pub fn test_account( &self, ) -> Option<&TestAccount<<DataStore as WalletRead>::Account>>
Returns a reference to the test account, if one was configured.
Sourcepub fn test_account_sapling(&self) -> Option<&DiversifiableFullViewingKey>
pub fn test_account_sapling(&self) -> Option<&DiversifiableFullViewingKey>
Returns the test account’s Sapling DFVK, if one was configured.
Sourcepub fn test_account_orchard(&self) -> Option<&FullViewingKey>
Available on crate feature orchard only.
pub fn test_account_orchard(&self) -> Option<&FullViewingKey>
orchard only.Returns the test account’s Orchard FVK, if one was configured.
Source§impl<Cache, DataStore, Network> TestState<Cache, DataStore, Network>where
DataStore: WalletTest + WalletWrite,
Network: Parameters,
impl<Cache, DataStore, Network> TestState<Cache, DataStore, Network>where
DataStore: WalletTest + WalletWrite,
Network: Parameters,
Sourcepub fn create_account_from_test_seed(
&mut self,
account_name: &str,
) -> (<DataStore as WalletRead>::AccountId, UnifiedSpendingKey)
pub fn create_account_from_test_seed( &mut self, account_name: &str, ) -> (<DataStore as WalletRead>::AccountId, UnifiedSpendingKey)
Creates a FURTHER account under the test seed, at the test account’s birthday, and returns its id and spending key.
The wallet assigns the next unused ZIP 32 account index, so this is a sibling of the
account TestBuilder configured — the shape a test needs to check that some answer is
scoped to the account it was asked of, rather than to the wallet.
Create every account a test needs BEFORE scanning anything: account creation adjusts the scan queue, which clears the wallet’s fully-scanned height.
Source§impl<Cache: TestCache, DataStore, Network> TestState<Cache, DataStore, Network>where
Network: Parameters,
DataStore: WalletTest + WalletWrite,
<Cache::BlockSource as BlockSource>::Error: Debug,
impl<Cache: TestCache, DataStore, Network> TestState<Cache, DataStore, Network>where
Network: Parameters,
DataStore: WalletTest + WalletWrite,
<Cache::BlockSource as BlockSource>::Error: Debug,
Sourcepub fn cache(&self) -> &Cache::BlockSource
Available on crate feature unstable only.
pub fn cache(&self) -> &Cache::BlockSource
unstable only.Exposes an immutable reference to the test’s BlockSource.
Sourcepub fn latest_cached_block(&self) -> Option<&CachedBlock>
pub fn latest_cached_block(&self) -> Option<&CachedBlock>
Returns the cached chain state corresponding to the latest block generated by this
TestState.
Sourcepub fn generate_next_block<Fvk: TestFvk>(
&mut self,
recipient_fvk: &Fvk,
recipient_address_type: AddressType,
value: Zatoshis,
) -> (BlockHeight, Cache::InsertResult, Fvk::Nullifier)
pub fn generate_next_block<Fvk: TestFvk>( &mut self, recipient_fvk: &Fvk, recipient_address_type: AddressType, value: Zatoshis, ) -> (BlockHeight, Cache::InsertResult, Fvk::Nullifier)
Creates a fake block at the expected next height containing a single output of the given value, and inserts it into the cache.
This is a proxy for generate_next_block_multi.
Sourcepub fn generate_next_block_multi<Fvk: TestFvk>(
&mut self,
outputs: &[FakeCompactOutput<Fvk>],
) -> (BlockHeight, Cache::InsertResult, Vec<Fvk::Nullifier>)
pub fn generate_next_block_multi<Fvk: TestFvk>( &mut self, outputs: &[FakeCompactOutput<Fvk>], ) -> (BlockHeight, Cache::InsertResult, Vec<Fvk::Nullifier>)
Creates a fake block at the expected next height containing multiple outputs and inserts it into the cache.
Sourcepub fn generate_next_block_transparent(
&mut self,
vin: &[OutPoint],
vout: &[(TransparentAddress, Zatoshis)],
) -> (BlockHeight, Cache::InsertResult, TxId)
Available on crate feature transparent-inputs only.
pub fn generate_next_block_transparent( &mut self, vin: &[OutPoint], vout: &[(TransparentAddress, Zatoshis)], ) -> (BlockHeight, Cache::InsertResult, TxId)
transparent-inputs only.Adds a block at the next height containing a single transparent-only transaction that
spends vin and creates an output of each (address, value) in vout, and inserts it
into the cache.
The transaction is placed at index 1 within the block, behind a placeholder occupying the coinbase position, so that the outputs it creates are not subject to the coinbase maturity rule. Returns the height of the block and the id of the transparent transaction.
Sourcepub fn generate_empty_block(&mut self) -> (BlockHeight, Cache::InsertResult)
pub fn generate_empty_block(&mut self) -> (BlockHeight, Cache::InsertResult)
Adds an empty block to the cache, advancing the simulated chain height.
Sourcepub fn generate_block_at<Fvk: TestFvk>(
&mut self,
height: BlockHeight,
prev_hash: BlockHash,
outputs: &[FakeCompactOutput<Fvk>],
initial_sapling_tree_size: u32,
initial_orchard_tree_size: u32,
initial_ironwood_tree_size: u32,
allow_broken_hash_chain: bool,
) -> (Cache::InsertResult, Vec<Fvk::Nullifier>)
pub fn generate_block_at<Fvk: TestFvk>( &mut self, height: BlockHeight, prev_hash: BlockHash, outputs: &[FakeCompactOutput<Fvk>], initial_sapling_tree_size: u32, initial_orchard_tree_size: u32, initial_ironwood_tree_size: u32, allow_broken_hash_chain: bool, ) -> (Cache::InsertResult, Vec<Fvk::Nullifier>)
Creates a fake block with the given height and hash containing the requested outputs, and inserts it into the cache.
This generated block will be treated as the latest block, and subsequent calls to
Self::generate_next_block will build on it.
Sourcepub fn generate_next_block_spending<Fvk: TestFvk>(
&mut self,
sender_fvk: &Fvk,
note: (Fvk::Nullifier, Zatoshis),
to: impl Into<Address>,
value: Zatoshis,
) -> (BlockHeight, Cache::InsertResult)
pub fn generate_next_block_spending<Fvk: TestFvk>( &mut self, sender_fvk: &Fvk, note: (Fvk::Nullifier, Zatoshis), to: impl Into<Address>, value: Zatoshis, ) -> (BlockHeight, Cache::InsertResult)
Creates a fake block at the expected next height spending the given note, and inserts it into the cache.
Sourcepub fn generate_next_block_including(
&mut self,
txid: TxId,
) -> (BlockHeight, Cache::InsertResult)
pub fn generate_next_block_including( &mut self, txid: TxId, ) -> (BlockHeight, Cache::InsertResult)
Creates a fake block at the expected next height containing only the wallet transaction with the given txid, and inserts it into the cache.
This generated block will be treated as the latest block, and subsequent calls to
Self::generate_next_block (or similar) will build on it.
Sourcepub fn generate_next_block_from_tx(
&mut self,
tx_index: usize,
tx: &Transaction,
) -> (BlockHeight, Cache::InsertResult)
pub fn generate_next_block_from_tx( &mut self, tx_index: usize, tx: &Transaction, ) -> (BlockHeight, Cache::InsertResult)
Creates a fake block at the expected next height containing only the given transaction, and inserts it into the cache.
This generated block will be treated as the latest block, and subsequent calls to
Self::generate_next_block will build on it.
Sourcepub fn truncate_to_height(&mut self, height: BlockHeight)
pub fn truncate_to_height(&mut self, height: BlockHeight)
Truncates the test wallet and block cache to the specified height, discarding all data from blocks at heights greater than the specified height, excluding transaction data that may not be recoverable from the chain.
Sourcepub fn truncate_to_height_retaining_cache(&mut self, height: BlockHeight)
pub fn truncate_to_height_retaining_cache(&mut self, height: BlockHeight)
Truncates the test wallet to the specified height, and resets the cache’s latest block height but does not truncate the block cache. This is useful for circumstances when you want to re-scan a set of cached blocks.
Source§impl<Cache, DbT, ParamsT> TestState<Cache, DbT, ParamsT>where
Cache: TestCache,
<Cache::BlockSource as BlockSource>::Error: Debug,
ParamsT: Parameters + Send + 'static,
DbT: InputSource + WalletTest + WalletWrite + WalletCommitmentTrees,
<DbT as WalletRead>::AccountId: Debug + ConditionallySelectable + Default + Send + Sync + 'static,
impl<Cache, DbT, ParamsT> TestState<Cache, DbT, ParamsT>where
Cache: TestCache,
<Cache::BlockSource as BlockSource>::Error: Debug,
ParamsT: Parameters + Send + 'static,
DbT: InputSource + WalletTest + WalletWrite + WalletCommitmentTrees,
<DbT as WalletRead>::AccountId: Debug + ConditionallySelectable + Default + Send + Sync + 'static,
Sourcepub fn scan_cached_blocks(
&mut self,
from_height: BlockHeight,
limit: usize,
) -> ScanSummary
pub fn scan_cached_blocks( &mut self, from_height: BlockHeight, limit: usize, ) -> ScanSummary
Invokes scan_cached_blocks with the given arguments, expecting success.
Sourcepub fn try_scan_cached_blocks(
&mut self,
from_height: BlockHeight,
limit: usize,
) -> Result<ScanSummary, Error<<DbT as WalletRead>::Error, <Cache::BlockSource as BlockSource>::Error>>
pub fn try_scan_cached_blocks( &mut self, from_height: BlockHeight, limit: usize, ) -> Result<ScanSummary, Error<<DbT as WalletRead>::Error, <Cache::BlockSource as BlockSource>::Error>>
Invokes scan_cached_blocks with the given arguments.
Sourcepub fn try_scan_cached_blocks_with_state(
&mut self,
from_height: BlockHeight,
from_state: &ChainState,
limit: usize,
) -> Result<ScanSummary, Error<<DbT as WalletRead>::Error, <Cache::BlockSource as BlockSource>::Error>>
pub fn try_scan_cached_blocks_with_state( &mut self, from_height: BlockHeight, from_state: &ChainState, limit: usize, ) -> Result<ScanSummary, Error<<DbT as WalletRead>::Error, <Cache::BlockSource as BlockSource>::Error>>
Invokes scan_cached_blocks with a caller-supplied from_state instead of deriving it
from the block cache.
This is primarily useful for tests that need to drive WalletWrite::put_blocks with a
from_state that is deliberately inconsistent with the wallet’s stored note commitment
tree state, in order to exercise the resulting error paths.
Sourcepub fn put_subtree_roots(
&mut self,
sapling_start_index: u64,
sapling_roots: &[CommitmentTreeRoot<Node>],
orchard_start_index: u64,
orchard_roots: &[CommitmentTreeRoot<MerkleHashOrchard>],
) -> Result<(), ShardTreeError<<DbT as WalletCommitmentTrees>::Error>>
pub fn put_subtree_roots( &mut self, sapling_start_index: u64, sapling_roots: &[CommitmentTreeRoot<Node>], orchard_start_index: u64, orchard_roots: &[CommitmentTreeRoot<MerkleHashOrchard>], ) -> Result<(), ShardTreeError<<DbT as WalletCommitmentTrees>::Error>>
Insert shard roots for both trees.
Sourcepub fn generate_and_scan_empty_blocks(&mut self, n: usize) -> BlockHeight
pub fn generate_and_scan_empty_blocks(&mut self, n: usize) -> BlockHeight
Generates n empty blocks, scans each, and returns the wallet’s resulting fully-scanned
height.
This is the “let the chain advance” step of a test that needs the scanned region to reach a chosen depth above some earlier height — an anchor boundary a fixed number of blocks below the tip, say — with none of the intervening blocks carrying wallet-relevant data.
Sourcepub fn orchard_anchor_at(
&mut self,
height: BlockHeight,
) -> Result<Option<Anchor>, ShardTreeError<<DbT as WalletCommitmentTrees>::Error>>
Available on crate feature orchard only.
pub fn orchard_anchor_at( &mut self, height: BlockHeight, ) -> Result<Option<Anchor>, ShardTreeError<<DbT as WalletCommitmentTrees>::Error>>
orchard only.The root of the wallet’s own Orchard note commitment tree at the checkpoint height, as an
anchor: the value a transaction proved against that height would have installed.
None when the tree holds no checkpoint there; the tree’s own error when it holds one but
cannot complete a root over the shard data it retains.
Source§impl<Cache, DbT, ParamsT, AccountIdT, ErrT> TestState<Cache, DbT, ParamsT>where
ParamsT: Parameters + Send + 'static,
AccountIdT: Debug + Eq + Hash,
ErrT: Debug,
DbT: InputSource<AccountId = AccountIdT, Error = ErrT> + WalletTest + WalletRead<AccountId = AccountIdT, Error = ErrT> + WalletWrite + WalletCommitmentTrees,
<DbT as WalletRead>::AccountId: ConditionallySelectable + Default + Send + 'static,
impl<Cache, DbT, ParamsT, AccountIdT, ErrT> TestState<Cache, DbT, ParamsT>where
ParamsT: Parameters + Send + 'static,
AccountIdT: Debug + Eq + Hash,
ErrT: Debug,
DbT: InputSource<AccountId = AccountIdT, Error = ErrT> + WalletTest + WalletRead<AccountId = AccountIdT, Error = ErrT> + WalletWrite + WalletCommitmentTrees,
<DbT as WalletRead>::AccountId: ConditionallySelectable + Default + Send + 'static,
pub fn create_standard_transaction( &mut self, from_account: &TestAccount<DbT::Account>, to: ZcashAddress, value: Zatoshis, ) -> Result<NonEmpty<TxId>, TransferErrT<DbT, GreedyInputSelector<DbT>, MultiOutputChangeStrategy<DbT>>>
Sourcepub fn spend<InputsT, ChangeT>(
&mut self,
input_selector: &InputsT,
change_strategy: &ChangeT,
usk: &UnifiedSpendingKey,
request: TransactionRequest,
ovk_policy: OvkPolicy,
confirmations_policy: ConfirmationsPolicy,
) -> Result<NonEmpty<TxId>, TransferErrT<DbT, InputsT, ChangeT>>where
InputsT: InputSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
pub fn spend<InputsT, ChangeT>(
&mut self,
input_selector: &InputsT,
change_strategy: &ChangeT,
usk: &UnifiedSpendingKey,
request: TransactionRequest,
ovk_policy: OvkPolicy,
confirmations_policy: ConfirmationsPolicy,
) -> Result<NonEmpty<TxId>, TransferErrT<DbT, InputsT, ChangeT>>where
InputsT: InputSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
Prepares and executes the given zip321::TransactionRequest in a single step.
Sourcepub fn propose_transfer<InputsT, ChangeT>(
&mut self,
spend_from_account: <DbT as InputSource>::AccountId,
input_selector: &InputsT,
change_strategy: &ChangeT,
request: TransactionRequest,
confirmations_policy: ConfirmationsPolicy,
) -> Result<Proposal<ChangeT::FeeRule, <DbT as InputSource>::NoteRef>, ProposeTransferErrT<DbT, Infallible, InputsT, ChangeT>>where
InputsT: InputSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
pub fn propose_transfer<InputsT, ChangeT>(
&mut self,
spend_from_account: <DbT as InputSource>::AccountId,
input_selector: &InputsT,
change_strategy: &ChangeT,
request: TransactionRequest,
confirmations_policy: ConfirmationsPolicy,
) -> Result<Proposal<ChangeT::FeeRule, <DbT as InputSource>::NoteRef>, ProposeTransferErrT<DbT, Infallible, InputsT, ChangeT>>where
InputsT: InputSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
Invokes propose_transfer with the given arguments.
Sourcepub fn propose_transfer_with_policy<InputsT, ChangeT>(
&mut self,
spend_from_account: <DbT as InputSource>::AccountId,
input_selector: &InputsT,
change_strategy: &ChangeT,
request: TransactionRequest,
confirmations_policy: ConfirmationsPolicy,
spend_policy: &SpendPolicy,
) -> Result<Proposal<ChangeT::FeeRule, <DbT as InputSource>::NoteRef>, ProposeTransferErrT<DbT, Infallible, InputsT, ChangeT>>where
InputsT: InputSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
pub fn propose_transfer_with_policy<InputsT, ChangeT>(
&mut self,
spend_from_account: <DbT as InputSource>::AccountId,
input_selector: &InputsT,
change_strategy: &ChangeT,
request: TransactionRequest,
confirmations_policy: ConfirmationsPolicy,
spend_policy: &SpendPolicy,
) -> Result<Proposal<ChangeT::FeeRule, <DbT as InputSource>::NoteRef>, ProposeTransferErrT<DbT, Infallible, InputsT, ChangeT>>where
InputsT: InputSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
Invokes propose_transfer with the given arguments and an explicit
SpendPolicy.
Unlike Self::propose_transfer, which always uses the default spend
policy (every shielded pool, no transparent), this allows tests to opt in
to spending the account’s transparent UTXOs or to restrict the shielded
pools notes may be drawn from.
Sourcepub fn propose_send_max_transfer<FeeRuleT>(
&mut self,
spend_from_account: <DbT as InputSource>::AccountId,
fee_rule: &FeeRuleT,
to: ZcashAddress,
memo: Option<MemoBytes>,
mode: MaxSpendMode,
confirmations_policy: ConfirmationsPolicy,
) -> Result<Proposal<FeeRuleT, <DbT as InputSource>::NoteRef>, ProposeSendMaxErrT<DbT, Infallible, FeeRuleT>>where
FeeRuleT: FeeRule + Clone,
pub fn propose_send_max_transfer<FeeRuleT>(
&mut self,
spend_from_account: <DbT as InputSource>::AccountId,
fee_rule: &FeeRuleT,
to: ZcashAddress,
memo: Option<MemoBytes>,
mode: MaxSpendMode,
confirmations_policy: ConfirmationsPolicy,
) -> Result<Proposal<FeeRuleT, <DbT as InputSource>::NoteRef>, ProposeSendMaxErrT<DbT, Infallible, FeeRuleT>>where
FeeRuleT: FeeRule + Clone,
Invokes propose_transfer with the given arguments.
Sourcepub fn propose_standard_transfer<CommitmentTreeErrT>(
&mut self,
spend_from_account: <DbT as InputSource>::AccountId,
fee_rule: StandardFeeRule,
confirmations_policy: ConfirmationsPolicy,
to: &Address,
amount: Zatoshis,
memo: Option<MemoBytes>,
change_memo: Option<MemoBytes>,
fallback_change_pool: ShieldedPool,
) -> Result<Proposal<StandardFeeRule, <DbT as InputSource>::NoteRef>, ProposeTransferErrT<DbT, CommitmentTreeErrT, GreedyInputSelector<DbT>, SingleOutputChangeStrategy<DbT>>>
pub fn propose_standard_transfer<CommitmentTreeErrT>( &mut self, spend_from_account: <DbT as InputSource>::AccountId, fee_rule: StandardFeeRule, confirmations_policy: ConfirmationsPolicy, to: &Address, amount: Zatoshis, memo: Option<MemoBytes>, change_memo: Option<MemoBytes>, fallback_change_pool: ShieldedPool, ) -> Result<Proposal<StandardFeeRule, <DbT as InputSource>::NoteRef>, ProposeTransferErrT<DbT, CommitmentTreeErrT, GreedyInputSelector<DbT>, SingleOutputChangeStrategy<DbT>>>
Invokes propose_standard_transfer_to_address with the given arguments.
Sourcepub fn propose_shielding<InputsT, ChangeT>(
&mut self,
input_selector: &InputsT,
change_strategy: &ChangeT,
shielding_threshold: Zatoshis,
from_addrs: &[TransparentAddress],
to_account: <InputsT::InputSource as InputSource>::AccountId,
confirmations_policy: ConfirmationsPolicy,
output_filter: CoinbaseFilter,
) -> Result<Proposal<ChangeT::FeeRule, Infallible>, ProposeShieldingErrT<DbT, Infallible, InputsT, ChangeT>>where
InputsT: ShieldingSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
Available on crate feature transparent-inputs only.
pub fn propose_shielding<InputsT, ChangeT>(
&mut self,
input_selector: &InputsT,
change_strategy: &ChangeT,
shielding_threshold: Zatoshis,
from_addrs: &[TransparentAddress],
to_account: <InputsT::InputSource as InputSource>::AccountId,
confirmations_policy: ConfirmationsPolicy,
output_filter: CoinbaseFilter,
) -> Result<Proposal<ChangeT::FeeRule, Infallible>, ProposeShieldingErrT<DbT, Infallible, InputsT, ChangeT>>where
InputsT: ShieldingSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
transparent-inputs only.Invokes propose_shielding with the given arguments.
Sourcepub fn propose_shielding_coinbase<InputsT, FeeRuleT>(
&mut self,
input_selector: &InputsT,
fee_rule: &FeeRuleT,
shielding_threshold: Zatoshis,
from_addrs: &[TransparentAddress],
to_address: ZcashAddress,
memo: Option<MemoBytes>,
limit: Option<usize>,
) -> Result<Proposal<FeeRuleT, Infallible>, ProposeShieldingCoinbaseErrT<DbT, Infallible, InputsT, FeeRuleT>>where
InputsT: ShieldingSelector<InputSource = DbT>,
FeeRuleT: FeeRule + Clone,
Available on crate feature transparent-inputs only.
pub fn propose_shielding_coinbase<InputsT, FeeRuleT>(
&mut self,
input_selector: &InputsT,
fee_rule: &FeeRuleT,
shielding_threshold: Zatoshis,
from_addrs: &[TransparentAddress],
to_address: ZcashAddress,
memo: Option<MemoBytes>,
limit: Option<usize>,
) -> Result<Proposal<FeeRuleT, Infallible>, ProposeShieldingCoinbaseErrT<DbT, Infallible, InputsT, FeeRuleT>>where
InputsT: ShieldingSelector<InputSource = DbT>,
FeeRuleT: FeeRule + Clone,
transparent-inputs only.Invokes propose_shielding_coinbase with the given arguments.
Sourcepub fn create_proposed_transactions<InputsErrT, FeeRuleT, ChangeErrT, N>(
&mut self,
usk: &UnifiedSpendingKey,
ovk_policy: OvkPolicy,
proposal: &Proposal<FeeRuleT, N>,
) -> Result<NonEmpty<TxId>, CreateErrT<DbT, InputsErrT, FeeRuleT, ChangeErrT, N>>where
FeeRuleT: FeeRule,
pub fn create_proposed_transactions<InputsErrT, FeeRuleT, ChangeErrT, N>(
&mut self,
usk: &UnifiedSpendingKey,
ovk_policy: OvkPolicy,
proposal: &Proposal<FeeRuleT, N>,
) -> Result<NonEmpty<TxId>, CreateErrT<DbT, InputsErrT, FeeRuleT, ChangeErrT, N>>where
FeeRuleT: FeeRule,
Invokes create_proposed_transactions with the given arguments.
Sourcepub fn create_pczt_from_proposal<InputsErrT, FeeRuleT, ChangeErrT>(
&mut self,
spend_from_account: <DbT as InputSource>::AccountId,
ovk_policy: OvkPolicy,
proposal: &Proposal<FeeRuleT, <DbT as InputSource>::NoteRef>,
expiry_height: Option<BlockHeight>,
) -> Result<Pczt, CreateErrT<DbT, InputsErrT, FeeRuleT, ChangeErrT, DbT::NoteRef>>
Available on crate feature pczt only.
pub fn create_pczt_from_proposal<InputsErrT, FeeRuleT, ChangeErrT>( &mut self, spend_from_account: <DbT as InputSource>::AccountId, ovk_policy: OvkPolicy, proposal: &Proposal<FeeRuleT, <DbT as InputSource>::NoteRef>, expiry_height: Option<BlockHeight>, ) -> Result<Pczt, CreateErrT<DbT, InputsErrT, FeeRuleT, ChangeErrT, DbT::NoteRef>>
pczt only.Invokes create_pczt_from_proposal with the given arguments.
Sourcepub fn extract_and_store_transaction_from_pczt(
&mut self,
pczt: Pczt,
) -> Result<TxId, ExtractErrT<DbT, DbT::NoteRef>>
Available on crate feature pczt only.
pub fn extract_and_store_transaction_from_pczt( &mut self, pczt: Pczt, ) -> Result<TxId, ExtractErrT<DbT, DbT::NoteRef>>
pczt only.Invokes extract_and_store_transaction_from_pczt with the given arguments.
Sourcepub fn shield_transparent_funds<InputsT, ChangeT>(
&mut self,
input_selector: &InputsT,
change_strategy: &ChangeT,
shielding_threshold: Zatoshis,
usk: &UnifiedSpendingKey,
from_addrs: &[TransparentAddress],
to_account: <DbT as InputSource>::AccountId,
confirmations_policy: ConfirmationsPolicy,
) -> Result<NonEmpty<TxId>, ShieldErrT<DbT, InputsT, ChangeT>>where
InputsT: ShieldingSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
Available on crate feature transparent-inputs only.
pub fn shield_transparent_funds<InputsT, ChangeT>(
&mut self,
input_selector: &InputsT,
change_strategy: &ChangeT,
shielding_threshold: Zatoshis,
usk: &UnifiedSpendingKey,
from_addrs: &[TransparentAddress],
to_account: <DbT as InputSource>::AccountId,
confirmations_policy: ConfirmationsPolicy,
) -> Result<NonEmpty<TxId>, ShieldErrT<DbT, InputsT, ChangeT>>where
InputsT: ShieldingSelector<InputSource = DbT>,
ChangeT: ChangeStrategy<MetaSource = DbT>,
transparent-inputs only.Invokes shield_transparent_funds with the given arguments.
Sourcepub fn get_total_balance(&self, account: AccountIdT) -> Zatoshis
pub fn get_total_balance(&self, account: AccountIdT) -> Zatoshis
Returns the total balance in the given account at this point in the test.
Sourcepub fn get_locked_balance(&self, account: AccountIdT) -> Zatoshis
pub fn get_locked_balance(&self, account: AccountIdT) -> Zatoshis
Returns the locked balance in the given account at this point in the test.
Sourcepub fn get_spendable_balance(
&self,
account: AccountIdT,
confirmations_policy: ConfirmationsPolicy,
) -> Zatoshis
pub fn get_spendable_balance( &self, account: AccountIdT, confirmations_policy: ConfirmationsPolicy, ) -> Zatoshis
Returns the balance in the given account that is spendable with the given number of confirmations at this point in the test.
Sourcepub fn get_pending_shielded_balance(
&self,
account: AccountIdT,
confirmations_policy: ConfirmationsPolicy,
) -> Zatoshis
pub fn get_pending_shielded_balance( &self, account: AccountIdT, confirmations_policy: ConfirmationsPolicy, ) -> Zatoshis
Returns the balance in the given account that is detected but not yet spendable with the given number of confirmations at this point in the test.
Sourcepub fn get_pending_change(
&self,
account: AccountIdT,
confirmations_policy: ConfirmationsPolicy,
) -> Zatoshis
pub fn get_pending_change( &self, account: AccountIdT, confirmations_policy: ConfirmationsPolicy, ) -> Zatoshis
Returns the amount of change in the given account that is not yet spendable with the given number of confirmations at this point in the test.
Sourcepub fn get_wallet_summary(
&self,
confirmations_policy: ConfirmationsPolicy,
) -> Option<WalletSummary<AccountIdT>>
pub fn get_wallet_summary( &self, confirmations_policy: ConfirmationsPolicy, ) -> Option<WalletSummary<AccountIdT>>
Returns a summary of the wallet at this point in the test.
Source§impl<Cache, DbT, ParamsT, AccountIdT, ErrT> TestState<Cache, DbT, ParamsT>where
ParamsT: Parameters + Send + 'static,
AccountIdT: Eq + Hash,
ErrT: Debug,
DbT: InputSource<AccountId = AccountIdT, Error = ErrT> + WalletTest + WalletRead<AccountId = AccountIdT, Error = ErrT> + WalletWrite + WalletCommitmentTrees,
<DbT as WalletRead>::AccountId: ConditionallySelectable + Default + Send + 'static,
impl<Cache, DbT, ParamsT, AccountIdT, ErrT> TestState<Cache, DbT, ParamsT>where
ParamsT: Parameters + Send + 'static,
AccountIdT: Eq + Hash,
ErrT: Debug,
DbT: InputSource<AccountId = AccountIdT, Error = ErrT> + WalletTest + WalletRead<AccountId = AccountIdT, Error = ErrT> + WalletWrite + WalletCommitmentTrees,
<DbT as WalletRead>::AccountId: ConditionallySelectable + Default + Send + 'static,
Sourcepub fn get_tx_from_history(
&self,
txid: TxId,
) -> Result<Option<TransactionSummary<AccountIdT>>, ErrT>
pub fn get_tx_from_history( &self, txid: TxId, ) -> Result<Option<TransactionSummary<AccountIdT>>, ErrT>
Returns a transaction from the history.
Source§impl<Cache, DbT: WalletRead + Reset> TestState<Cache, DbT, LocalNetwork>
impl<Cache, DbT: WalletRead + Reset> TestState<Cache, DbT, LocalNetwork>
Sourcepub fn reset(&mut self) -> DbT::Handle
pub fn reset(&mut self) -> DbT::Handle
Resets the wallet using a new wallet database but with the same cache of blocks, and returns the old wallet database file.
This does not recreate accounts, nor does it rescan the cached blocks.
The resulting wallet has no test account.
Before using any generate_* method on the reset state, call reset_latest_cached_block().
Trait Implementations§
Source§impl<Cache, DataStore: WalletTest, Network> Drop for TestState<Cache, DataStore, Network>
impl<Cache, DataStore: WalletTest, Network> Drop for TestState<Cache, DataStore, Network>
Auto Trait Implementations§
impl<Cache, DataStore, Network> Freeze for TestState<Cache, DataStore, Network>
impl<Cache, DataStore, Network> RefUnwindSafe for TestState<Cache, DataStore, Network>where
Cache: RefUnwindSafe,
DataStore: RefUnwindSafe,
Network: RefUnwindSafe,
Option<(Secret<Vec<u8>>, TestAccount<<DataStore as WalletRead>::Account>)>: RefUnwindSafe,
impl<Cache, DataStore, Network> Send for TestState<Cache, DataStore, Network>
impl<Cache, DataStore, Network> Sync for TestState<Cache, DataStore, Network>
impl<Cache, DataStore, Network> Unpin for TestState<Cache, DataStore, Network>
impl<Cache, DataStore, Network> UnsafeUnpin for TestState<Cache, DataStore, Network>where
Cache: UnsafeUnpin,
DataStore: UnsafeUnpin,
Network: UnsafeUnpin,
Option<(Secret<Vec<u8>>, TestAccount<<DataStore as WalletRead>::Account>)>: UnsafeUnpin,
impl<Cache, DataStore, Network> UnwindSafe for TestState<Cache, DataStore, Network>where
Cache: UnwindSafe,
DataStore: UnwindSafe,
Network: UnwindSafe,
Option<(Secret<Vec<u8>>, TestAccount<<DataStore as WalletRead>::Account>)>: UnwindSafe,
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PossiblyOption<T> for T
impl<T> PossiblyOption<T> for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.