1
0
dust/tests/structs.rs

59 lines
1.1 KiB
Rust
Raw Permalink Normal View History

2024-02-15 05:53:43 +00:00
use dust_lang::*;
#[test]
fn simple_struct() {
let result = interpret(
"
struct Foo {
bar <int> = 0
baz <str>
}
new Foo {
baz = 'hiya'
}
",
);
let mut map = Map::new();
2024-02-15 21:02:27 +00:00
map.set(Identifier::new("bar"), Value::Integer(0));
map.set(Identifier::new("baz"), Value::String("hiya".to_string()));
2024-02-15 05:53:43 +00:00
2024-02-15 21:02:27 +00:00
let expected = Ok(Value::Struct(StructInstance::new(
Identifier::new("Foo"),
map,
)));
2024-02-15 05:53:43 +00:00
assert_eq!(result, expected);
}
#[test]
fn nested_struct() {
2024-02-15 05:58:14 +00:00
let result = interpret(
2024-02-15 05:53:43 +00:00
"
struct Foo {
bar <Bar>
}
struct Bar {}
new Foo {
bar = new Bar {}
}
",
);
2024-02-15 05:58:14 +00:00
let mut foo_map = Map::new();
2024-02-15 05:53:43 +00:00
2024-02-15 05:58:14 +00:00
foo_map.set(
2024-02-15 21:02:27 +00:00
Identifier::new("bar"),
Value::Struct(StructInstance::new(Identifier::new("Bar"), Map::new())),
2024-02-15 05:58:14 +00:00
);
2024-02-15 05:53:43 +00:00
2024-02-15 05:58:14 +00:00
let expected = Ok(Value::Struct(StructInstance::new(
2024-02-15 21:02:27 +00:00
Identifier::new("Foo"),
2024-02-15 05:58:14 +00:00
foo_map,
)));
2024-02-15 05:53:43 +00:00
2024-02-15 05:58:14 +00:00
assert_eq!(result, expected)
2024-02-15 05:53:43 +00:00
}