Refactor unit tests

This commit is contained in:
mars 2022-02-28 13:27:27 -07:00
parent 2df63504e0
commit 04c0dc35a6
5 changed files with 31 additions and 26 deletions

View File

@ -1,6 +1,6 @@
use console::Style;
pub mod ast;
pub mod parse;
pub mod lexer;
use lexer::Token;
@ -42,7 +42,7 @@ mod tests {
#[test]
fn lex_file() {
let source = include_str!("ast_fn.fae");
let source = include_str!("test/example.fae");
let theme = ColorTheme::new();
let mut lex = lexer::Lexer::new(source);
@ -56,7 +56,7 @@ mod tests {
// TODO use spans to color-code instead of raw tokens, to show original whitespace
/*#[test]
fn color_file() {
let source = include_str!("../example.fae");
let source = include_str!("test/example.fae");
let theme = ColorTheme::new();
let mut lex = Token::lexer(source);
@ -65,25 +65,4 @@ mod tests {
print!("{}", style.apply_to(lex.slice()));
}
}*/
fn print_ast(source: &str) {
let mut lex = lexer::Lexer::new(source);
let ast = ast::Ast::build(&mut lex);
println!("{:#?}", ast);
}
#[test]
fn ast_fn() {
print_ast(include_str!("ast_fn.fae"));
}
#[test]
fn ast_struct() {
print_ast(include_str!("ast_struct.fae"));
}
#[test]
fn ast_example() {
print_ast(include_str!("../example.fae"));
}
}

View File

@ -1,11 +1,11 @@
use crate::lexer::{Lexer, Token};
#[derive(Debug)]
pub struct Ast<'a> {
pub struct ParseTree<'a> {
pub declarations: Vec<Definition<'a>>,
}
impl<'a> Ast<'a> {
impl<'a> ParseTree<'a> {
pub fn build(lexer: &mut Lexer<'a>) -> Self {
let mut declarations = Vec::new();
let mut associated_struct = None;
@ -221,3 +221,29 @@ pub struct BranchBody<'a> {
pub statements: Vec<Statement<'a>>,
pub tail_expression: Box<Expression<'a>>,
}
#[cfg(test)]
mod tests {
use super::*;
fn parse(source: &str) {
let mut lex = Lexer::new(source);
let parse_tree = ParseTree::build(&mut lex);
println!("{:#?}", parse_tree);
}
#[test]
fn function() {
parse(include_str!("test/function.fae"));
}
#[test]
fn structure() {
parse(include_str!("test/structure.fae"));
}
#[test]
fn example() {
parse(include_str!("test/example.fae"));
}
}