Refactor unit tests
This commit is contained in:
parent
2df63504e0
commit
04c0dc35a6
27
src/lib.rs
27
src/lib.rs
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue