#[cfg(all(test, feature = "repl"))]
mod tests {
use crate::runtime::Repl;
fn eval(code: &str) -> String {
let mut repl = Repl::new(std::env::temp_dir()).expect("Repl::new should succeed");
repl.eval(code).expect("eval should succeed")
}
fn try_eval(code: &str) -> Option<String> {
let mut repl = Repl::new(std::env::temp_dir()).expect("Repl::new should succeed");
repl.eval(code).ok()
}
#[test]
fn test_sqrt_int() {
let result = eval("sqrt(16)");
assert!(result == "4" || result == "4.0");
}
#[test]
fn test_abs() {
assert_eq!(eval("abs(-5)"), "5");
assert_eq!(eval("abs(5)"), "5");
}
#[test]
fn test_abs_float() {
let result = eval("abs(-3.14)");
assert!(result.contains("3.14"));
}
#[test]
fn test_floor() {
assert_eq!(eval("floor(3.7)"), "3");
}
#[test]
fn test_floor_negative() {
assert_eq!(eval("floor(-3.2)"), "-4");
}
#[test]
fn test_ceil() {
assert_eq!(eval("ceil(3.2)"), "4");
}
#[test]
fn test_ceil_negative() {
assert_eq!(eval("ceil(-3.7)"), "-3");
}
#[test]
fn test_round_down() {
assert_eq!(eval("round(3.4)"), "3");
}
#[test]
fn test_round_up() {
assert_eq!(eval("round(3.6)"), "4");
}
#[test]
fn test_min() {
assert_eq!(eval("min(3, 5)"), "3");
assert_eq!(eval("min(-1, 1)"), "-1");
}
#[test]
fn test_max() {
assert_eq!(eval("max(3, 5)"), "5");
assert_eq!(eval("max(-1, 1)"), "1");
}
#[test]
fn test_pow_int() {
assert_eq!(eval("pow(2, 3)"), "8");
}
#[test]
fn test_pow_zero() {
assert_eq!(eval("pow(10, 0)"), "1");
}
#[test]
fn test_sin() {
let result = eval("sin(0)");
assert!(result == "0" || result.starts_with("0.0") || result.contains("-0"));
}
#[test]
fn test_cos() {
let result = eval("cos(0)");
assert!(result == "1" || result.starts_with("1.0"));
}
#[test]
fn test_tan() {
let result = eval("tan(0)");
assert!(result == "0" || result.starts_with("0.0") || result.contains("-0"));
}
#[test]
fn test_log_e() {
let result = eval("log(2.718281828459045)");
let val: f64 = result.parse().unwrap_or(0.0);
assert!((val - 1.0).abs() < 0.01);
}
#[test]
fn test_log10_100() {
let result = eval("log10(100)");
assert!(result == "2" || result.starts_with("2.0"));
}
#[test]
fn test_exp_zero() {
let result = eval("exp(0)");
assert!(result == "1" || result.starts_with("1.0"));
}
#[test]
fn test_len_array() {
assert_eq!(eval("len([1, 2, 3])"), "3");
}
#[test]
fn test_len_empty_array() {
assert_eq!(eval("len([])"), "0");
}
#[test]
fn test_len_string() {
assert_eq!(eval("len(\"hello\")"), "5");
}
#[test]
fn test_len_empty_string() {
assert_eq!(eval("len(\"\")"), "0");
}
#[test]
fn test_range_basic() {
let result = eval("range(0, 3)");
assert!(!result.is_empty());
}
#[test]
fn test_sorted() {
let result = eval("sorted([3, 1, 2])");
assert!(result.contains("1") && result.contains("2") && result.contains("3"));
}
#[test]
fn test_reversed() {
let result = eval("reversed([1, 2, 3])");
assert!(result.contains("3") && result.contains("2") && result.contains("1"));
}
#[test]
fn test_enumerate() {
let result = eval("enumerate([\"a\", \"b\"])");
assert!(!result.is_empty());
}
#[test]
fn test_zip_arrays() {
let result = eval("zip([1, 2], [\"a\", \"b\"])");
assert!(!result.is_empty());
}
#[test]
fn test_take_basic() {
let result = eval("take([1, 2, 3, 4], 2)");
assert!(result.contains("1"));
}
#[test]
fn test_drop_basic() {
let result = eval("drop([1, 2, 3, 4], 2)");
assert!(result.contains("3") || result.contains("4"));
}
#[test]
fn test_int_from_float() {
assert_eq!(eval("int(3.14)"), "3");
}
#[test]
fn test_int_from_string() {
assert_eq!(eval("int(\"42\")"), "42");
}
#[test]
fn test_float_from_int() {
let result = eval("float(42)");
assert!(result == "42" || result == "42.0");
}
#[test]
fn test_str_from_int() {
let result = eval("str(42)");
assert!(result.contains("42"));
}
#[test]
fn test_str_from_bool() {
let result = eval("str(true)");
assert!(result.contains("true"));
}
#[test]
fn test_bool_from_int() {
assert_eq!(eval("bool(1)"), "true");
assert_eq!(eval("bool(0)"), "false");
}
#[test]
fn test_string_len_method() {
assert_eq!(eval("\"hello\".len()"), "5");
}
#[test]
fn test_string_upper_method() {
let result = eval("\"hello\".upper()");
assert!(result.contains("HELLO"));
}
#[test]
fn test_string_lower_method() {
let result = eval("\"HELLO\".lower()");
assert!(result.contains("hello"));
}
#[test]
fn test_string_trim_method() {
let result = eval("\" hello \".trim()");
assert!(result.contains("hello"));
}
#[test]
fn test_string_split_method() {
let result = eval("\"a,b,c\".split(\",\")");
assert!(result.contains("a"));
}
#[test]
fn test_string_contains_method() {
assert_eq!(eval("\"hello\".contains(\"ell\")"), "true");
assert_eq!(eval("\"hello\".contains(\"xyz\")"), "false");
}
#[test]
fn test_string_starts_with_method() {
assert_eq!(eval("\"hello\".starts_with(\"hel\")"), "true");
}
#[test]
fn test_string_ends_with_method() {
assert_eq!(eval("\"hello\".ends_with(\"llo\")"), "true");
}
#[test]
fn test_string_replace_method() {
let result = eval("\"hello\".replace(\"l\", \"L\")");
assert!(result.contains("L"));
}
#[test]
fn test_chars_method() {
let result = eval("\"hi\".chars()");
assert!(!result.is_empty());
}
#[test]
fn test_type_of_int() {
let result = eval("type_of(42)");
assert!(result.to_lowercase().contains("integer"));
}
#[test]
fn test_type_of_float() {
let result = eval("type_of(3.14)");
assert!(result.to_lowercase().contains("float"));
}
#[test]
fn test_type_of_string() {
let result = eval("type_of(\"hello\")");
assert!(result.to_lowercase().contains("string"));
}
#[test]
fn test_type_of_bool() {
let result = eval("type_of(true)");
assert!(result.to_lowercase().contains("bool"));
}
#[test]
fn test_type_of_array() {
let result = eval("type_of([1,2,3])");
assert!(result.to_lowercase().contains("array"));
}
#[test]
fn test_is_nil() {
assert_eq!(eval("is_nil(nil)"), "true");
assert_eq!(eval("is_nil(42)"), "false");
}
#[test]
fn test_assert_true() {
let result = eval("assert(true)");
assert!(result == "nil" || result == "()" || result.is_empty() || result == "true");
}
#[test]
fn test_assert_eq_same() {
let result = eval("assert_eq(1, 1)");
assert!(result == "nil" || result == "()" || result.is_empty() || result == "true");
}
#[test]
fn test_hash_deterministic() {
let result1 = eval("hash(\"hello\")");
let result2 = eval("hash(\"hello\")");
assert_eq!(result1, result2);
}
#[test]
fn test_println() {
let result = eval("println(\"test\")");
assert!(result == "nil" || result == "()" || result.is_empty());
}
#[test]
fn test_print() {
let result = eval("print(\"test\")");
assert!(result == "nil" || result == "()" || result.is_empty());
}
#[test]
fn test_dbg() {
let result = eval("dbg(42)");
assert!(result.contains("42"));
}
#[test]
fn test_push_array() {
let result = eval("push([1, 2], 3)");
assert!(result.contains("3"));
}
#[test]
fn test_pop_array() {
let result = eval("pop([1, 2, 3])");
assert!(!result.is_empty());
}
#[test]
fn test_append_arrays() {
let result = eval("append([1, 2], [3, 4])");
assert!(result.contains("1") || result.contains("4"));
}
#[test]
fn test_keys_object() {
let result = eval("keys({a: 1, b: 2})");
assert!(result.contains("a") || result.contains("b"));
}
#[test]
fn test_values_object() {
let result = eval("values({a: 1, b: 2})");
assert!(result.contains("1") || result.contains("2"));
}
#[test]
fn test_entries_object() {
let result = eval("entries({a: 1})");
assert!(!result.is_empty());
}
#[test]
fn test_random() {
let result = eval("random()");
let val: f64 = result.parse().unwrap_or(-1.0);
assert!(val >= 0.0 && val <= 1.0);
}
#[test]
fn test_min_same_values() {
assert_eq!(eval("min(5, 5)"), "5");
}
#[test]
fn test_max_same_values() {
assert_eq!(eval("max(5, 5)"), "5");
}
#[test]
fn test_abs_zero() {
assert_eq!(eval("abs(0)"), "0");
}
#[test]
fn test_sqrt_one() {
let result = eval("sqrt(1)");
assert!(result == "1" || result == "1.0");
}
#[test]
fn test_pow_one_power() {
assert_eq!(eval("pow(5, 1)"), "5");
}
#[test]
fn test_array_len_function() {
assert_eq!(eval("len([1,2,3])"), "3");
}
#[test]
fn test_array_first_method_via_index() {
assert_eq!(eval("[1,2,3][0]"), "1");
}
#[test]
fn test_array_last_method_via_index() {
assert_eq!(eval("[1,2,3][-1]"), "3");
}
#[test]
fn test_array_sorted_function() {
let result = eval("sorted([3,1,2])");
assert!(result.contains("1"));
}
#[test]
fn test_array_reversed_function() {
let result = eval("reversed([1,2,3])");
assert!(result.contains("3"));
}
#[test]
fn test_env_var_nonexistent() {
let _result = try_eval("env_var(\"NONEXISTENT_VAR_12345\")");
}
#[test]
fn test_env_current_dir() {
let result = eval("env_current_dir()");
assert!(!result.is_empty());
}
#[test]
fn test_env_temp_dir() {
let result = eval("env_temp_dir()");
assert!(!result.is_empty());
}
#[test]
fn test_path_join() {
let result = eval("path_join(\"/home\", \"user\")");
assert!(result.contains("home") && result.contains("user"));
}
#[test]
fn test_path_parent() {
let result = eval("path_parent(\"/home/user\")");
assert!(result.contains("home"));
}
#[test]
fn test_path_file_name() {
let result = eval("path_file_name(\"/home/user/file.txt\")");
assert!(result.contains("file.txt"));
}
#[test]
fn test_path_file_stem() {
let result = eval("path_file_stem(\"/home/user/file.txt\")");
assert!(result.contains("file"));
}
#[test]
fn test_path_extension() {
let result = eval("path_extension(\"/home/user/file.txt\")");
assert!(result.contains("txt"));
}
#[test]
fn test_path_is_absolute_true() {
assert_eq!(eval("path_is_absolute(\"/home/user\")"), "true");
}
#[test]
fn test_path_is_absolute_false() {
assert_eq!(eval("path_is_absolute(\"relative/path\")"), "false");
}
#[test]
fn test_path_is_relative_true() {
assert_eq!(eval("path_is_relative(\"relative/path\")"), "true");
}
#[test]
fn test_path_is_relative_false() {
assert_eq!(eval("path_is_relative(\"/absolute/path\")"), "false");
}
#[test]
fn test_json_stringify_int() {
let result = eval("json_stringify(42)");
assert!(result.contains("42"));
}
#[test]
fn test_json_stringify_string() {
let result = eval("json_stringify(\"hello\")");
assert!(result.contains("hello"));
}
#[test]
fn test_json_stringify_bool() {
let result_true = eval("json_stringify(true)");
let result_false = eval("json_stringify(false)");
assert!(result_true.contains("true"));
assert!(result_false.contains("false"));
}
#[test]
fn test_json_validate_valid() {
assert_eq!(eval("json_validate(\"{\\\"key\\\": 42}\")"), "true");
}
#[test]
fn test_json_validate_invalid() {
assert_eq!(eval("json_validate(\"not json\")"), "false");
}
#[test]
fn test_json_type_object() {
let result = eval("json_type(\"{}\")");
assert!(result.to_lowercase().contains("object") || result.contains("Object"));
}
#[test]
fn test_json_type_array() {
let result = eval("json_type(\"[]\")");
assert!(result.to_lowercase().contains("array") || result.contains("Array"));
}
#[test]
fn test_json_type_number() {
let result = eval("json_type(\"42\")");
assert!(
result.to_lowercase().contains("number")
|| result.contains("Number")
|| result.contains("int")
);
}
#[test]
fn test_json_type_string() {
let result = eval("json_type(\"\\\"hello\\\"\")");
assert!(result.to_lowercase().contains("string") || result.contains("String"));
}
#[test]
fn test_json_type_bool() {
let result = eval("json_type(\"true\")");
assert!(result.to_lowercase().contains("bool") || result.contains("Bool"));
}
#[test]
fn test_json_type_null() {
let result = eval("json_type(\"null\")");
assert!(
result.to_lowercase().contains("null")
|| result.contains("Null")
|| result.contains("nil")
);
}
#[test]
fn test_assert_eq_passing() {
let result = eval("assert_eq(1, 1)");
assert!(result.is_empty() || result.contains("nil") || result == "()");
}
#[test]
fn test_assert_passing() {
let result = eval("assert(true)");
assert!(result.is_empty() || result.contains("nil") || result == "()");
}
#[test]
fn test_log_natural() {
let result = eval("log(2.718281828)");
let val: f64 = result.parse().unwrap_or(0.0);
assert!((val - 1.0).abs() < 0.1);
}
#[test]
fn test_log10() {
let result = eval("log10(100)");
let val: f64 = result.parse().unwrap_or(0.0);
assert!((val - 2.0).abs() < 0.01);
}
#[test]
fn test_exp() {
let result = eval("exp(0)");
let val: f64 = result.parse().unwrap_or(0.0);
assert!((val - 1.0).abs() < 0.01);
}
#[test]
fn test_exp_one() {
let result = eval("exp(1)");
let val: f64 = result.parse().unwrap_or(0.0);
assert!((val - 2.718).abs() < 0.1);
}
#[test]
fn test_range_one_arg() {
let result = eval("range(5)");
assert!(result.contains("0") && result.contains("4"));
}
#[test]
fn test_range_two_args() {
let result = eval("range(2, 5)");
assert!(result.contains("2") && result.contains("4"));
}
#[test]
fn test_range_three_args() {
let result = eval("range(0, 10, 2)");
assert!(result.contains("0") && result.contains("8"));
}
#[test]
fn test_timestamp() {
let result = eval("timestamp()");
let val: i64 = result.parse().unwrap_or(0);
assert!(val > 0);
}
#[test]
fn test_is_nil_with_nil() {
let result = eval("is_nil(nil)");
assert_eq!(result, "true");
}
#[test]
fn test_is_nil_with_value() {
let result = eval("is_nil(42)");
assert_eq!(result, "false");
}
#[test]
fn test_is_nil_with_empty_string() {
let result = eval("is_nil(\"\")");
assert_eq!(result, "false");
}
#[test]
fn test_reverse_array() {
let result = eval("reverse([1, 2, 3])");
assert!(result.contains("3") && result.contains("1"));
}
#[test]
fn test_reverse_string() {
let result = eval("reverse(\"abc\")");
assert!(result.contains("cba") || result.contains("c"));
}
#[test]
fn test_push_to_array() {
let result = eval("push([1, 2], 3)");
assert!(result.contains("1") && result.contains("2") && result.contains("3"));
}
#[test]
fn test_pop_from_array() {
let result = eval("pop([1, 2, 3])");
assert!(result.contains("1") || result.contains("2") || result.contains("3"));
}
#[test]
fn test_sort_integers() {
let result = eval("sort([3, 1, 4, 1, 5])");
assert!(result.contains("1"));
}
#[test]
fn test_zip_two_arrays() {
let result = eval("zip([1, 2], [\"a\", \"b\"])");
assert!(result.contains("1") && result.contains("a"));
}
#[test]
fn test_enumerate_array() {
let result = eval("enumerate([\"a\", \"b\", \"c\"])");
assert!(result.contains("0") && result.contains("a"));
}
#[test]
fn test_str_from_float_conversion() {
let result = eval("str(3.14)");
assert!(result.contains("3.14"));
}
#[test]
fn test_float_from_string_conversion() {
let result = eval("float(\"3.14\")");
assert!(result.contains("3.14"));
}
#[test]
fn test_bool_from_int_zero_value() {
let result = eval("bool(0)");
assert_eq!(result, "false");
}
#[test]
fn test_bool_from_int_nonzero_value() {
let result = eval("bool(1)");
assert_eq!(result, "true");
}
#[test]
fn test_bool_from_empty_string_value() {
let result = eval("bool(\"\")");
assert_eq!(result, "false");
}
#[test]
fn test_bool_from_nonempty_string_value() {
let result = eval("bool(\"hello\")");
assert_eq!(result, "true");
}
#[test]
fn test_assert_eq_same_ints() {
let result = eval("assert_eq(42, 42)");
assert!(result.is_empty() || result.contains("nil") || result.contains("()"));
}
#[test]
fn test_random_in_range() {
for _ in 0..5 {
let result = eval("random()");
let val: f64 = result.parse().unwrap_or(-1.0);
assert!(
val >= 0.0 && val < 1.0,
"random() should return 0.0 <= x < 1.0"
);
}
}
#[test]
fn test_parse_int_valid() {
let result = eval("parse_int(\"123\")");
assert!(result.contains("123") || result.contains("Some"));
}
#[test]
fn test_parse_float_valid() {
let result = eval("parse_float(\"3.14\")");
assert!(result.contains("3.14") || result.contains("Some"));
}
#[test]
fn test_to_string_int() {
let result = eval("to_string(42)");
assert!(result.contains("42"));
}
#[test]
fn test_to_string_bool() {
let result = eval("to_string(true)");
assert!(result.contains("true"));
}
#[test]
fn test_abs_positive_r125() {
let result = eval("abs(42)");
assert!(result.contains("42"));
}
#[test]
fn test_abs_negative_r125() {
let result = eval("abs(-42)");
assert!(result.contains("42"));
}
#[test]
fn test_abs_zero_r125() {
let result = eval("abs(0)");
assert!(result.contains("0"));
}
#[test]
fn test_min_two_values_r125() {
let result = eval("min(10, 5)");
assert!(result.contains("5"));
}
#[test]
fn test_max_two_values_r125() {
let result = eval("max(10, 5)");
assert!(result.contains("10"));
}
#[test]
fn test_sqrt_positive_r125() {
let result = eval("sqrt(4.0)");
assert!(result.contains("2"));
}
#[test]
fn test_floor_float_r125() {
let result = eval("floor(3.7)");
assert!(result.contains("3"));
}
#[test]
fn test_ceil_float_r125() {
let result = eval("ceil(3.2)");
assert!(result.contains("4"));
}
#[test]
fn test_round_float_up_r125() {
let result = eval("round(3.7)");
assert!(result.contains("4"));
}
#[test]
fn test_round_float_down_r125() {
let result = eval("round(3.2)");
assert!(result.contains("3"));
}
#[test]
fn test_len_string_r125() {
let result = eval("len(\"hello\")");
assert!(result.contains("5"));
}
#[test]
fn test_len_empty_string_r125() {
let result = eval("len(\"\")");
assert!(result.contains("0"));
}
#[test]
fn test_type_of_int_r125() {
let result = eval("type_of(42)");
assert!(
result.contains("int")
|| result.contains("Integer")
|| result.contains("i32")
|| result.contains("i64")
);
}
#[test]
fn test_type_of_string_r125() {
let result = eval("type_of(\"hello\")");
assert!(result.contains("String") || result.contains("str"));
}
#[test]
fn test_type_of_bool_r125() {
let result = eval("type_of(true)");
assert!(result.contains("bool") || result.contains("Bool"));
}
#[test]
fn test_sin_zero_r126() {
let result = eval("sin(0.0)");
assert!(result.contains("0"));
}
#[test]
fn test_sin_integer_r126() {
let result = eval("sin(0)");
assert!(result.contains("0"));
}
#[test]
fn test_cos_zero_r126() {
let result = eval("cos(0.0)");
assert!(result.contains("1"));
}
#[test]
fn test_cos_integer_r126() {
let result = eval("cos(0)");
assert!(result.contains("1"));
}
#[test]
fn test_tan_zero_r126() {
let result = eval("tan(0.0)");
assert!(result.contains("0"));
}
#[test]
fn test_tan_integer_r126() {
let result = eval("tan(0)");
assert!(result.contains("0"));
}
#[test]
fn test_log_e_r126() {
let result = eval("log(2.718281828)");
assert!(result.contains("0.9") || result.contains("1"));
}
#[test]
fn test_log_integer_r126() {
let result = eval("log(1)");
assert!(result.contains("0"));
}
#[test]
fn test_log10_ten_r126() {
let result = eval("log10(10.0)");
assert!(result.contains("1"));
}
#[test]
fn test_log10_integer_r126() {
let result = eval("log10(100)");
assert!(result.contains("2"));
}
#[test]
fn test_exp_zero_r126() {
let result = eval("exp(0.0)");
assert!(result.contains("1"));
}
#[test]
fn test_exp_one_r126() {
let result = eval("exp(1.0)");
assert!(result.contains("2.71") || result.contains("2.7"));
}
#[test]
fn test_exp_integer_r126() {
let result = eval("exp(0)");
assert!(result.contains("1"));
}
#[test]
fn test_pow_int_int_r126() {
let result = eval("pow(2, 3)");
assert!(result.contains("8"));
}
#[test]
fn test_pow_float_int_r126() {
let result = eval("pow(2.0, 3)");
assert!(result.contains("8"));
}
#[test]
fn test_pow_int_float_r126() {
let result = eval("pow(2, 3.0)");
assert!(result.contains("8"));
}
#[test]
fn test_pow_float_float_r126() {
let result = eval("pow(2.0, 3.0)");
assert!(result.contains("8"));
}
#[test]
fn test_pow_negative_exp_r126() {
let result = eval("pow(2, -1)");
assert!(result.contains("0.5"));
}
#[test]
fn test_min_int_float_r126() {
let result = eval("min(5, 3.5)");
assert!(result.contains("3.5"));
}
#[test]
fn test_min_float_int_r126() {
let result = eval("min(3.5, 5)");
assert!(result.contains("3.5"));
}
#[test]
fn test_max_int_float_r126() {
let result = eval("max(5, 3.5)");
assert!(result.contains("5"));
}
#[test]
fn test_max_float_int_r126() {
let result = eval("max(3.5, 5)");
assert!(result.contains("5"));
}
#[test]
fn test_max_float_float_r126() {
let result = eval("max(3.5, 7.5)");
assert!(result.contains("7.5"));
}
#[test]
fn test_min_float_float_r126() {
let result = eval("min(3.5, 7.5)");
assert!(result.contains("3.5"));
}
#[test]
fn test_abs_negative_float_r126() {
let result = eval("abs(-3.14)");
assert!(result.contains("3.14"));
}
#[test]
fn test_abs_positive_float_r126() {
let result = eval("abs(3.14)");
assert!(result.contains("3.14"));
}
#[test]
fn test_sqrt_integer_r126() {
let result = eval("sqrt(9)");
assert!(result.contains("3"));
}
#[test]
fn test_sqrt_float_r126() {
let result = eval("sqrt(16.0)");
assert!(result.contains("4"));
}
#[test]
fn test_floor_integer_r126() {
let result = eval("floor(5)");
assert!(result.contains("5"));
}
#[test]
fn test_ceil_integer_r126() {
let result = eval("ceil(5)");
assert!(result.contains("5"));
}
#[test]
fn test_round_integer_r126() {
let result = eval("round(5)");
assert!(result.contains("5"));
}
#[test]
fn test_floor_negative_r126() {
let result = eval("floor(-3.7)");
assert!(result.contains("-4"));
}
#[test]
fn test_ceil_negative_r126() {
let result = eval("ceil(-3.7)");
assert!(result.contains("-3"));
}
#[test]
fn test_round_half_r126() {
let result = eval("round(3.5)");
assert!(result.contains("4"));
}
#[test]
fn test_random_returns_number_r126() {
let result = eval("random()");
assert!(result.contains("0.") || result.contains("0") || result.contains("1"));
}
#[test]
fn test_to_string_int_r126() {
let result = eval("to_string(42)");
assert!(result.contains("42"));
}
#[test]
fn test_to_string_float_r126() {
let result = eval("to_string(3.14)");
assert!(result.contains("3.14"));
}
#[test]
fn test_str_int_r126() {
let result = eval("str(42)");
assert!(result.contains("42"));
}
#[test]
fn test_str_float_r126() {
let result = eval("str(3.14)");
assert!(result.contains("3.14"));
}
#[test]
fn test_len_array_r126() {
let result = eval("len([1, 2, 3])");
assert!(result.contains("3"));
}
#[test]
fn test_len_empty_array_r126() {
let result = eval("len([])");
assert!(result.contains("0"));
}
#[test]
fn test_type_of_float_r126() {
let result = eval("type_of(3.14)");
assert!(result.contains("float") || result.contains("Float") || result.contains("f64"));
}
#[test]
fn test_type_of_array_r126() {
let result = eval("type_of([1, 2, 3])");
assert!(
result.contains("array")
|| result.contains("Array")
|| result.contains("Vec")
|| result.contains("list")
);
}
#[test]
fn test_range_single_arg_r126() {
let result = eval("range(5)");
assert!(result.contains("[") && result.contains("]"));
}
#[test]
fn test_range_two_args_r126() {
let result = eval("range(1, 5)");
assert!(result.contains("[") && result.contains("]"));
}
#[test]
fn test_range_three_args_r126() {
let result = eval("range(0, 10, 2)");
assert!(result.contains("[") && result.contains("]"));
}
#[test]
fn test_push_array_r126() {
let result = eval("push([1, 2], 3)");
assert!(result.contains("3"));
}
#[test]
fn test_reverse_array_r126() {
let result = eval("reverse([1, 2, 3])");
assert!(result.contains("3") && result.contains("1"));
}
#[test]
fn test_reverse_string_r126() {
let result = eval("reverse(\"hello\")");
assert!(result.contains("olleh"));
}
#[test]
fn test_sort_array_r126() {
let result = eval("sort([3, 1, 2])");
assert!(result.contains("[1") || result.contains("1,"));
}
#[test]
fn test_assert_true_r126() {
let result = eval("assert(true)");
assert!(
result.contains("nil")
|| result.contains("()")
|| result.is_empty()
|| result.contains("Nil")
);
}
#[test]
fn test_assert_eq_same_r126() {
let result = eval("assert_eq(42, 42)");
assert!(
result.contains("nil")
|| result.contains("()")
|| result.is_empty()
|| result.contains("Nil")
);
}
#[test]
fn test_print_string_r126() {
let _result = eval("print(\"test\")");
}
#[test]
fn test_println_string_r126() {
let _result = eval("println(\"test\")");
}
#[test]
fn test_dbg_int_r126() {
let result = eval("dbg(42)");
assert!(result.contains("42"));
}
#[test]
fn test_dbg_string_r126() {
let result = eval("dbg(\"hello\")");
assert!(result.contains("hello"));
}
#[test]
fn test_dbg_array_r126() {
let result = eval("dbg([1, 2, 3])");
assert!(result.contains("1") && result.contains("2") && result.contains("3"));
}
#[test]
fn test_str_int_r128() {
let result = eval("str(42)");
assert!(result.contains("42"));
}
#[test]
fn test_str_float_r128() {
let result = eval("str(3.14)");
assert!(result.contains("3.14"));
}
#[test]
fn test_str_bool_r128() {
let result = eval("str(true)");
assert!(result.contains("true"));
}
#[test]
fn test_int_from_string_r128() {
let result = eval("int(\"42\")");
assert!(result.contains("42"));
}
#[test]
fn test_int_from_float_r128() {
let result = eval("int(3.9)");
assert!(result.contains("3"));
}
#[test]
fn test_float_from_int_r128() {
let result = eval("float(42)");
assert!(result.contains("42"));
}
#[test]
fn test_float_from_string_r128() {
let result = eval("float(\"3.14\")");
assert!(result.contains("3.14"));
}
#[test]
fn test_bool_from_int_true_r128() {
let result = eval("bool(1)");
assert!(result.contains("true"));
}
#[test]
fn test_bool_from_int_false_r128() {
let result = eval("bool(0)");
assert!(result.contains("false"));
}
#[test]
fn test_bool_from_string_r128() {
let result = eval("bool(\"hello\")");
assert!(result.contains("true"));
}
#[test]
fn test_bool_from_empty_string_r128() {
let result = eval("bool(\"\")");
assert!(result.contains("false"));
}
#[test]
fn test_type_of_int_r128() {
let result = eval("type_of(42)");
assert!(result.contains("int") || result.contains("Integer"));
}
#[test]
fn test_type_of_float_r128() {
let result = eval("type_of(3.14)");
assert!(result.contains("float") || result.contains("Float"));
}
#[test]
fn test_type_of_string_r128() {
let result = eval("type_of(\"hello\")");
assert!(result.contains("string") || result.contains("String"));
}
#[test]
fn test_type_of_bool_r128() {
let result = eval("type_of(true)");
assert!(result.contains("bool") || result.contains("Bool"));
}
#[test]
fn test_type_of_array_r128() {
let result = eval("type_of([1, 2, 3])");
assert!(result.contains("array") || result.contains("Array") || result.contains("list"));
}
#[test]
fn test_is_nil_true_r128() {
let result = eval("is_nil(nil)");
assert!(result.contains("true"));
}
#[test]
fn test_is_nil_false_r128() {
let result = eval("is_nil(42)");
assert!(result.contains("false"));
}
#[test]
fn test_sqrt_zero_r128() {
let result = eval("sqrt(0)");
assert!(result.contains("0"));
}
#[test]
fn test_sqrt_perfect_square_r128() {
let result = eval("sqrt(144)");
assert!(result.contains("12"));
}
#[test]
fn test_pow_negative_exp_r128() {
let result = eval("pow(2, -1)");
assert!(result.contains("0.5"));
}
#[test]
fn test_pow_fractional_exp_r128() {
let result = eval("pow(4.0, 0.5)");
assert!(result.contains("2"));
}
#[test]
fn test_log_one_r128() {
let result = eval("log(1.0)");
assert!(result.contains("0"));
}
#[test]
fn test_log10_one_r128() {
let result = eval("log10(1.0)");
assert!(result.contains("0"));
}
#[test]
fn test_log10_ten_r128() {
let result = eval("log10(10.0)");
assert!(result.contains("1"));
}
#[test]
fn test_exp_zero_r128() {
let result = eval("exp(0.0)");
assert!(result.contains("1"));
}
#[test]
fn test_exp_one_r128() {
let result = eval("exp(1.0)");
let val: f64 = result.parse().unwrap_or(0.0);
assert!((val - 2.718).abs() < 0.01);
}
#[test]
fn test_sin_pi_half_r128() {
let result = eval("sin(1.5707963267948966)"); let val: f64 = result.parse().unwrap_or(0.0);
assert!((val - 1.0).abs() < 0.001);
}
#[test]
fn test_cos_pi_r128() {
let result = eval("cos(3.141592653589793)"); let val: f64 = result.parse().unwrap_or(0.0);
assert!((val - (-1.0)).abs() < 0.001);
}
#[test]
fn test_floor_negative_r128() {
let result = eval("floor(-2.7)");
assert!(result.contains("-3"));
}
#[test]
fn test_ceil_negative_r128() {
let result = eval("ceil(-2.3)");
assert!(result.contains("-2"));
}
#[test]
fn test_round_half_r128() {
let result = eval("round(2.5)");
let val: i64 = result.parse().unwrap_or(-1);
assert!(val == 2 || val == 3);
}
#[test]
fn test_round_negative_r128() {
let result = eval("round(-2.5)");
let val: i64 = result.parse().unwrap_or(0);
assert!(val == -2 || val == -3);
}
#[test]
fn test_min_floats_r128() {
let result = eval("min(2.5, 3.5)");
assert!(result.contains("2.5"));
}
#[test]
fn test_max_floats_r128() {
let result = eval("max(2.5, 3.5)");
assert!(result.contains("3.5"));
}
#[test]
fn test_min_mixed_r128() {
let result = eval("min(5, 3.5)");
assert!(result.contains("3.5"));
}
#[test]
fn test_max_mixed_r128() {
let result = eval("max(5, 3.5)");
assert!(result.contains("5"));
}
#[test]
fn test_range_single_arg_r128() {
let result = eval("range(5)");
assert!(result.contains("0") && result.contains("4"));
}
#[test]
fn test_range_two_args_r128() {
let result = eval("range(2, 5)");
assert!(result.contains("2") && result.contains("4"));
}
#[test]
fn test_range_with_step_r128() {
let result = eval("range(0, 10, 2)");
assert!(result.contains("0") && result.contains("2") && result.contains("8"));
}
#[test]
fn test_enumerate_empty_r128() {
let result = eval("enumerate([])");
assert!(result.contains("[]") || result.is_empty() || result.contains("Array"));
}
#[test]
fn test_zip_unequal_r128() {
let result = eval("zip([1, 2, 3], [\"a\", \"b\"])");
assert!(!result.is_empty());
}
#[test]
fn test_parse_int_positive_r128() {
let result = eval("parse_int(\"123\")");
assert!(result.contains("123"));
}
#[test]
fn test_parse_int_negative_r128() {
let result = eval("parse_int(\"-456\")");
assert!(result.contains("-456") || result.contains("456"));
}
#[test]
fn test_parse_float_positive_r128() {
let result = eval("parse_float(\"3.14159\")");
assert!(result.contains("3.14"));
}
#[test]
fn test_parse_float_negative_r128() {
let result = eval("parse_float(\"-2.5\")");
assert!(result.contains("-2.5") || result.contains("2.5"));
}
#[test]
fn test_timestamp_r128() {
let result = eval("timestamp()");
let val: i64 = result.parse().unwrap_or(-1);
assert!(val > 0); }
#[test]
fn test_to_string_nil_r128() {
let result = eval("to_string(nil)");
assert!(result.contains("nil") || result.contains("Nil"));
}
#[test]
fn test_to_string_array_r128() {
let result = eval("to_string([1, 2, 3])");
assert!(result.contains("1") && result.contains("2") && result.contains("3"));
}
#[test]
fn test_len_unicode_r128() {
let result = eval("len(\"日本語\")");
assert!(result.contains("9"));
}
#[test]
fn test_len_emoji_r128() {
let result = eval("len(\"🎉\")");
let val: i64 = result.parse().unwrap_or(-1);
assert!(val >= 1);
}
#[test]
fn test_sorted_empty_r128() {
let result = eval("sorted([])");
assert!(result.contains("[]") || result.is_empty());
}
#[test]
fn test_reversed_empty_r128() {
let result = eval("reversed([])");
assert!(result.contains("[]") || result.is_empty());
}
#[test]
fn test_sorted_single_r128() {
let result = eval("sorted([42])");
assert!(result.contains("42"));
}
#[test]
fn test_reversed_single_r128() {
let result = eval("reversed([42])");
assert!(result.contains("42"));
}
#[test]
fn test_utc_now() {
let result = try_eval("Utc::now()");
assert!(result.is_some() || result.is_none());
}
#[test]
fn test_dataframe_new() {
let result = try_eval("DataFrame::new()");
assert!(result.is_some());
}
#[test]
fn test_dataframe_from_csv_string() {
let result = try_eval("DataFrame::from_csv_string(\"name,age\\nAlice,30\\nBob,25\")");
if let Some(r) = result {
assert!(r.contains("Alice") || r.contains("name") || r.contains("DataFrame"));
}
}
#[test]
fn test_dataframe_from_csv_empty() {
let result = try_eval("DataFrame::from_csv_string(\"\")");
assert!(result.is_some() || result.is_none());
}
#[test]
fn test_dataframe_from_json() {
let result =
try_eval("DataFrame::from_json(\"[{\\\"name\\\": \\\"Alice\\\", \\\"age\\\": 30}]\")");
if let Some(r) = result {
assert!(r.contains("Alice") || r.contains("name") || r.contains("DataFrame"));
}
}
#[test]
fn test_dataframe_from_json_empty_array() {
let result = try_eval("DataFrame::from_json(\"[]\")");
assert!(result.is_some() || result.is_none());
}
#[test]
fn test_path_join_many() {
let result = try_eval("path_join_many([\"/home\", \"user\", \"docs\"])");
if let Some(r) = result {
assert!(r.contains("home") && r.contains("user") && r.contains("docs"));
}
}
#[test]
fn test_path_with_extension() {
let result = try_eval("path_with_extension(\"/home/file.txt\", \"md\")");
if let Some(r) = result {
assert!(r.contains("md"));
}
}
#[test]
fn test_path_with_file_name() {
let result = try_eval("path_with_file_name(\"/home/file.txt\", \"new.txt\")");
if let Some(r) = result {
assert!(r.contains("new.txt"));
}
}
#[test]
fn test_path_components() {
let result = try_eval("path_components(\"/home/user/docs\")");
if let Some(r) = result {
assert!(r.contains("home") || r.contains("user"));
}
}
#[test]
fn test_path_normalize() {
let result = try_eval("path_normalize(\"/home/user/../user/./docs\")");
if let Some(r) = result {
assert!(r.contains("home"));
}
}
#[test]
fn test_path_canonicalize() {
let result = try_eval("path_canonicalize(env_temp_dir())");
if let Some(r) = result {
assert!(!r.is_empty());
}
}
#[test]
fn test_env_args() {
let result = try_eval("env_args()");
if let Some(r) = result {
assert!(r.contains("[") || r.contains("Array"));
}
}
#[test]
fn test_env_vars() {
let result = try_eval("env_vars()");
if let Some(r) = result {
assert!(!r.is_empty());
}
}
#[test]
fn test_env_set_and_get_var() {
let _ = try_eval("env_set_var(\"RUCHY_TEST_VAR\", \"test_value\")");
let result = try_eval("env_var(\"RUCHY_TEST_VAR\")");
if let Some(r) = result {
assert!(r.contains("test_value") || r.contains("Ok"));
}
let _ = try_eval("env_remove_var(\"RUCHY_TEST_VAR\")");
}
#[test]
fn test_env_remove_var() {
let _ = try_eval("env_set_var(\"RUCHY_TEMP_VAR\", \"temp\")");
let result = try_eval("env_remove_var(\"RUCHY_TEMP_VAR\")");
assert!(result.is_some());
}
#[test]
fn test_fs_exists_temp_dir() {
let result = try_eval("fs_exists(env_temp_dir())");
if let Some(r) = result {
assert!(r.contains("true"));
}
}
#[test]
fn test_fs_exists_nonexistent() {
let result = try_eval("fs_exists(\"/nonexistent/path/12345\")");
if let Some(r) = result {
assert!(r.contains("false"));
}
}
#[test]
fn test_fs_is_file() {
let result = try_eval("fs_is_file(\"/nonexistent/file.txt\")");
if let Some(r) = result {
assert!(r.contains("false"));
}
}
#[test]
fn test_fs_read_dir_temp() {
let result = try_eval("fs_read_dir(env_temp_dir())");
if let Some(r) = result {
assert!(r.contains("[") || r.contains("Array"));
}
}
#[test]
fn test_fs_metadata_temp_dir() {
let result = try_eval("fs_metadata(env_temp_dir())");
if let Some(r) = result {
assert!(r.contains("is_dir") || r.contains("size"));
}
}
#[test]
fn test_walk_temp_dir() {
let result = try_eval("walk(env_temp_dir())");
if let Some(r) = result {
assert!(r.contains("[") || r.contains("path"));
}
}
#[test]
fn test_glob_pattern() {
let result = try_eval("glob(path_join(env_temp_dir(), \"*\"))");
if let Some(r) = result {
assert!(r.contains("[") || r.contains("Array"));
}
}
#[test]
fn test_println_empty() {
let result = eval("println()");
assert!(result.contains("nil") || result.is_empty() || result.contains("()"));
}
#[test]
fn test_println_format_string() {
let result = eval("println(\"Value: {}\", 42)");
assert!(result.contains("nil") || result.is_empty());
}
#[test]
fn test_println_multiple_args() {
let result = eval("println(\"a\", \"b\", \"c\")");
assert!(result.contains("nil") || result.is_empty());
}
#[test]
fn test_print_multiple_args() {
let result = eval("print(1, 2, 3)");
assert!(result.contains("nil") || result.is_empty());
}
#[test]
fn test_dbg_multiple_values() {
let result = eval("dbg(1, 2, 3)");
assert!(result.contains("1") || result.contains("["));
}
#[test]
fn test_range_negative_step() {
let result = try_eval("range(10, 0, -2)");
if let Some(r) = result {
assert!(r.contains("10") || r.contains("8"));
}
}
#[test]
fn test_len_tuple() {
let result = try_eval("len((1, 2, 3))");
if let Some(r) = result {
assert!(r.contains("3"));
}
}
#[test]
fn test_sort_floats() {
let result = eval("sort([3.5, 1.2, 2.8])");
assert!(result.contains("1.2"));
}
#[test]
fn test_sort_strings() {
let result = eval("sort([\"banana\", \"apple\", \"cherry\"])");
assert!(result.contains("apple"));
}
#[test]
fn test_pop_empty_array() {
let result = eval("pop([])");
let _ = result;
}
#[test]
fn test_json_stringify_array() {
let result = eval("json_stringify([1, 2, 3])");
assert!(result.contains("1") && result.contains("2") && result.contains("3"));
}
#[test]
fn test_json_stringify_nil() {
let result = eval("json_stringify(nil)");
assert!(result.contains("null") || result.contains("nil"));
}
#[test]
fn test_sleep_short() {
let result = eval("sleep(1)"); assert!(result.contains("nil") || result.is_empty());
}
#[test]
fn test_sleep_float() {
let result = eval("sleep(1.5)"); assert!(result.contains("nil") || result.is_empty());
}
#[test]
fn test_hash_string() {
let result = eval("hash(\"hello\")");
assert!(!result.is_empty());
}
#[test]
fn test_hash_int() {
let result = eval("hash(42)");
assert!(!result.is_empty());
}
#[test]
fn test_string_join() {
let result = try_eval("[\"a\", \"b\", \"c\"].join(\",\")");
if let Some(r) = result {
assert!(r.contains("a,b,c") || r.contains("a"));
}
}
#[test]
fn test_take_more_than_length() {
let result = eval("take([1, 2], 10)");
assert!(result.contains("1") && result.contains("2"));
}
#[test]
fn test_drop_more_than_length() {
let result = eval("drop([1, 2], 10)");
let _ = result;
}
#[test]
fn test_len_empty_dataframe() {
let df = try_eval("DataFrame::from_csv_string(\"\")");
if df.is_some() {
let result = try_eval("len(DataFrame::from_csv_string(\"\"))");
if let Some(r) = result {
assert!(r.contains("0") || r.is_empty());
}
}
}
#[test]
fn test_fs_write_and_read() {
let temp_file = format!(
"{}/ruchy_test_{}.txt",
std::env::temp_dir().display(),
std::process::id()
);
let write_code = format!("fs_write(\"{}\", \"hello world\")", temp_file);
let _ = try_eval(&write_code);
let read_code = format!("fs_read(\"{}\")", temp_file);
let result = try_eval(&read_code);
if let Some(r) = result {
assert!(r.contains("hello") || r.contains("Ok"));
}
let _ = std::fs::remove_file(&temp_file);
}
#[test]
fn test_fs_create_and_remove_dir() {
let temp_dir = format!(
"{}/ruchy_test_dir_{}",
std::env::temp_dir().display(),
std::process::id()
);
let create_code = format!("fs_create_dir(\"{}\")", temp_dir);
let create_result = try_eval(&create_code);
assert!(create_result.is_some());
let exists_code = format!("fs_exists(\"{}\")", temp_dir);
let exists_result = try_eval(&exists_code);
if let Some(r) = exists_result {
assert!(r.contains("true"));
}
let _ = std::fs::remove_dir(&temp_dir);
}
#[test]
fn test_read_file_unwrapped() {
let temp_file = format!(
"{}/ruchy_read_test_{}.txt",
std::env::temp_dir().display(),
std::process::id()
);
std::fs::write(&temp_file, "test content").ok();
let read_code = format!("read_file(\"{}\")", temp_file);
let result = try_eval(&read_code);
if let Some(r) = result {
assert!(r.contains("test content"));
}
let _ = std::fs::remove_file(&temp_file);
}
#[test]
fn test_append_file() {
let temp_file = format!(
"{}/ruchy_append_test_{}.txt",
std::env::temp_dir().display(),
std::process::id()
);
std::fs::write(&temp_file, "first").ok();
let append_code = format!("append_file(\"{}\", \" second\")", temp_file);
let _ = try_eval(&append_code);
let content = std::fs::read_to_string(&temp_file).unwrap_or_default();
assert!(content.contains("first") && content.contains("second"));
let _ = std::fs::remove_file(&temp_file);
}
#[test]
fn test_walk_with_options_max_depth() {
let result = try_eval("walk_with_options(env_temp_dir(), {max_depth: 1})");
if let Some(r) = result {
assert!(r.contains("[") || r.contains("path"));
}
}
#[test]
fn test_walk_with_options_min_depth() {
let result = try_eval("walk_with_options(env_temp_dir(), {min_depth: 0})");
if let Some(r) = result {
assert!(r.contains("[") || r.contains("path"));
}
}
#[test]
fn test_walk_parallel() {
let result = try_eval("walk_parallel(env_temp_dir())");
if let Some(r) = result {
assert!(r.contains("[") || r.contains("path"));
}
}
#[test]
fn test_compute_hash_file() {
let temp_file = format!(
"{}/ruchy_hash_test_{}.txt",
std::env::temp_dir().display(),
std::process::id()
);
std::fs::write(&temp_file, "hash me").ok();
let hash_code = format!("compute_hash(\"{}\")", temp_file);
let result = try_eval(&hash_code);
if let Some(r) = result {
assert!(r.len() >= 30 || r.contains("error"));
}
let _ = std::fs::remove_file(&temp_file);
}
#[test]
fn test_fs_copy() {
let temp_src = format!(
"{}/ruchy_copy_src_{}.txt",
std::env::temp_dir().display(),
std::process::id()
);
let temp_dst = format!(
"{}/ruchy_copy_dst_{}.txt",
std::env::temp_dir().display(),
std::process::id()
);
std::fs::write(&temp_src, "copy me").ok();
let copy_code = format!("fs_copy(\"{}\", \"{}\")", temp_src, temp_dst);
let result = try_eval(©_code);
assert!(result.is_some());
let content = std::fs::read_to_string(&temp_dst).unwrap_or_default();
assert!(content.contains("copy me"));
let _ = std::fs::remove_file(&temp_src);
let _ = std::fs::remove_file(&temp_dst);
}
#[test]
fn test_fs_rename() {
let temp_src = format!(
"{}/ruchy_rename_src_{}.txt",
std::env::temp_dir().display(),
std::process::id()
);
let temp_dst = format!(
"{}/ruchy_rename_dst_{}.txt",
std::env::temp_dir().display(),
std::process::id()
);
std::fs::write(&temp_src, "rename me").ok();
let rename_code = format!("fs_rename(\"{}\", \"{}\")", temp_src, temp_dst);
let result = try_eval(&rename_code);
assert!(result.is_some());
let _ = std::fs::remove_file(&temp_dst);
}
#[test]
fn test_sqrt_error_type() {
let result = try_eval("sqrt(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_pow_error_type() {
let result = try_eval("pow(\"a\", \"b\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_min_error_type() {
let result = try_eval("min(\"a\", \"b\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_max_error_type() {
let result = try_eval("max(\"a\", \"b\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_floor_error_type() {
let result = try_eval("floor(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_ceil_error_type() {
let result = try_eval("ceil(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_round_error_type() {
let result = try_eval("round(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_sin_error_type() {
let result = try_eval("sin(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_cos_error_type() {
let result = try_eval("cos(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_tan_error_type() {
let result = try_eval("tan(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_log_error_type() {
let result = try_eval("log(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_log10_error_type() {
let result = try_eval("log10(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_exp_error_type() {
let result = try_eval("exp(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_abs_error_type() {
let result = try_eval("abs(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_len_error_type() {
let result = try_eval("len(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_range_error_type() {
let result = try_eval("range(\"a\", \"b\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_range_zero_step() {
let result = try_eval("range(0, 10, 0)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_reverse_error_type() {
let result = try_eval("reverse(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_push_error_type() {
let result = try_eval("push(42, 1)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_pop_error_type() {
let result = try_eval("pop(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_sort_error_type() {
let result = try_eval("sort(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_zip_error_type() {
let result = try_eval("zip(42, [1])");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_enumerate_error_type() {
let result = try_eval("enumerate(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_sleep_error_type() {
let result = try_eval("sleep(\"not a number\")");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_path_join_error_type() {
let result = try_eval("path_join(42, 43)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_env_var_error_type() {
let result = try_eval("env_var(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_fs_read_error_type() {
let result = try_eval("fs_read(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_fs_write_error_type() {
let result = try_eval("fs_write(42, 43)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_fs_exists_error_type() {
let result = try_eval("fs_exists(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_fs_is_file_error_type() {
let result = try_eval("fs_is_file(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_fs_metadata_error_type() {
let result = try_eval("fs_metadata(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_walk_error_type() {
let result = try_eval("walk(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
#[test]
fn test_glob_error_type() {
let result = try_eval("glob(42)");
assert!(result.is_none() || result.unwrap_or_default().contains("error"));
}
}