mirror of https://git.sr.ht/~garritfra/sabre
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
981 B
57 lines
981 B
3 years ago
|
use crate::lexer::*;
|
||
|
use crate::parser::*;
|
||
|
|
||
|
#[test]
|
||
|
fn test_parse_empty_function() {
|
||
|
let tokens = tokenize("fn main() {}");
|
||
|
let tree = parse(tokens);
|
||
|
assert!(tree.is_ok())
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_parse_function_with_return() {
|
||
|
let raw = "
|
||
|
fn main() {
|
||
|
return 1;
|
||
|
}
|
||
|
";
|
||
|
let tokens = tokenize(raw);
|
||
|
let tree = parse(tokens);
|
||
|
assert!(tree.is_ok())
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_parse_missing_semicolon() {
|
||
|
let raw = "
|
||
|
fn main() {
|
||
|
return 1
|
||
|
}
|
||
|
";
|
||
|
let tokens = tokenize(raw);
|
||
|
let tree = parse(tokens);
|
||
|
assert!(tree.is_err())
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_parse_no_function_context() {
|
||
|
let raw = "
|
||
|
let x = 1;
|
||
|
";
|
||
|
let tokens = tokenize(raw);
|
||
|
let tree = parse(tokens);
|
||
|
assert!(tree.is_err())
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_parse_variable_declaration() {
|
||
|
let raw = "
|
||
|
fn main() {
|
||
|
let x = 1;
|
||
|
return x;
|
||
|
}
|
||
|
";
|
||
|
let tokens = tokenize(raw);
|
||
|
let tree = parse(tokens);
|
||
|
assert!(tree.is_ok())
|
||
|
}
|