use adze_common_syntax_core::{
FieldThenParams, NameValueExpr, filter_inner_type, try_extract_inner_type, wrap_leaf_type,
};
use std::collections::HashSet;
use syn::parse_quote;
#[test]
fn test_contract_lock_types() {
let nve: NameValueExpr = parse_quote!(key = "value");
assert_eq!(nve.path.to_string(), "key");
let _eq = &nve.eq_token;
let _expr = &nve.expr;
let ftp: FieldThenParams = parse_quote!(Type);
assert!(ftp.comma.is_none());
assert!(ftp.params.is_empty());
let _field = &ftp.field;
let _debug_nve = format!("{nve:?}");
let _cloned_nve = nve.clone();
let nve2: NameValueExpr = parse_quote!(key = "value");
assert_eq!(nve2, nve2.clone());
let _debug_ftp = format!("{ftp:?}");
}
#[test]
fn test_contract_lock_functions() {
let skip_over: HashSet<&str> = HashSet::from(["Box", "Arc"]);
let ty: syn::Type = parse_quote!(Vec<String>);
let (inner, extracted) = try_extract_inner_type(&ty, "Vec", &skip_over);
assert!(extracted);
assert!(!inner.to_token_stream().to_string().is_empty());
let ty: syn::Type = parse_quote!(Box<String>);
let filtered = filter_inner_type(&ty, &skip_over);
assert!(!filtered.to_token_stream().to_string().is_empty());
let ty: syn::Type = parse_quote!(String);
let wrapped = wrap_leaf_type(&ty, &skip_over);
assert!(!wrapped.to_token_stream().to_string().is_empty());
}
use quote::ToTokens;