62 lines
1.3 KiB
Rust
62 lines
1.3 KiB
Rust
|
use dust_lang::*;
|
||
|
|
||
|
#[test]
|
||
|
fn r#if() {
|
||
|
assert_eq!(
|
||
|
interpret("if true { 'true' }"),
|
||
|
Ok(Value::string("true".to_string()))
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn if_else() {
|
||
|
assert_eq!(
|
||
|
interpret("if false { 1 } else { 2 }"),
|
||
|
Ok(Value::Integer(2))
|
||
|
);
|
||
|
assert_eq!(
|
||
|
interpret("if true { 1.0 } else { 42.0 }"),
|
||
|
Ok(Value::Float(1.0))
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn if_else_else_if_else() {
|
||
|
assert_eq!(
|
||
|
interpret(
|
||
|
"
|
||
|
if false {
|
||
|
'no'
|
||
|
} else if 1 + 1 == 3 {
|
||
|
'nope'
|
||
|
} else {
|
||
|
'ok'
|
||
|
}
|
||
|
"
|
||
|
),
|
||
|
Ok(Value::string("ok".to_string()))
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn if_else_if_else_if_else_if_else() {
|
||
|
assert_eq!(
|
||
|
interpret(
|
||
|
"
|
||
|
if false {
|
||
|
'no'
|
||
|
} else if 1 + 1 == 1 {
|
||
|
'nope'
|
||
|
} else if 9 / 2 == 4 {
|
||
|
'nope'
|
||
|
} else if 'foo' == 'bar' {
|
||
|
'nope'
|
||
|
} else {
|
||
|
'ok'
|
||
|
}
|
||
|
"
|
||
|
),
|
||
|
Ok(Value::string("ok".to_string()))
|
||
|
);
|
||
|
}
|