Files
khadhroony-solana-project/crates/ksp-core-lib/tests/public_api.rs
2026-08-14 15:35:19 +02:00

66 lines
2.5 KiB
Rust

// file: crates/ksp-core-lib/tests/public_api.rs
// version: 3
//! Integration tests for the public `ksp-core-lib` contracts.
ksp_core_lib::declare_program_id!(TEST_PRGID_SYSTEM, TEST_PRGIDPK_SYSTEM, "11111111111111111111111111111111");
fn public_result() -> ksp_core_lib::Result<()> {
let error = ksp_core_lib::Error::new(ksp_core_lib::ErrorCode::new("consumer", "failed"), "consumer failure").with_context("operation", "public_api");
return std::result::Result::Err(error);
}
#[test]
fn error_contract_is_consumable_from_crate_root() {
let result = public_result();
assert!(result.is_err());
let error = match result {
std::result::Result::Ok(()) => return,
std::result::Result::Err(error) => error,
};
assert_eq!(error.code(), ksp_core_lib::ErrorCode::new("consumer", "failed"));
assert_eq!(error.message(), "consumer failure");
assert_eq!(error.context(), &[ksp_core_lib::ErrorContext::new("operation", "public_api")]);
assert_eq!(std::string::ToString::to_string(&error), "consumer.failed: consumer failure");
return;
}
#[test]
fn program_id_contract_is_consumable_from_crate_root() {
assert_eq!(TEST_PRGID_SYSTEM, ksp_core_lib::PRGID_SOLANA_SYSTEM);
assert_eq!(TEST_PRGIDPK_SYSTEM, ksp_core_lib::PRGIDPK_SOLANA_SYSTEM);
assert_eq!(ksp_core_lib::entries().len(), 18);
assert_eq!(ksp_core_lib::native_program_ids().count(), 18);
let system = ksp_core_lib::find_program_id(ksp_core_lib::PRGID_SOLANA_SYSTEM);
let system = match system {
std::option::Option::Some(entry) => entry,
std::option::Option::None => return,
};
assert_eq!(system.code(), "solana.system");
assert_eq!(system.domain(), "solana");
assert_eq!(system.family(), "runtime");
assert_eq!(system.protocol(), "solana");
assert_eq!(system.pubkey(), ksp_core_lib::PRGIDPK_SOLANA_SYSTEM);
return;
}
#[test]
fn program_id_registry_supports_public_taxonomy_filters() {
let loader_count = ksp_core_lib::program_ids_by_family("loader").count();
let precompile_count = ksp_core_lib::program_ids_by_family("precompile").count();
let bpf_v2_count = ksp_core_lib::program_ids(
ksp_core_lib::ProgramIdFilter::new()
.with_domain("solana")
.with_family("loader")
.with_protocol("solana")
.with_subfamily("bpf")
.with_program_version("v2")
.with_kind(ksp_core_lib::ProgramIdKind::Loader),
)
.count();
assert_eq!(loader_count, 5);
assert_eq!(precompile_count, 3);
assert_eq!(bpf_v2_count, 1);
return;
}