mod contract;
mod error;
mod extension;
use std::collections::BTreeMap;
pub use contract::{mock_message, ContractMock, MessageMock, Selector};
use error::MockingError;
pub(crate) use extension::MockingExtension;
pub type MockedCallResult = Result<Vec<u8>, MockingError>;
pub(crate) struct MockRegistry<AccountId: Ord> {
mocked_contracts: BTreeMap<AccountId, ContractMock>,
nonce: u8,
}
impl<AccountId: Ord> MockRegistry<AccountId> {
pub fn new() -> Self {
Self {
mocked_contracts: BTreeMap::new(),
nonce: 0u8,
}
}
pub fn salt(&mut self) -> Vec<u8> {
self.nonce += 1;
vec![self.nonce]
}
pub fn register(&mut self, address: AccountId, mock: ContractMock) -> Option<ContractMock> {
self.mocked_contracts.insert(address, mock)
}
pub fn get(&self, address: &AccountId) -> Option<&ContractMock> {
self.mocked_contracts.get(address)
}
}