cratestack-macros 0.7.2

Rust-native schema-first framework for typed HTTP APIs, generated clients, and backend services.
Documentation
use cratestack_core::SourceSpan;

use super::*;

fn synthetic_span() -> SourceSpan {
    SourceSpan {
        start: 0,
        end: 0,
        line: 1,
    }
}

fn vector_type_ref(arity: TypeArity, dimension: u32) -> TypeRef {
    TypeRef {
        name: "Vector".to_owned(),
        name_span: synthetic_span(),
        arity,
        generic_args: Vec::new(),
        int_args: vec![dimension],
    }
}

#[test]
fn required_vector_field_generates_vec_f32() {
    let ty = vector_type_ref(TypeArity::Required, 1536);
    let tokens = rust_type_tokens(&ty);
    assert_eq!(tokens.to_string(), quote! { Vec < f32 > }.to_string());
}

#[test]
fn optional_vector_field_wraps_in_option() {
    let ty = vector_type_ref(TypeArity::Optional, 3);
    let tokens = rust_type_tokens(&ty);
    assert_eq!(
        tokens.to_string(),
        quote! { Option < Vec < f32 > > }.to_string()
    );
}