2025-12-23 18:41:29 -03:00
|
|
|
|
|
|
|
|
|
2025-12-23 15:52:52 -03:00
|
|
|
|
|
|
|
|
#![allow(unused_imports)]
|
|
|
|
|
#![allow(unused_variables)]
|
|
|
|
|
#![allow(dead_code)]
|
|
|
|
|
|
|
|
|
|
use rhai::Dynamic;
|
|
|
|
|
|
2025-12-23 18:41:29 -03:00
|
|
|
|
2025-12-23 15:52:52 -03:00
|
|
|
|
|
|
|
|
fn make_test_array() -> Array {
|
|
|
|
|
vec![
|
|
|
|
|
Dynamic::from(1),
|
|
|
|
|
Dynamic::from(2),
|
|
|
|
|
Dynamic::from(3),
|
|
|
|
|
Dynamic::from(4),
|
|
|
|
|
Dynamic::from(5),
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
2025-12-23 18:41:29 -03:00
|
|
|
|
2025-12-23 15:52:52 -03:00
|
|
|
fn test_slice_from_start() {
|
|
|
|
|
let arr = make_test_array();
|
|
|
|
|
let result = slice_array(&arr, 2, None);
|
|
|
|
|
assert_eq!(result.len(), 3);
|
|
|
|
|
assert_eq!(result[0].as_int().unwrap(), 3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
2025-12-23 18:41:29 -03:00
|
|
|
|
2025-12-23 15:52:52 -03:00
|
|
|
fn test_slice_with_end() {
|
|
|
|
|
let arr = make_test_array();
|
|
|
|
|
let result = slice_array(&arr, 1, Some(3));
|
|
|
|
|
assert_eq!(result.len(), 2);
|
|
|
|
|
assert_eq!(result[0].as_int().unwrap(), 2);
|
|
|
|
|
assert_eq!(result[1].as_int().unwrap(), 3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
2025-12-23 18:41:29 -03:00
|
|
|
|
2025-12-23 15:52:52 -03:00
|
|
|
fn test_slice_negative_start() {
|
|
|
|
|
let arr = make_test_array();
|
|
|
|
|
let result = slice_array(&arr, -2, None);
|
|
|
|
|
assert_eq!(result.len(), 2);
|
|
|
|
|
assert_eq!(result[0].as_int().unwrap(), 4);
|
|
|
|
|
assert_eq!(result[1].as_int().unwrap(), 5);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
2025-12-23 18:41:29 -03:00
|
|
|
|
2025-12-23 15:52:52 -03:00
|
|
|
fn test_slice_negative_end() {
|
|
|
|
|
let arr = make_test_array();
|
|
|
|
|
let result = slice_array(&arr, 0, Some(-2));
|
|
|
|
|
assert_eq!(result.len(), 3);
|
|
|
|
|
assert_eq!(result[0].as_int().unwrap(), 1);
|
|
|
|
|
assert_eq!(result[2].as_int().unwrap(), 3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
2025-12-23 18:41:29 -03:00
|
|
|
|
2025-12-23 15:52:52 -03:00
|
|
|
fn test_slice_out_of_bounds() {
|
|
|
|
|
let arr = make_test_array();
|
|
|
|
|
let result = slice_array(&arr, 10, None);
|
|
|
|
|
assert!(result.is_empty());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
2025-12-23 18:41:29 -03:00
|
|
|
|
2025-12-23 15:52:52 -03:00
|
|
|
fn test_slice_empty_range() {
|
|
|
|
|
let arr = make_test_array();
|
|
|
|
|
let result = slice_array(&arr, 3, Some(2));
|
|
|
|
|
assert!(result.is_empty());
|
|
|
|
|
}
|