Files
khadhroony-solana-project/crates/ksp-interface-lib/tests/external_consumer.rs
2026-08-28 05:24:26 +02:00

28 lines
1.4 KiB
Rust

// file: crates/ksp-interface-lib/tests/external_consumer.rs
// version: 1
//! Downstream-style consumer canary for the public Interface facade.
fn consume_instruction(instruction: ksp_interface_lib::ProgramInstruction) -> (ksp_interface_lib::Pubkey, usize, usize) {
return (*instruction.program_id(), instruction.accounts().len(), instruction.data().len());
}
#[test]
fn pre_005_external_consumer_uses_only_the_crate_root_facade() {
let program_id = ksp_interface_lib::Pubkey::new_from_array([0xA1_u8; 32]);
let account_id = ksp_interface_lib::Pubkey::new_from_array([0xA2_u8; 32]);
let readonly = ksp_interface_lib::ProgramAccountMeta::readonly(account_id, true);
let writable = ksp_interface_lib::ProgramAccountMeta::writable(account_id, false);
let instruction = ksp_interface_lib::ProgramInstruction::try_new(program_id, std::vec![readonly, writable, readonly], std::vec![7_u8, 8, 9]);
assert!(instruction.is_ok());
let instruction = match instruction {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
assert_eq!(consume_instruction(instruction), (program_id, 3, 3));
assert_eq!(ksp_interface_lib::MAX_PROGRAM_INSTRUCTION_ACCOUNTS, 255);
assert_eq!(ksp_interface_lib::MAX_PROGRAM_INSTRUCTION_DATA_LEN, 10_240);
assert_eq!(ksp_interface_lib::ERROR_CODE_PROGRAM_INSTRUCTION_LIMIT_EXCEEDED.domain(), "interface");
return;
}