pub mod account;
pub mod assertions;
pub mod builder;
pub mod context;
pub mod instruction;
pub mod instruction_builder;
pub mod test_helpers;
pub mod transaction;
pub use account::{get_anchor_account, get_anchor_account_unchecked, AccountError};
pub use assertions::AssertionHelpers;
pub use builder::{AnchorLiteSVM, ProgramTestExt};
pub use context::AnchorContext;
pub use instruction::{build_anchor_instruction, calculate_anchor_discriminator};
pub use instruction_builder::{InstructionBuilder, tuple_args, TupleArgs};
pub use test_helpers::TestHelpers;
pub use transaction::{TransactionError, TransactionHelpers, TransactionResult};
pub use litesvm::LiteSVM;
pub use solana_program::instruction::{AccountMeta, Instruction};
pub use solana_program::pubkey::Pubkey;
#[cfg(test)]
mod integration_tests {
use super::*;
use anchor_lang::AnchorSerialize;
use borsh::BorshSerialize;
#[test]
fn test_full_workflow() {
let svm = LiteSVM::new();
let program_id = Pubkey::new_unique();
let ctx = AnchorContext::new(svm, program_id);
#[derive(BorshSerialize)]
struct TestArgs {
value: u64,
}
impl AnchorSerialize for TestArgs {
fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
BorshSerialize::serialize(self, writer)
}
}
let accounts = vec![
AccountMeta::new(Pubkey::new_unique(), true),
AccountMeta::new_readonly(Pubkey::new_unique(), false),
];
let instruction = ctx
.build_instruction("test", accounts, TestArgs { value: 42 })
.unwrap();
assert_eq!(instruction.program_id, program_id);
assert!(!instruction.data.is_empty());
}
}