MolluskContext

Struct MolluskContext 

Source
pub struct MolluskContext<AS: AccountStore> {
    pub mollusk: Mollusk,
    pub account_store: Rc<RefCell<AS>>,
}
Expand description

A stateful wrapper around Mollusk that provides additional context and convenience features for testing programs.

MolluskContext maintains persistent state between instruction executions, starting with an account store that automatically manages account lifecycles. This makes it ideal for complex testing scenarios involving multiple instructions, instruction chains, and stateful program interactions.

Note: Account state is only persisted if the instruction execution was successful. If an instruction fails, the account state will not be updated.

The API is functionally identical to Mollusk but with enhanced state management and a streamlined interface. Namely, the input accounts slice is no longer required, and the returned result does not contain a resulting_accounts field.

Fields§

§mollusk: Mollusk§account_store: Rc<RefCell<AS>>

Implementations§

Source§

impl<AS: AccountStore> MolluskContext<AS>

Source

pub fn process_instruction( &self, instruction: &Instruction, ) -> InstructionResult

Process an instruction using the minified Solana Virtual Machine (SVM) environment. Simply returns the result.

Source

pub fn process_instruction_chain( &self, instructions: &[Instruction], ) -> InstructionResult

Process a chain of instructions using the minified Solana Virtual Machine (SVM) environment.

Source

pub fn process_and_validate_instruction( &self, instruction: &Instruction, checks: &[Check<'_>], ) -> InstructionResult

Process an instruction using the minified Solana Virtual Machine (SVM) environment, then perform checks on the result.

Source

pub fn process_and_validate_instruction_chain( &self, instructions: &[(&Instruction, &[Check<'_>])], ) -> InstructionResult

Process a chain of instructions using the minified Solana Virtual Machine (SVM) environment, then perform checks on the result.

Auto Trait Implementations§

§

impl<AS> Freeze for MolluskContext<AS>

§

impl<AS> !RefUnwindSafe for MolluskContext<AS>

§

impl<AS> !Send for MolluskContext<AS>

§

impl<AS> !Sync for MolluskContext<AS>

§

impl<AS> Unpin for MolluskContext<AS>

§

impl<AS> !UnwindSafe for MolluskContext<AS>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,