use rbatis_codegen::codegen::func;
use syn::{parse_str, Expr};
#[test]
fn test_translate_simple_expression() {
let expr: Expr = parse_str("42").unwrap();
let result = func::translate("", expr, &[]);
assert!(result.is_ok());
}
#[test]
fn test_translate_path_expression() {
let expr: Expr = parse_str("variable_name").unwrap();
let result = func::translate("", expr, &[]);
assert!(result.is_ok());
let translated = result.unwrap();
let token_stream = quote::quote! { #translated };
assert!(token_stream.to_string().contains("variable_name"));
}
#[test]
fn test_translate_ignored_variable() {
let expr: Expr = parse_str("ignored_var").unwrap();
let result = func::translate("", expr, &["ignored_var".to_string()]);
assert!(result.is_ok());
let translated = result.unwrap();
let token_stream = quote::quote! { #translated };
assert!(token_stream.to_string().contains("ignored_var"));
}
#[test]
fn test_translate_null() {
let expr: Expr = parse_str("null").unwrap();
let result = func::translate("", expr, &[]);
assert!(result.is_ok());
let translated = result.unwrap();
let token_stream = quote::quote! { #translated };
assert!(token_stream.to_string().contains("Null"));
}
#[test]
fn test_translate_sql_keyword() {
let expr: Expr = parse_str("sql").unwrap();
let result = func::translate("", expr, &[]);
assert!(result.is_ok());
let translated = result.unwrap();
let token_stream = quote::quote! { #translated };
assert!(token_stream.to_string().contains("sql"));
}
#[test]
fn test_impl_fn_basic() {
let result = func::impl_fn("", "test_fn", "\"1\"", true, &[]);
let token_stream = quote::quote! { #result };
assert!(!token_stream.to_string().is_empty());
}
#[test]
fn test_impl_fn_with_simple_expression() {
let result = func::impl_fn("", "test_fn", "\"1 + 2\"", true, &[]);
let token_stream = quote::quote! { #result };
assert!(!token_stream.to_string().is_empty());
}
#[test]
fn test_impl_fn_with_ignored_variables() {
let result = func::impl_fn(
"",
"test_fn",
"\"test + ignored\"",
true,
&["ignored".to_string()],
);
let token_stream = quote::quote! { #result };
assert!(!token_stream.to_string().is_empty());
}