test.rs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. use litesvm::LiteSVM;
  2. use solana_instruction::{AccountMeta, Instruction};
  3. use solana_keypair::{Keypair, Signer};
  4. use solana_native_token::LAMPORTS_PER_SOL;
  5. use solana_pubkey::Pubkey;
  6. use solana_transaction::Transaction;
  7. #[test]
  8. fn test_rent() {
  9. let mut svm = LiteSVM::new();
  10. let program_id = Pubkey::new_unique();
  11. let program_bytes = include_bytes!("../../tests/fixtures/program.so");
  12. svm.add_program(program_id, program_bytes).unwrap();
  13. let payer = Keypair::new();
  14. svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL * 10).unwrap();
  15. let new_keypair = Keypair::new();
  16. let ix = Instruction {
  17. program_id,
  18. accounts: vec![
  19. AccountMeta::new(payer.pubkey(), true),
  20. AccountMeta::new(new_keypair.pubkey(), true),
  21. AccountMeta::new(payer.pubkey(), true),
  22. AccountMeta::new(solana_system_interface::program::ID, false),
  23. ],
  24. data: [0_u8; 1000].to_vec(),
  25. };
  26. let tx = Transaction::new_signed_with_payer(
  27. &[ix],
  28. Some(&payer.pubkey()),
  29. &[&payer, &new_keypair],
  30. svm.latest_blockhash(),
  31. );
  32. assert!(svm.send_transaction(tx).is_ok());
  33. // rent
  34. let _rent = svm.get_account(&new_keypair.pubkey()).unwrap().lamports;
  35. }