use depyler_core::transpile_python_to_rust;
#[test]
fn test_reduce() {
let python = r#"
import functools
def sum_all(numbers: list) -> int:
return functools.reduce(lambda a, b: a + b, numbers)
"#;
let result = transpile_python_to_rust(python).expect("Transpilation failed");
assert!(result.contains("fold"));
}
#[test]
#[ignore = "DEPYLER-STDLIB-FUNCTOOLS: Not implemented yet - RED phase"]
fn test_partial() {
let python = r#"
import functools
def create_doubler() -> callable:
def multiply(a: int, b: int) -> int:
return a * b
return functools.partial(multiply, 2)
"#;
let result = transpile_python_to_rust(python).expect("Transpilation failed");
assert!(result.contains("partial") || result.contains("move") || result.contains("closure"));
}
#[test]
#[ignore = "DEPYLER-STDLIB-FUNCTOOLS: Not implemented yet - RED phase"]
fn test_lru_cache() {
let python = r#"
import functools
@functools.lru_cache(maxsize=128)
def fibonacci(n: int) -> int:
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
"#;
let result = transpile_python_to_rust(python).expect("Transpilation failed");
assert!(result.contains("cache") || result.contains("memo") || result.contains("HashMap"));
}