78 lines
1.4 KiB
Rust
78 lines
1.4 KiB
Rust
use std::rc::Rc;
|
|
|
|
use dust_lang::*;
|
|
|
|
#[test]
|
|
fn async_block() {
|
|
assert_eq!(
|
|
interpret(
|
|
Rc::new("test".to_string()),
|
|
"
|
|
x = 41
|
|
async {
|
|
x += 1
|
|
5
|
|
}
|
|
x
|
|
"
|
|
),
|
|
Ok(Some(Value::integer(42)))
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
fn loops_and_breaks() {
|
|
assert_eq!(
|
|
interpret(
|
|
Rc::new("test".to_string()),
|
|
"
|
|
i = 0
|
|
loop {
|
|
if i == 3 {
|
|
break
|
|
} else {
|
|
i += 1
|
|
}
|
|
}
|
|
i
|
|
"
|
|
),
|
|
Ok(Some(Value::integer(3)))
|
|
);
|
|
assert_eq!(
|
|
interpret(
|
|
Rc::new("test".to_string()),
|
|
"
|
|
foobar = {
|
|
while true {
|
|
break
|
|
}
|
|
'foobar'
|
|
}
|
|
|
|
foobar
|
|
"
|
|
),
|
|
Ok(Some(Value::string("foobar".to_string())))
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn r#if() {
|
|
assert_eq!(
|
|
interpret(Rc::new("test".to_string()), "if true { 'foobar' }"),
|
|
Ok(Some(Value::string("foobar".to_string())))
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
fn if_else() {
|
|
assert_eq!(
|
|
interpret(
|
|
Rc::new("test".to_string()),
|
|
"if false { 'foo' } else { 'bar' }"
|
|
),
|
|
Ok(Some(Value::string("bar".to_string())))
|
|
)
|
|
}
|