Start adding ast build tests.
This commit is contained in:
parent
de8e2ba397
commit
fc2912edd2
1
src/ast/build_tests/backtick_inner/greeting
Normal file
1
src/ast/build_tests/backtick_inner/greeting
Normal file
@ -0,0 +1 @@
|
||||
Hello, World!
|
||||
1
src/ast/build_tests/backtick_string/mixed
Normal file
1
src/ast/build_tests/backtick_string/mixed
Normal file
@ -0,0 +1 @@
|
||||
`Hello, ${world}!`
|
||||
1
src/ast/build_tests/boolean_literal/false
Normal file
1
src/ast/build_tests/boolean_literal/false
Normal file
@ -0,0 +1 @@
|
||||
false
|
||||
1
src/ast/build_tests/boolean_literal/true
Normal file
1
src/ast/build_tests/boolean_literal/true
Normal file
@ -0,0 +1 @@
|
||||
true
|
||||
@ -53,4 +53,54 @@ pub mod build {
|
||||
use crate::ast::node::*;
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/src/ast/build.rs"));
|
||||
|
||||
#[cfg(test)]
|
||||
mod build_tests {
|
||||
use super::*;
|
||||
use crate::parser::DeimosParser;
|
||||
use pest::Parser;
|
||||
|
||||
fn parse(rule: Rule, input: &str) -> Pair<Rule> {
|
||||
let parse_result = DeimosParser::parse(rule, input);
|
||||
parse_result.expect("parsing failed").next().unwrap()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn boolean_literal_true() {
|
||||
let pair = parse(
|
||||
Rule::BooleanLiteral,
|
||||
include_str!("build_tests/boolean_literal/true"),
|
||||
);
|
||||
assert_eq!(true, build_boolean_literal(pair));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn boolean_literal_false() {
|
||||
let pair = parse(
|
||||
Rule::BooleanLiteral,
|
||||
include_str!("build_tests/boolean_literal/false"),
|
||||
);
|
||||
assert_eq!(false, build_boolean_literal(pair));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn backtick_inner_greeting() {
|
||||
let pair = parse(
|
||||
Rule::BacktickInner,
|
||||
include_str!("build_tests/backtick_inner/greeting"),
|
||||
);
|
||||
assert_eq!("Hello, World!", build_backtick_inner(pair));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn backtick_string_mixed() {
|
||||
let pair = parse(
|
||||
Rule::BacktickString,
|
||||
include_str!("build_tests/backtick_string/mixed"),
|
||||
);
|
||||
let backtick_string = build_backtick_string(pair);
|
||||
assert_eq!(backtick_string.inners().count(), 2);
|
||||
assert_eq!(backtick_string.expressions().count(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -628,6 +628,7 @@ ShiftExpression:
|
||||
optional: true
|
||||
- right:
|
||||
rule: Expression
|
||||
optional: true
|
||||
ShiftOperator:
|
||||
leaf_rules:
|
||||
- LeftShift
|
||||
@ -655,6 +656,7 @@ MultiplicativeExpression:
|
||||
optional: true
|
||||
- right:
|
||||
rule: Expression
|
||||
optional: true
|
||||
MultiplicativeOperator:
|
||||
leaf_rules:
|
||||
- Multiply
|
||||
@ -665,6 +667,8 @@ PrefixExpression:
|
||||
- operators:
|
||||
rule: PrefixOperator
|
||||
vec: true
|
||||
- right:
|
||||
rule: SuffixExpression
|
||||
PrefixOperator:
|
||||
leaf_rules:
|
||||
- Spread
|
||||
@ -812,7 +816,7 @@ BacktickString:
|
||||
BacktickInner:
|
||||
produce:
|
||||
kind: string
|
||||
from: string_inner
|
||||
from: whole_pair
|
||||
BooleanLiteral:
|
||||
produce:
|
||||
kind: boolean
|
||||
|
||||
Loading…
Reference in New Issue
Block a user