66 lines
2.5 KiB
Rust
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;
|
|
}
|