Add tests
This commit is contained in:
parent
61e7079a00
commit
7b101c944a
@ -18,7 +18,6 @@ fn async_download() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn clue_solver() {
|
fn clue_solver() {
|
||||||
let file_contents = read_to_string("examples/clue_solver.ds").unwrap();
|
let file_contents = read_to_string("examples/clue_solver.ds").unwrap();
|
||||||
|
|
||||||
@ -34,7 +33,6 @@ fn fetch() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn fibonacci() {
|
fn fibonacci() {
|
||||||
let file_contents = read_to_string("examples/fibonacci.ds").unwrap();
|
let file_contents = read_to_string("examples/fibonacci.ds").unwrap();
|
||||||
|
|
||||||
|
@ -1,20 +1,24 @@
|
|||||||
use dust_lang::*;
|
use dust_lang::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn simple_for_loop() {
|
fn list_for_loop() {
|
||||||
let result = interpret("for i in [1 2 3] { output(i) }");
|
let result = interpret("for i in [1 2 3] { output(i) }");
|
||||||
|
|
||||||
assert_eq!(Ok(Value::none()), result);
|
assert_eq!(Ok(Value::none()), result);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn modify_value() {
|
fn range_for_loop() {
|
||||||
let result = interpret(
|
let result = interpret(
|
||||||
"
|
"
|
||||||
list = []
|
numbers = []
|
||||||
for i in [1 2 3] { list += i }
|
|
||||||
list
|
for i in 1..3 {
|
||||||
",
|
numbers += i
|
||||||
|
}
|
||||||
|
|
||||||
|
numbers
|
||||||
|
",
|
||||||
);
|
);
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
@ -28,13 +32,82 @@ fn modify_value() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn modify_iteration_values() {
|
fn map_for_loop() {
|
||||||
let result = interpret(
|
let result = interpret(
|
||||||
"
|
"
|
||||||
list = [1 2 3]
|
map = {
|
||||||
for i in list { i += i }
|
x = 'y'
|
||||||
list
|
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!(
|
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]
|
#[test]
|
||||||
fn r#break() {
|
fn r#break() {
|
||||||
let result = interpret(
|
let result = interpret(
|
||||||
"
|
"
|
||||||
list = []
|
list = []
|
||||||
for i in [1 2 3] {
|
|
||||||
if i > 2 {
|
for i in [1 2 3] {
|
||||||
break
|
if i > 2 {
|
||||||
} else {
|
break
|
||||||
list += i
|
} else {
|
||||||
}
|
list += i
|
||||||
}
|
}
|
||||||
list
|
}
|
||||||
|
|
||||||
|
list
|
||||||
",
|
",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user