dust/tests/enums.rs
2024-02-18 16:43:47 -05:00

83 lines
1.5 KiB
Rust

use dust_lang::*;
#[test]
fn simple_enum() {
let result = interpret(
"
enum Foobar {
Foo,
Bar,
}
Foobar::Foo
",
);
assert_eq!(
result,
Ok(Value::Enum(EnumInstance::new(
Identifier::new("Foobar"),
Identifier::new("Foo"),
Some(Value::none())
)))
);
}
#[test]
fn nested_enum() {
let result = interpret(
"
enum Fizzbuzz {
Fizz,
Buzz,
}
enum Foobar {
Foo,
Bar<Fizzbuzz>,
}
Foobar::Bar(Fizzbuzz::Fizz)
",
);
assert_eq!(
result,
Ok(Value::Enum(EnumInstance::new(
Identifier::new("Foobar"),
Identifier::new("Bar"),
Some(Value::Enum(EnumInstance::new(
Identifier::new("Fizzbuzz"),
Identifier::new("Fizz"),
Some(Value::none())
)))
)))
);
}
#[test]
fn enum_with_argument() {
let result = interpret(
"
enum FooBar<T> {
Foo<T>,
Bar,
}
Foobar::Bar(Fizzbuzz::Fizz)
",
);
assert_eq!(
result,
Ok(Value::Enum(EnumInstance::new(
Identifier::new("Foobar"),
Identifier::new("Bar"),
Some(Value::Enum(EnumInstance::new(
Identifier::new("Fizzbuzz"),
Identifier::new("Fizz"),
Some(Value::none())
)))
)))
);
}