#![cfg(feature = "guest")]
use rustledger_plugin_types::{
EnrichedImporterOutput, EnrichmentWrapper, ImporterInput, ImporterOutput, wasm_importer_main,
};
mod short_form {
use super::*;
const fn identify(path: &str) -> bool {
!path.is_empty()
}
fn extract(_input: ImporterInput) -> ImporterOutput {
ImporterOutput::empty()
}
wasm_importer_main! {
name: "test-short",
description: "short-form macro should auto-default extract_enriched",
identify: identify,
extract: extract,
}
}
mod full_form {
use super::*;
const fn identify(path: &str) -> bool {
!path.is_empty()
}
fn extract(_input: ImporterInput) -> ImporterOutput {
ImporterOutput::empty()
}
fn extract_enriched(_input: ImporterInput) -> EnrichedImporterOutput {
EnrichedImporterOutput {
entries: vec![],
warnings: vec![],
errors: vec![],
}
}
wasm_importer_main! {
name: "test-full",
description: "full-form macro with explicit extract_enriched",
identify: identify,
extract: extract,
extract_enriched: extract_enriched,
}
}
mod with_closures {
use super::*;
fn extract_impl(_input: ImporterInput) -> ImporterOutput {
ImporterOutput::empty()
}
fn enriched_impl(_input: ImporterInput) -> EnrichedImporterOutput {
EnrichedImporterOutput {
entries: Vec::<(_, EnrichmentWrapper)>::new(),
warnings: vec![],
errors: vec![],
}
}
wasm_importer_main! {
name: "test-closure",
description: "non-capturing closures should also work",
identify: |path: &str| path.is_empty(),
extract: extract_impl,
extract_enriched: enriched_impl,
}
}
mod all_closures {
use super::*;
wasm_importer_main! {
name: "all-closures",
description: "every callback as a non-capturing closure",
identify: |path: &str| !path.is_empty(),
extract: |_input: ImporterInput| ImporterOutput::empty(),
extract_enriched: |_input: ImporterInput| EnrichedImporterOutput {
entries: Vec::<(_, EnrichmentWrapper)>::new(),
warnings: vec![],
errors: vec![],
},
}
}
#[test]
fn short_form_emits_expected_signatures() {
let _: extern "C" fn(u32) -> *mut u8 = short_form::__wasm_importer_alloc;
let _: extern "C" fn() -> u64 = short_form::__wasm_importer_metadata;
let _: extern "C" fn(u32, u32) -> u64 = short_form::__wasm_importer_identify;
let _: extern "C" fn(u32, u32) -> u64 = short_form::__wasm_importer_extract;
let _: extern "C" fn(u32, u32) -> u64 = short_form::__wasm_importer_extract_enriched;
}
#[test]
fn full_form_emits_expected_signatures() {
let _: extern "C" fn(u32) -> *mut u8 = full_form::__wasm_importer_alloc;
let _: extern "C" fn() -> u64 = full_form::__wasm_importer_metadata;
let _: extern "C" fn(u32, u32) -> u64 = full_form::__wasm_importer_identify;
let _: extern "C" fn(u32, u32) -> u64 = full_form::__wasm_importer_extract;
let _: extern "C" fn(u32, u32) -> u64 = full_form::__wasm_importer_extract_enriched;
}
#[test]
fn closures_emit_expected_signatures() {
let _: extern "C" fn(u32) -> *mut u8 = with_closures::__wasm_importer_alloc;
let _: extern "C" fn() -> u64 = with_closures::__wasm_importer_metadata;
let _: extern "C" fn(u32, u32) -> u64 = with_closures::__wasm_importer_identify;
let _: extern "C" fn(u32, u32) -> u64 = with_closures::__wasm_importer_extract;
let _: extern "C" fn(u32, u32) -> u64 = with_closures::__wasm_importer_extract_enriched;
}
#[test]
fn all_closures_emit_expected_signatures() {
let _: extern "C" fn(u32) -> *mut u8 = all_closures::__wasm_importer_alloc;
let _: extern "C" fn() -> u64 = all_closures::__wasm_importer_metadata;
let _: extern "C" fn(u32, u32) -> u64 = all_closures::__wasm_importer_identify;
let _: extern "C" fn(u32, u32) -> u64 = all_closures::__wasm_importer_extract;
let _: extern "C" fn(u32, u32) -> u64 = all_closures::__wasm_importer_extract_enriched;
}