// 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; }