Add tests
This commit is contained in:
parent
61e7079a00
commit
7b101c944a
@ -18,7 +18,6 @@ fn async_download() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn clue_solver() {
|
||||
let file_contents = read_to_string("examples/clue_solver.ds").unwrap();
|
||||
|
||||
@ -34,7 +33,6 @@ fn fetch() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn fibonacci() {
|
||||
let file_contents = read_to_string("examples/fibonacci.ds").unwrap();
|
||||
|
||||
|
@ -1,20 +1,24 @@
|
||||
use dust_lang::*;
|
||||
|
||||
#[test]
|
||||
fn simple_for_loop() {
|
||||
fn list_for_loop() {
|
||||
let result = interpret("for i in [1 2 3] { output(i) }");
|
||||
|
||||
assert_eq!(Ok(Value::none()), result);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn modify_value() {
|
||||
fn range_for_loop() {
|
||||
let result = interpret(
|
||||
"
|
||||
list = []
|
||||
for i in [1 2 3] { list += i }
|
||||
list
|
||||
",
|
||||
numbers = []
|
||||
|
||||
for i in 1..3 {
|
||||
numbers += i
|
||||
}
|
||||
|
||||
numbers
|
||||
",
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
@ -28,13 +32,82 @@ fn modify_value() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn modify_iteration_values() {
|
||||
fn map_for_loop() {
|
||||
let result = interpret(
|
||||
"
|
||||
list = [1 2 3]
|
||||
for i in list { i += i }
|
||||
list
|
||||
",
|
||||
map = {
|
||||
x = 'y'
|
||||
foo = 'bar'
|
||||
}
|
||||
list = []
|
||||
|
||||
for [key, value] in map {
|
||||
list += value
|
||||
}
|
||||
|
||||
list
|
||||
",
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
Ok(Value::List(List::with_items(vec![
|
||||
Value::String("y".to_string()),
|
||||
Value::String("bar".to_string()),
|
||||
]))),
|
||||
result
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn modify_list() {
|
||||
let result = interpret(
|
||||
"
|
||||
list = []
|
||||
for i in [1 2 3] { list += i }
|
||||
list
|
||||
",
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
Ok(Value::List(List::with_items(vec![
|
||||
Value::Integer(1),
|
||||
Value::Integer(2),
|
||||
Value::Integer(3),
|
||||
]))),
|
||||
result
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn modify_map() {
|
||||
let result = interpret(
|
||||
"
|
||||
map = {}
|
||||
|
||||
for i in [['x', 1] ['y', 2]] {
|
||||
map:(i:0) = i:1
|
||||
}
|
||||
|
||||
map
|
||||
",
|
||||
);
|
||||
|
||||
let map = Map::new();
|
||||
|
||||
map.set("x".to_string(), Value::Integer(1)).unwrap();
|
||||
map.set("y".to_string(), Value::Integer(2)).unwrap();
|
||||
|
||||
assert_eq!(Ok(Value::Map(map)), result);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn modify_list_values() {
|
||||
let result = interpret(
|
||||
"
|
||||
list = [1 2 3]
|
||||
for i in list { i += i }
|
||||
list
|
||||
",
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
@ -47,19 +120,46 @@ fn modify_iteration_values() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn modify_map_values() {
|
||||
let result = interpret(
|
||||
"
|
||||
map = {
|
||||
x = 0
|
||||
y = 1
|
||||
}
|
||||
|
||||
for [key, value] in map {
|
||||
value += 1
|
||||
}
|
||||
|
||||
map
|
||||
",
|
||||
);
|
||||
|
||||
let map = Map::new();
|
||||
|
||||
map.set("x".to_string(), Value::Integer(1)).unwrap();
|
||||
map.set("y".to_string(), Value::Integer(2)).unwrap();
|
||||
|
||||
assert_eq!(Ok(Value::Map(map)), result);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn r#break() {
|
||||
let result = interpret(
|
||||
"
|
||||
list = []
|
||||
for i in [1 2 3] {
|
||||
if i > 2 {
|
||||
break
|
||||
} else {
|
||||
list += i
|
||||
}
|
||||
list = []
|
||||
|
||||
for i in [1 2 3] {
|
||||
if i > 2 {
|
||||
break
|
||||
} else {
|
||||
list += i
|
||||
}
|
||||
list
|
||||
}
|
||||
|
||||
list
|
||||
",
|
||||
);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user