agsol-testbench-0.0.1-alpha.3 doesn't have any documentation.
Convenience data structures and methods for interacting with the Solana program test context.
Examples
Assume there's a Solana program with a processor of the form
# use Pubkey;
# use AccountInfo;
# use ProgramError;
// foo_program::processor
It can be loaded into the testbench as
use agsol_testbench::{Testbench, TestbenchProgram, TestUser};
use solana_program_test::processor;
# use solana_program::pubkey::Pubkey;
# use solana_program::account_info::AccountInfo;
# use solana_program::program_error::ProgramError;
# use solana_program_test::tokio;
# mod foo_program {
# use super::*;
# pub fn processor(id: &Pubkey, accounts: &[AccountInfo], data: &[u8]) -> Result<(), ProgramError> { Ok(()) }
# }
# #[tokio::main]
# async fn main() {
# let FOO_PROGRAM_ID = Pubkey::new(&[0; 32]);
# let BAR_PROGRAM_ID = Pubkey::new(&[1_u8; 32]);
// program `foo` with program pubkey FOO_PROGRAM_ID
let program_from_processor = TestbenchProgram {
name: "foo_bpf_program",
id: FOO_PROGRAM_ID,
process_instruction: processor!(foo_program::processor),
};
// program `bar` with program pubkey BAR_PROGRAM_ID
let program_from_binary = TestbenchProgram {
name: "bar_bpf_program",
id: BAR_PROGRAM_ID,
process_instruction: None,
};
// load programs into the test context
let mut testbench = Testbench::new(&[program_from_processor, program_from_binary]).await.unwrap();
// create a test user with an airdrop
let test_user = TestUser::new(&mut testbench).await.unwrap().unwrap();
# }