interoptopus_backends 0.16.0

Utilities for backend authors
Documentation
use interoptopus_backends::casing::{rust_to_pascal, sanitize_delegate_name, sanitize_rust_name};

#[test]
fn pascal_simple() {
    assert_eq!(rust_to_pascal("my_type"), "MyType");
}

#[test]
fn pascal_already_capitalized() {
    assert_eq!(rust_to_pascal("MyStruct"), "MyStruct");
}

#[test]
fn pascal_spaces() {
    assert_eq!(rust_to_pascal("vec3 f32"), "Vec3F32");
}

#[test]
fn sanitize_name_generic() {
    assert_eq!(sanitize_rust_name("Weird2<u8, 5>"), "Weird2U85");
}

#[test]
fn sanitize_name_array() {
    assert_eq!(sanitize_rust_name("[u8; 5]"), "U85");
}

#[test]
fn sanitize_name_plain() {
    assert_eq!(sanitize_rust_name("MyStruct"), "MyStruct");
}

#[test]
fn sanitize_name_underscores() {
    assert_eq!(sanitize_rust_name("my_struct"), "MyStruct");
}

#[test]
fn sanitize_delegate_extern_c() {
    assert_eq!(sanitize_delegate_name("extern \"C\" fn(u8) -> u8"), "FnU8U8");
}

#[test]
fn sanitize_delegate_void_return() {
    assert_eq!(sanitize_delegate_name("extern \"C\" fn(Vec3f32) -> ()"), "FnVec3f32");
}

#[test]
fn sanitize_delegate_no_extern_prefix() {
    assert_eq!(sanitize_delegate_name("fn(u32, u32) -> bool"), "FnU32U32Bool");
}

#[test]
fn sanitize_delegate_no_args() {
    assert_eq!(sanitize_delegate_name("extern \"C\" fn() -> u32"), "FnU32");
}