crate::ix!();
#[derive(Clone, Debug)]
pub enum AngleArg {
Reused(Ident),
Fresh(Ident),
Literal(syn::GenericArgument),
}
#[cfg(test)]
mod test_angle_arg {
use super::*;
use quote::ToTokens;
use syn::Ident;
use proc_macro2::Span;
#[test]
fn test_angle_arg_reused_creation() {
let id = Ident::new("Z", Span::call_site());
let arg = AngleArg::Reused(id.clone());
match arg {
AngleArg::Reused(ref ident) => {
assert_eq!(ident.to_string(), "Z");
}
AngleArg::Fresh(_) => panic!("Expected Reused variant"),
_ => {}
}
}
#[test]
fn test_angle_arg_fresh_creation() {
let id = Ident::new("OpTy0", Span::call_site());
let arg = AngleArg::Fresh(id.clone());
match arg {
AngleArg::Fresh(ref ident) => {
assert_eq!(ident.to_string(), "OpTy0");
}
AngleArg::Reused(_) => panic!("Expected Fresh variant"),
_ => {}
}
}
#[test]
fn test_angle_arg_clone() {
let original = AngleArg::Fresh(Ident::new("CloneTest", Span::call_site()));
let cloned = original.clone();
match cloned {
AngleArg::Fresh(id) => assert_eq!(id.to_string(), "CloneTest"),
AngleArg::Reused(_) => panic!("Expected Fresh variant"),
_ => {}
}
}
#[test]
fn test_angle_arg_debug() {
let id = Ident::new("ABC", Span::call_site());
let reused = AngleArg::Reused(id.clone());
let fresh = AngleArg::Fresh(id);
let reused_str = format!("{:?}", reused);
let fresh_str = format!("{:?}", fresh);
assert!(reused_str.contains("Reused("), "Got: {}", reused_str);
assert!(fresh_str.contains("Fresh("), "Got: {}", fresh_str);
}
}