Extract index calculataion into functions.

This commit is contained in:
Stephen Chung
2022-01-13 18:13:27 +08:00
parent 4b4a6c944d
commit 0f4e8848f9
14 changed files with 328 additions and 558 deletions

View File

@@ -28,6 +28,30 @@ fn test_arrays() -> Result<(), Box<EvalAltResult>> {
.into_typed_array::<INT>()?,
[1, 6, 3]
);
assert_eq!(
engine
.eval::<Dynamic>("let y = [1, 2, 3]; extract(y, 1, 10)")?
.into_typed_array::<INT>()?,
vec![2, 3]
);
assert_eq!(
engine
.eval::<Dynamic>("let y = [1, 2, 3]; extract(y, -3, 1)")?
.into_typed_array::<INT>()?,
vec![1]
);
assert_eq!(
engine
.eval::<Dynamic>("let y = [1, 2, 3]; extract(y, -99, 2)")?
.into_typed_array::<INT>()?,
vec![1, 2]
);
assert_eq!(
engine
.eval::<Dynamic>("let y = [1, 2, 3]; extract(y, 99, 1)")?
.into_typed_array::<INT>()?,
vec![] as Vec<INT>
);
#[cfg(not(feature = "no_object"))]
{

View File

@@ -27,10 +27,24 @@ fn test_bit_fields() -> Result<(), Box<EvalAltResult>> {
);
assert_eq!(engine.eval::<INT>("let x = 10; get_bits(x, 1, 3)")?, 5);
assert_eq!(engine.eval::<INT>("let x = 10; x[1..=3]")?, 5);
assert!(engine.eval::<INT>("let x = 10; x[1..99]").is_err());
assert!(engine.eval::<INT>("let x = 10; x[-1..3]").is_err());
assert_eq!(
engine.eval::<INT>("let x = 10; set_bits(x, 1, 3, 7); x")?,
14
);
#[cfg(target_pointer_width = "64")]
{
assert_eq!(engine.eval::<INT>("let x = 255; get_bits(x, -60, 2)")?, 3);
assert_eq!(
engine.eval::<INT>("let x = 0; set_bits(x, -64, 1, 15); x")?,
1
);
assert_eq!(
engine.eval::<INT>("let x = 0; set_bits(x, -60, 2, 15); x")?,
0b00110000
);
}
assert_eq!(engine.eval::<INT>("let x = 10; x[1..4] = 7; x")?, 14);
assert_eq!(
engine.eval::<INT>(