#![allow(missing_docs)]
use ruchy::frontend::parser::Parser;
use ruchy::runtime::interpreter::{Interpreter, Value};
#[test]
fn test_stdlib010_each_basic_iteration() {
let code = r"
let items = [1, 2, 3]
items.each(fn(x) { x * 2 })
";
let mut parser = Parser::new(code);
let ast = parser.parse().expect("Parse failed");
let mut interpreter = Interpreter::new();
let result = interpreter.eval_expr(&ast).unwrap();
assert_eq!(result, Value::Nil);
}
#[test]
fn test_stdlib010_each_empty_array() {
let code = r"
let items = []
items.each(fn(x) { x * 2 })
";
let mut parser = Parser::new(code);
let ast = parser.parse().expect("Parse failed");
let mut interpreter = Interpreter::new();
let result = interpreter.eval_expr(&ast).unwrap();
assert_eq!(result, Value::Nil);
}
#[test]
fn test_stdlib010_each_returns_nil() {
let code = r"
let items = [1, 2, 3]
let result = items.each(fn(x) { x })
result
";
let mut parser = Parser::new(code);
let ast = parser.parse().expect("Parse failed");
let mut interpreter = Interpreter::new();
let result = interpreter.eval_expr(&ast).unwrap();
assert_eq!(result, Value::Nil);
}
#[test]
fn test_stdlib010_each_with_strings() {
let code = r#"
let items = ["a", "b", "c"]
items.each(fn(x) { x })
"#;
let mut parser = Parser::new(code);
let ast = parser.parse().expect("Parse failed");
let mut interpreter = Interpreter::new();
let result = interpreter.eval_expr(&ast).unwrap();
assert_eq!(result, Value::Nil);
}
#[test]
fn test_stdlib010_each_with_objects() {
let code = r#"
let items = [
{ name: "Alice", age: 30 },
{ name: "Bob", age: 25 }
]
items.each(fn(person) { person.name })
"#;
let mut parser = Parser::new(code);
let ast = parser.parse().expect("Parse failed");
let mut interpreter = Interpreter::new();
let result = interpreter.eval_expr(&ast).unwrap();
assert_eq!(result, Value::Nil);
}
#[test]
fn test_stdlib010_each_nested() {
let code = r"
let matrix = [[1, 2], [3, 4]]
matrix.each(fn(row) {
row.each(fn(val) { val * 2 })
})
";
let mut parser = Parser::new(code);
let ast = parser.parse().expect("Parse failed");
let mut interpreter = Interpreter::new();
let result = interpreter.eval_expr(&ast).unwrap();
assert_eq!(result, Value::Nil);
}
#[test]
fn test_stdlib010_each_after_filter() {
let code = r"
let items = [1, 2, 3, 4, 5]
items.filter(fn(x) { x % 2 == 0 }).each(fn(x) { x * 10 })
";
let mut parser = Parser::new(code);
let ast = parser.parse().expect("Parse failed");
let mut interpreter = Interpreter::new();
let result = interpreter.eval_expr(&ast).unwrap();
assert_eq!(result, Value::Nil);
}
#[test]
fn test_stdlib010_each_after_map() {
let code = r"
let items = [1, 2, 3]
items.map(fn(x) { x * 2 }).each(fn(x) { x + 1 })
";
let mut parser = Parser::new(code);
let ast = parser.parse().expect("Parse failed");
let mut interpreter = Interpreter::new();
let result = interpreter.eval_expr(&ast).unwrap();
assert_eq!(result, Value::Nil);
}