Skip to content

Commit 14174a5

Browse files
committed
add test
1 parent 81f5b69 commit 14174a5

File tree

1 file changed

+31
-30
lines changed

1 file changed

+31
-30
lines changed
Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
extern crate alloc;
2-
use alloc::rc::Rc;
3-
use core::cell::RefCell;
42

53
use zenlang::compiler::*;
64
use zenlang::parser::*;
@@ -33,34 +31,6 @@ fn expect_to_return(code: String, value: Value) {
3331
assert!(vm.ret.equal(&value, &vm));
3432
}
3533

36-
fn expect_to_return_obj(code: String, object: Object) {
37-
let mut tokenizer = Tokenizer::new(code);
38-
let mut parser = Parser::new(&mut tokenizer);
39-
let mut compiler = Compiler::new(&mut parser);
40-
if let Err(e) = compiler.compile() {
41-
assert_eq!(e, "");
42-
}
43-
let mut vm = VM::new();
44-
let module = compiler.get_module();
45-
println!("{:?}", module.opcodes);
46-
47-
let _ = vm.load_module(&zenlang::stdlib::compile_stdlib_module());
48-
let _ = vm.load_module(module);
49-
50-
if let Err(e) = vm.set_entry_function("main") {
51-
assert_eq!(e, "");
52-
}
53-
54-
vm.run_until_halt();
55-
56-
println!("vm.ret: {}", vm.ret);
57-
assert_eq!(vm.error, "");
58-
assert!(
59-
vm.ret
60-
.equal(&Value::Object(Rc::new(RefCell::new(object))), &vm)
61-
);
62-
}
63-
6434
#[test]
6535
fn vm_test_self_1() {
6636
expect_to_return(
@@ -115,3 +85,34 @@ fn main {
11585
Value::Number(2.0),
11686
);
11787
}
88+
89+
#[test]
90+
fn vm_test_self_3() {
91+
expect_to_return(
92+
r#"
93+
fn f2 {
94+
let self.hi = 3;
95+
}
96+
97+
fn f {
98+
let self.hi = 1;
99+
let obj = {
100+
"test" = f2
101+
};
102+
obj.test();
103+
let self.hi = obj.hi - 1;
104+
}
105+
106+
fn main {
107+
let obj = {
108+
"obj" = {
109+
"test" = f,
110+
}
111+
};
112+
obj.obj.test();
113+
return obj.obj.hi;
114+
} "#
115+
.into(),
116+
Value::Number(2.0),
117+
);
118+
}

0 commit comments

Comments
 (0)