Files
OxideJS-New/crates/oxide_vm/tests/debug_object_tests.rs
T

47 lines
1.4 KiB
Rust

use oxide_compiler::compiler::Compiler;
use oxide_vm::vm::Vm;
#[test]
fn eval_object_is_object() {
let allocator = oxide_parser::Allocator::default();
let program = oxide_parser::parse(&allocator, "Object").unwrap();
let module = Compiler::new().compile(&program).unwrap();
let mut vm = Vm::new();
let result = vm.run(&module).unwrap();
assert!(
result.is_object(),
"Object should be an object, got {:?}",
result
);
}
#[test]
fn verify_global_object_props() {
let vm = Vm::new();
let global = vm.kernel().global_object();
let obj_si = vm.kernel().string_forge().intern("Object").0;
let mut shape_id = global.shape_id();
let mut found = false;
while shape_id != oxide_kernel::shape_forge::EMPTY_SHAPE_ID {
if let Some(shape) = vm.kernel().shape_forge().get_shape(shape_id) {
if shape.property_name == obj_si {
found = true;
let val = global.get_prop(shape.property_offset);
assert!(
val.is_object(),
"Object prop should be object, got {:?}",
val
);
break;
}
shape_id = shape
.parent
.unwrap_or(oxide_kernel::shape_forge::EMPTY_SHAPE_ID);
} else {
break;
}
}
assert!(found, "Object property not found on global object");
}