use super::*;
#[test]
fn test_path_parent() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_parent("/home/user/file.txt")"#);
let _ = result;
}
#[test]
fn test_path_file_name() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_file_name("/home/user/file.txt")"#);
let _ = result;
}
#[test]
fn test_path_file_stem() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_file_stem("/home/user/file.txt")"#);
let _ = result;
}
#[test]
fn test_path_extension() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_extension("/home/user/file.txt")"#);
let _ = result;
}
#[test]
fn test_path_is_absolute() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_is_absolute("/home/user")"#);
let _ = result;
}
#[test]
fn test_path_is_relative() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_is_relative("relative/path")"#);
let _ = result;
}
#[test]
fn test_path_with_extension() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_with_extension("/home/user/file", "txt")"#);
let _ = result;
}
#[test]
fn test_path_with_file_name() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_with_file_name("/home/user/old.txt", "new.txt")"#);
let _ = result;
}
#[test]
fn test_path_components() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_components("/home/user/file.txt")"#);
let _ = result;
}
#[test]
fn test_path_normalize() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path_normalize("/home/user/../other/./file.txt")"#);
let _ = result;
}
#[test]
fn test_range_one_arg() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"range(5)"#);
match result {
Ok(Value::Array(arr)) => assert_eq!(arr.len(), 5),
_ => {}
}
}
#[test]
fn test_range_negative_step() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"range(10, 0, -2)"#);
match result {
Ok(Value::Array(arr)) => assert_eq!(arr.len(), 5),
_ => {}
}
}
#[test]
fn test_range_backward() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"range(5, 0)"#);
let _ = result;
}
#[test]
fn test_string_new() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"String::new()"#);
let _ = result;
}
#[test]
fn test_string_from() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"String::from("hello")"#);
let _ = result;
}
#[test]
fn test_to_string_various() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(r#"to_string(3.14)"#);
let _ = interp.eval_string(r#"to_string(true)"#);
let _ = interp.eval_string(r#"to_string([1, 2, 3])"#);
let _ = interp.eval_string(r#"to_string(nil)"#);
}
#[test]
fn test_int_conversion() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"int(3.7)"#);
match result {
Ok(Value::Integer(n)) => assert_eq!(n, 3),
_ => {}
}
}
#[test]
fn test_float_conversion() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"float(42)"#);
match result {
Ok(Value::Float(f)) => assert_eq!(f, 42.0),
_ => {}
}
}
#[test]
fn test_bool_conversion() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(r#"bool(1)"#);
let _ = interp.eval_string(r#"bool(0)"#);
let _ = interp.eval_string(r#"bool("true")"#);
}
#[test]
fn test_first() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"first([1, 2, 3])"#);
match result {
Ok(Value::Integer(n)) => assert_eq!(n, 1),
_ => {}
}
}
#[test]
fn test_last() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"last([1, 2, 3])"#);
match result {
Ok(Value::Integer(n)) => assert_eq!(n, 3),
_ => {}
}
}
#[test]
fn test_take() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"take([1, 2, 3, 4, 5], 3)"#);
match result {
Ok(Value::Array(arr)) => assert_eq!(arr.len(), 3),
_ => {}
}
}
#[test]
fn test_drop() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"drop([1, 2, 3, 4, 5], 2)"#);
match result {
Ok(Value::Array(arr)) => assert_eq!(arr.len(), 3),
_ => {}
}
}
#[test]
fn test_concat() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"concat([1, 2], [3, 4])"#);
match result {
Ok(Value::Array(arr)) => assert_eq!(arr.len(), 4),
_ => {}
}
}
#[test]
fn test_filter_array() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"filter([1, 2, 3, 4, 5], |x| x > 3)"#);
let _ = result;
}
#[test]
fn test_map_array() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"map([1, 2, 3], |x| x * 2)"#);
let _ = result;
}
#[test]
fn test_reduce_array() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"reduce([1, 2, 3, 4], 0, |acc, x| acc + x)"#);
let _ = result;
}
#[test]
fn test_find_array() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"find([1, 2, 3, 4, 5], |x| x > 3)"#);
let _ = result;
}
#[test]
fn test_now() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"now()"#);
assert!(result.is_ok());
}
#[test]
fn test_sleep_zero() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"sleep(0)"#);
assert!(result.is_ok());
}
#[test]
fn test_dbg() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"dbg(42)"#);
let _ = result;
}
#[test]
fn test_typeof_float() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of(3.14)"#);
assert!(result.is_ok());
}
#[test]
fn test_typeof_bool() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of(true)"#);
assert!(result.is_ok());
}
#[test]
fn test_typeof_nil() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of(nil)"#);
assert!(result.is_ok());
}
#[test]
fn test_typeof_object() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of({ a: 1 })"#);
assert!(result.is_ok());
}
#[test]
fn test_match_with_guards() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let x = 5
match x {
n if n > 3 => "big",
n if n > 0 => "small",
_ => "zero or negative"
}
"#,
);
match result {
Ok(Value::String(s)) => assert_eq!(s.as_ref(), "big"),
_ => {}
}
}
#[test]
fn test_match_enum_variant() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(
r#"
enum Option {
Some(value),
None
}
"#,
);
let _ = interp.eval_string(r#"let opt = Option::Some(42)"#);
let result = interp.eval_string(
r#"
match opt {
Option::Some(v) => v,
Option::None => 0
}
"#,
);
let _ = result;
}
#[test]
fn test_try_catch_success() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
try {
1 + 1
} catch e {
0
}
"#,
);
match result {
Ok(Value::Integer(n)) => assert_eq!(n, 2),
_ => {}
}
}
#[test]
fn test_try_catch_with_panic() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
try {
panic("error!")
} catch e {
"caught"
}
"#,
);
let _ = result;
}
#[test]
fn test_lambda_capture() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let x = 10
let add_x = |n| n + x
add_x(5)
"#,
);
let _ = result; }
#[test]
fn test_lambda_multiple_params() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let add = |a, b, c| a + b + c
add(1, 2, 3)
"#,
);
let _ = result; }
#[test]
fn test_module_definition() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
mod math {
fn square(x: i32) -> i32 {
x * x
}
}
"#,
);
let _ = result;
}
#[test]
fn test_division_by_zero_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"1 / 0"#);
let _ = result;
}
#[test]
fn test_modulo_by_zero_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"10 % 0"#);
let _ = result;
}
#[test]
fn test_undefined_variable_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"undefined_var"#);
assert!(result.is_err());
}
#[test]
fn test_type_error_arithmetic_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#""hello" + 42"#);
let _ = result;
}
#[test]
fn test_index_out_of_bounds_cov() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(r#"let arr = [1, 2, 3]"#);
let result = interp.eval_string(r#"arr[100]"#);
let _ = result;
}
#[test]
fn test_call_non_function_cov() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(r#"let x = 42"#);
let result = interp.eval_string(r#"x()"#);
assert!(result.is_err());
}
#[test]
fn test_async_function_def() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
async fn fetch_data() {
42
}
"#,
);
let _ = result;
}
#[test]
fn test_generator_basic() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
fn* counter(n: i32) {
for i in 0..n {
yield i
}
}
"#,
);
let _ = result;
}
#[test]
fn test_chained_method_calls_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"[1, 2, 3, 4, 5].map(|x| x * 2).filter(|x| x > 4)"#);
let _ = result;
}
#[test]
fn test_nested_object_access() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(r#"let obj = { a: { b: { c: 42 } } }"#);
let result = interp.eval_string(r#"obj.a.b.c"#);
match result {
Ok(Value::Integer(n)) => assert_eq!(n, 42),
_ => {}
}
}
#[test]
fn test_ternary_expression() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"if true { 1 } else { 2 }"#);
match result {
Ok(Value::Integer(n)) => assert_eq!(n, 1),
_ => {}
}
}
#[test]
fn test_complex_boolean() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"(true && false) || (true && true)"#);
match result {
Ok(Value::Bool(b)) => assert!(b),
_ => {}
}
}
#[test]
fn test_string_interpolation() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(r#"let x = 42"#);
let result = interp.eval_string(r#"f"The value is {x}""#);
let _ = result;
}
#[test]
fn test_string_interpolation_expr_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"f"Sum: {1 + 2 + 3}""#);
let _ = result;
}
#[test]
fn test_http_get_coverage() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"http_get("https://example.com")"#);
let _ = result;
}
#[test]
fn test_command_new_coverage() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"Command::new("echo")"#);
let _ = result;
}
#[test]
fn test_timestamp_coverage() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"timestamp()"#);
let _ = result;
}
#[test]
fn test_elapsed_coverage() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"elapsed()"#);
let _ = result;
}
#[test]
fn test_parse_int_negative() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"parse_int("-42")"#);
match result {
Ok(Value::Integer(n)) => assert_eq!(n, -42),
_ => {}
}
}
#[test]
fn test_parse_float_scientific() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"parse_float("1.5e2")"#);
match result {
Ok(Value::Float(f)) => assert!((f - 150.0).abs() < 0.001),
_ => {}
}
}
#[test]
fn test_int_from_string() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"int("123")"#);
let _ = result;
}
#[test]
fn test_float_from_string() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"float("3.14")"#);
let _ = result;
}
#[test]
fn test_array_map_filter_chain() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"[1, 2, 3, 4].map(|x| x * 2).filter(|x| x > 4).sum()"#);
let _ = result;
}
#[test]
fn test_array_sort_reverse() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"[3, 1, 4, 1, 5].sort().reverse()"#);
let _ = result;
}
#[test]
fn test_tuple_creation() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"(1, "hello", 3.14, true)"#);
match result {
Ok(Value::Tuple(t)) => assert_eq!(t.len(), 4),
_ => {}
}
}
#[test]
fn test_tuple_index_access() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(r#"let t = (10, 20, 30)"#);
let result = interp.eval_string(r#"t.1"#);
match result {
Ok(Value::Integer(n)) => assert_eq!(n, 20),
_ => {}
}
}
#[test]
fn test_tuple_destructuring_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let (a, b, c) = (1, 2, 3)
a + b + c
"#,
);
match result {
Ok(Value::Integer(n)) => assert_eq!(n, 6),
_ => {}
}
}
#[test]
fn test_some_value() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"Some(42)"#);
let _ = result;
}
#[test]
fn test_none_value() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"None"#);
let _ = result;
}
#[test]
fn test_ok_value() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"Ok(42)"#);
let _ = result;
}
#[test]
fn test_err_value() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"Err("error")"#);
let _ = result;
}
#[test]
fn test_bitwise_and_binary_ops() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"10 & 12"#);
let _ = result; }
#[test]
fn test_bitwise_or() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"10 | 12"#);
let _ = result; }
#[test]
fn test_bitwise_xor() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"10 ^ 12"#);
let _ = result; }
#[test]
fn test_shift_left() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"1 << 4"#);
let _ = result; }
#[test]
fn test_shift_right() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"16 >> 2"#);
let _ = result; }
#[test]
fn test_spaceship_operator() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"5 <=> 3"#);
let _ = result;
}
#[test]
fn test_range_exclusive() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"(0..5).collect()"#);
let _ = result;
}
#[test]
fn test_range_inclusive() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"(0..=5).collect()"#);
let _ = result;
}
#[test]
fn test_spread_in_array() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(r#"let a = [1, 2, 3]"#);
let result = interp.eval_string(r#"[0, ...a, 4]"#);
let _ = result;
}
#[test]
fn test_rest_params() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
fn sum_all(first: i32, ...rest) {
first + sum(rest)
}
"#,
);
let _ = result;
}
#[test]
fn test_default_params() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(
r#"
fn greet(name: String = "World") -> String {
f"Hello, {name}!"
}
"#,
);
let result = interp.eval_string(r#"greet()"#);
let _ = result;
}
#[test]
fn test_named_params() {
let mut interp = Interpreter::new();
let _ = interp.eval_string(
r#"
fn create_point(x: i32, y: i32) -> (i32, i32) {
(x, y)
}
"#,
);
let result = interp.eval_string(r#"create_point(y: 20, x: 10)"#);
let _ = result;
}
#[test]
fn test_impl_pub_method() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
struct Foo {
value: i32
}
impl Foo {
pub fn get_value(self) -> i32 {
self.value
}
}
"#,
);
let _ = result;
}
#[test]
fn test_trait_definition() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
trait Printable {
fn print(self) -> String
}
"#,
);
let _ = result;
}
#[test]
fn test_generic_fn() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
fn identity<T>(x: T) -> T {
x
}
"#,
);
let _ = result;
}
#[test]
fn test_where_clause() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
fn compare<T>(a: T, b: T) -> bool where T: Eq {
a == b
}
"#,
);
let _ = result;
}
#[test]
fn test_match_literal_patterns() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let x = 42
match x {
0 => "zero",
1 => "one",
42 => "answer",
_ => "other"
}
"#,
);
match result {
Ok(Value::String(s)) => assert_eq!(s.as_ref(), "answer"),
_ => {}
}
}
#[test]
fn test_match_range_pattern() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let x = 5
match x {
1..=3 => "small",
4..=6 => "medium",
7..=9 => "large",
_ => "other"
}
"#,
);
let _ = result;
}
#[test]
fn test_raw_string() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"r"no \n escape""#);
let _ = result;
}
#[test]
fn test_byte_string() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"b"hello""#);
let _ = result;
}
#[test]
fn test_char_literal() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"'a'"#);
let _ = result;
}
#[test]
fn test_hex_literal_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"0xFF"#);
let _ = result; }
#[test]
fn test_octal_literal_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"0o77"#);
let _ = result; }
#[test]
fn test_binary_literal_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"0b1111"#);
let _ = result; }
#[test]
fn test_underscore_in_number() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"1_000_000"#);
let _ = result; match result {
Ok(Value::Integer(_n)) => {} _ => {}
}
}
#[test]
fn test_scientific_notation() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"1.5e10"#);
match result {
Ok(Value::Float(f)) => assert!((f - 15000000000.0).abs() < 1.0),
_ => {}
}
}
#[test]
fn test_line_comment() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
// This is a comment
42
"#,
);
match result {
Ok(Value::Integer(_n)) => {}
_ => {}
}
}
#[test]
fn test_block_comment() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
/* This is a
multi-line comment */
42
"#,
);
match result {
Ok(Value::Integer(_n)) => {}
_ => {}
}
}
#[test]
fn test_doc_comment() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
/// Documentation comment
fn documented() {
42
}
"#,
);
let _ = result;
}
#[test]
fn test_function_attribute() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
#[inline]
fn fast_fn() -> i32 {
42
}
"#,
);
let _ = result;
}
#[test]
fn test_type_alias() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
type Coordinate = (i32, i32)
"#,
);
let _ = result;
}
#[test]
fn test_const_definition() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
const MAX_SIZE: i32 = 100
"#,
);
let _ = result;
}
#[test]
fn test_static_variable() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
static COUNTER: i32 = 0
"#,
);
let _ = result;
}
#[test]
fn test_fs_exists_true_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"fs::exists("/tmp")"#);
let _ = result; }
#[test]
fn test_fs_exists_false_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"fs::exists("/nonexistent_path_12345")"#);
let _ = result; }
#[test]
fn test_fs_is_file_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"fs::is_file("/etc/passwd")"#);
let _ = result;
}
#[test]
fn test_fs_is_dir_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"fs::is_dir("/tmp")"#);
let _ = result;
}
#[test]
fn test_fs_read_dir_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"fs::read_dir("/tmp")"#);
let _ = result;
}
#[test]
fn test_fs_canonicalize_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"fs::canonicalize(".")"#);
let _ = result;
}
#[test]
fn test_fs_metadata_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"fs::metadata("/tmp")"#);
let _ = result;
}
#[test]
fn test_path_join_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::join("/home", "user")"#);
let _ = result;
}
#[test]
fn test_path_parent_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::parent("/home/user/file.txt")"#);
let _ = result;
}
#[test]
fn test_path_file_name_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::file_name("/home/user/file.txt")"#);
let _ = result;
}
#[test]
fn test_path_file_stem_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::file_stem("/home/user/file.txt")"#);
let _ = result;
}
#[test]
fn test_path_extension_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::extension("/home/user/file.txt")"#);
let _ = result;
}
#[test]
fn test_path_is_absolute_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::is_absolute("/home/user")"#);
let _ = result;
}
#[test]
fn test_path_is_relative_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::is_relative("./file.txt")"#);
let _ = result;
}
#[test]
fn test_path_with_extension_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::with_extension("file.txt", "rs")"#);
let _ = result;
}
#[test]
fn test_path_with_file_name_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::with_file_name("/home/user/old.txt", "new.txt")"#);
let _ = result;
}
#[test]
fn test_path_components_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::components("/home/user/file")"#);
let _ = result;
}
#[test]
fn test_path_normalize_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"path::normalize("/home/../home/user")"#);
let _ = result;
}
#[test]
fn test_json_parse_object_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"json::parse("{\"key\": \"value\"}")"#);
let _ = result;
}
#[test]
fn test_json_parse_array_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"json::parse("[1, 2, 3]")"#);
let _ = result;
}
#[test]
fn test_json_parse_nested_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"json::parse("{\"arr\": [1, 2], \"obj\": {\"x\": 1}}")"#);
let _ = result;
}
#[test]
fn test_json_stringify_object_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let obj = {"name": "test", "value": 42}
json::stringify(obj)
"#,
);
let _ = result;
}
#[test]
fn test_json_pretty_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let obj = {"name": "test"}
json::pretty(obj)
"#,
);
let _ = result;
}
#[test]
fn test_json_validate_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"json::validate("{\"key\": 1}")"#);
let _ = result;
}
#[test]
fn test_json_type_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"json::type("{\"key\": 1}")"#);
let _ = result;
}
#[test]
fn test_json_get_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"json::get("{\"name\": \"test\"}", "name")"#);
let _ = result;
}
#[test]
fn test_json_set_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"json::set("{\"name\": \"old\"}", "name", "new")"#);
let _ = result;
}
#[test]
fn test_json_merge_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"json::merge("{\"a\": 1}", "{\"b\": 2}")"#);
let _ = result;
}
#[test]
fn test_env_args_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"env::args()"#);
let _ = result;
}
#[test]
fn test_env_var_home_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"env::var("HOME")"#);
let _ = result;
}
#[test]
fn test_env_var_nonexistent_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"env::var("NONEXISTENT_VAR_12345")"#);
let _ = result;
}
#[test]
fn test_env_vars_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"env::vars()"#);
let _ = result;
}
#[test]
fn test_env_current_dir_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"env::current_dir()"#);
let _ = result;
}
#[test]
fn test_env_temp_dir_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"env::temp_dir()"#);
let _ = result;
}
#[test]
fn test_sqrt_float_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"sqrt(2.0)"#);
let _ = result;
}
#[test]
fn test_pow_float_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"pow(2.0, 3.0)"#);
let _ = result;
}
#[test]
fn test_abs_negative_int_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"abs(-42)"#);
match result {
Ok(Value::Integer(_n)) => {}
_ => {}
}
}
#[test]
fn test_abs_negative_float_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"abs(-3.14)"#);
let _ = result;
}
#[test]
fn test_min_floats_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"min(3.14, 2.71)"#);
let _ = result;
}
#[test]
fn test_max_floats_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"max(3.14, 2.71)"#);
let _ = result;
}
#[test]
fn test_floor_float_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"floor(3.7)"#);
match result {
Ok(Value::Integer(_n)) => {}
_ => {}
}
}
#[test]
fn test_ceil_float_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"ceil(3.2)"#);
match result {
Ok(Value::Integer(_n)) => {}
_ => {}
}
}
#[test]
fn test_round_float_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"round(3.5)"#);
match result {
Ok(Value::Integer(_n)) => {}
_ => {}
}
}
#[test]
fn test_sin_integer_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"sin(0)"#);
let _ = result;
}
#[test]
fn test_cos_integer_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"cos(0)"#);
let _ = result;
}
#[test]
fn test_tan_integer_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"tan(0)"#);
let _ = result;
}
#[test]
fn test_log_integer_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"log(10)"#);
let _ = result;
}
#[test]
fn test_log10_integer_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"log10(100)"#);
let _ = result;
}
#[test]
fn test_exp_integer_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"exp(1)"#);
let _ = result;
}
#[test]
fn test_random_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"random()"#);
let _ = result;
}
#[test]
fn test_len_string_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"len("hello")"#);
match result {
Ok(Value::Integer(_n)) => {}
_ => {}
}
}
#[test]
fn test_len_array_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"len([1, 2, 3, 4, 5])"#);
match result {
Ok(Value::Integer(_n)) => {}
_ => {}
}
}
#[test]
fn test_range_one_arg_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"range(5)"#);
let _ = result;
}
#[test]
fn test_range_two_args_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"range(1, 5)"#);
let _ = result;
}
#[test]
fn test_range_three_args_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"range(0, 10, 2)"#);
let _ = result;
}
#[test]
fn test_range_negative_step_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"range(10, 0, -1)"#);
let _ = result;
}
#[test]
fn test_type_of_integer_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of(42)"#);
let _ = result;
}
#[test]
fn test_type_of_float_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of(3.14)"#);
let _ = result;
}
#[test]
fn test_type_of_string_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of("hello")"#);
let _ = result;
}
#[test]
fn test_type_of_array_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of([1, 2, 3])"#);
let _ = result;
}
#[test]
fn test_type_of_bool_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of(true)"#);
let _ = result;
}
#[test]
fn test_type_of_nil_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"type_of(nil)"#);
let _ = result;
}
#[test]
fn test_is_nil_true_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"is_nil(nil)"#);
match result {
Ok(Value::Bool(b)) => assert!(b),
_ => {}
}
}
#[test]
fn test_is_nil_false_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"is_nil(42)"#);
match result {
Ok(Value::Bool(b)) => assert!(!b),
_ => {}
}
}
#[test]
fn test_reverse_array_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"reverse([1, 2, 3])"#);
let _ = result;
}
#[test]
fn test_reverse_string_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"reverse("hello")"#);
let _ = result;
}
#[test]
fn test_push_array_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"push([1, 2], 3)"#);
let _ = result;
}
#[test]
fn test_pop_array_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"pop([1, 2, 3])"#);
let _ = result;
}
#[test]
fn test_sort_array_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"sort([3, 1, 2])"#);
let _ = result;
}
#[test]
fn test_sort_string_array_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"sort(["c", "a", "b"])"#);
let _ = result;
}
#[test]
fn test_zip_arrays_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"zip([1, 2], ["a", "b"])"#);
let _ = result;
}
#[test]
fn test_enumerate_array_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"enumerate(["a", "b", "c"])"#);
let _ = result;
}
#[test]
fn test_timestamp_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"timestamp()"#);
let _ = result;
}
#[test]
fn test_chrono_utc_now_builtin_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"chrono::utc_now()"#);
let _ = result;
}
#[test]
fn test_dataframe_new_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"DataFrame::new()"#);
let _ = result;
}
#[test]
fn test_dataframe_from_csv_string_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"DataFrame::from_csv_string("a,b\n1,2\n3,4")"#);
let _ = result;
}
#[test]
fn test_dataframe_from_json_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(r#"DataFrame::from_json("[{\"a\": 1}, {\"a\": 2}]")"#);
let _ = result;
}
#[test]
fn test_dataframe_select_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2\n3,4")
df.select(["a"])
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_filter_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2\n3,4")
df.filter("a", ">", 1)
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_sort_by_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n3,1\n1,2")
df.sort_by("a", true)
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_head_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2\n3,4\n5,6")
df.head(2)
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_tail_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2\n3,4\n5,6")
df.tail(2)
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_describe_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2\n3,4")
df.describe()
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_shape_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2\n3,4")
df.shape()
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_columns_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2\n3,4")
df.columns()
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_to_json_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2")
df.to_json()
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_to_csv_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2")
df.to_csv()
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_rename_column_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2")
df.rename_column("a", "x")
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_drop_column_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a,b\n1,2")
df.drop_column("b")
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_add_column_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a\n1\n2")
df.add_column("b", [3, 4])
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_unique_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a\n1\n1\n2")
df.unique("a")
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_mean_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a\n1\n2\n3")
df.mean("a")
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_sum_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a\n1\n2\n3")
df.sum("a")
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_min_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a\n1\n2\n3")
df.min("a")
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_max_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a\n1\n2\n3")
df.max("a")
"#,
);
let _ = result;
}
#[test]
fn test_dataframe_count_cov() {
let mut interp = Interpreter::new();
let result = interp.eval_string(
r#"
let df = DataFrame::from_csv_string("a\n1\n2\n3")
df.count()
"#,
);
let _ = result;
}