use proc_macro2::TokenStream;
use quote::quote;
use syn::Ident;
pub fn generate_stream_set_type(
name: &Ident,
_stream_fields: &[(String, syn::Type)],
) -> TokenStream {
quote! {
#[derive(Debug, Clone, Copy, Default)]
pub struct #name;
}
}
#[cfg(test)]
mod tests {
use super::*;
use syn::parse_quote;
#[test]
fn test_generate_stream_set_type() {
let name = quote::format_ident!("TestStreamSet");
let stream_fields = vec![];
let output = generate_stream_set_type(&name, &stream_fields);
let output_str = output.to_string();
assert!(output_str.contains("struct TestStreamSet"));
assert!(output_str.contains("Debug"));
assert!(output_str.contains("Clone"));
}
#[test]
fn test_generate_stream_set_with_fields() {
let name = quote::format_ident!("TransferStreamSet");
let stream_fields = vec![
("from_account".to_string(), parse_quote!(StreamId)),
("to_account".to_string(), parse_quote!(StreamId)),
];
let output = generate_stream_set_type(&name, &stream_fields);
let output_str = output.to_string();
assert!(output_str.contains("struct TransferStreamSet"));
assert!(!output_str.contains("from_account"));
assert!(!output_str.contains("to_account"));
}
}