use super::{classify_param_type, emit_param_conversion};
use crate::core::ir::TypeRef;
#[test]
fn classify_param_type_returns_plain_for_named() {
let ty = TypeRef::Named("Foo".to_string());
let result = classify_param_type(&ty);
assert!(result.is_some());
let (name, _) = result.unwrap();
assert_eq!(name, "Foo");
}
#[test]
fn classify_param_type_returns_none_for_primitive() {
let ty = TypeRef::Primitive(crate::core::ir::PrimitiveType::Bool);
assert!(classify_param_type(&ty).is_none());
}
#[test]
fn emit_param_conversion_guards_optional() {
let mut out = String::new();
emit_param_conversion(&mut out, "_rust_x", "x", "convert(x)", true);
assert!(out.contains("if x is not None else None"));
}
#[test]
fn emit_param_conversion_direct_when_required() {
let mut out = String::new();
emit_param_conversion(&mut out, "_rust_x", "x", "convert(x)", false);
assert!(!out.contains("if x is not None"));
assert!(out.contains("_rust_x = convert(x)"));
}
#[test]
fn async_pyo3_functions_place_bindings_inside_async_block() {
}