#![cfg(feature = "vectordata")]
use polydat::ast::PortType;
use polydat::dsl::compile::compile_polydat;
use polydat::kernel::Metadata;
#[test]
fn dataset_accessor_export_is_native_vec_f32() {
let src = r#"
input prebuffered: handle
input q: u64
query_vector := query_vector_at(prebuffered, q)
"#;
let kernel = compile_polydat(src).expect("compile");
assert_eq!(
kernel.output_port_type("query_vector"),
Some(PortType::VecF32),
"the exported dataset-accessor wire must keep its native type"
);
}
#[test]
fn text_consumer_does_not_downgrade_the_export() {
let src = r#"
input prebuffered: handle
input q: u64
query_vector := query_vector_at(prebuffered, q)
normed := vec_norm(query_vector)
rendered := printf("ann of {}", query_vector)
"#;
let kernel = compile_polydat(src).expect("compile");
assert_eq!(
kernel.output_port_type("query_vector"),
Some(PortType::VecF32),
"a formatting consumer must not rewire the export through a \
Str conversion (per-consumer-edge adapters only)"
);
assert_eq!(
kernel.output_port_type("normed"),
Some(PortType::VecF32),
"typed consumers downstream of the shared wire stay native"
);
assert_eq!(
kernel.output_port_type("rendered"),
Some(PortType::Str),
"the formatting consumer's own output is Str — presentation \
happens on its edge, not on the source wire"
);
}