use quote::format_ident;
use syn::{parse_quote, Field};
use crate::shared::from_impl::*;
#[test]
fn test_generate_from_impl() {
let name = format_ident!("TestStruct");
let z_struct_name = format_ident!("ZTestStruct");
let field_a: Field = parse_quote!(pub a: u8);
let field_b: Field = parse_quote!(pub b: u16);
let field_c: Field = parse_quote!(pub c: Vec<u8>);
let meta_fields = vec![&field_a, &field_b];
let struct_fields = vec![&field_c];
let result = generate_from_impl::<false>(&name, &z_struct_name, &meta_fields, &struct_fields);
let result_str = result.unwrap().to_string();
assert!(result_str.contains("impl < 'a > From < ZTestStruct < 'a >> for TestStruct"));
assert!(result_str.contains("a :")); assert!(result_str.contains("b :")); assert!(result_str.contains("c :")); }
#[test]
fn test_generate_from_impl_mut() {
let name = format_ident!("TestStruct");
let z_struct_name = format_ident!("ZTestStruct");
let field_a: Field = parse_quote!(pub a: u8);
let field_b: Field = parse_quote!(pub b: bool);
let field_c: Field = parse_quote!(pub c: Option<u32>);
let meta_fields = vec![&field_a, &field_b];
let struct_fields = vec![&field_c];
let result = generate_from_impl::<true>(&name, &z_struct_name, &meta_fields, &struct_fields);
let result_str = result.unwrap().to_string();
assert!(result_str.contains("impl < 'a > From < ZTestStructMut < 'a >> for TestStruct"));
assert!(result_str.contains("a :")); assert!(result_str.contains("b :")); assert!(result_str.contains("c :")); }