1
0

Add tests

This commit is contained in:
Jeff 2024-01-30 11:48:29 -05:00
parent 61e7079a00
commit 7b101c944a
2 changed files with 119 additions and 21 deletions

View File

@ -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();

View File

@ -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
", ",
); );