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::*;
|
use crate::ast::node::*;
|
||||||
|
|
||||||
include!(concat!(env!("OUT_DIR"), "/src/ast/build.rs"));
|
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
|
optional: true
|
||||||
- right:
|
- right:
|
||||||
rule: Expression
|
rule: Expression
|
||||||
|
optional: true
|
||||||
ShiftOperator:
|
ShiftOperator:
|
||||||
leaf_rules:
|
leaf_rules:
|
||||||
- LeftShift
|
- LeftShift
|
||||||
@ -655,6 +656,7 @@ MultiplicativeExpression:
|
|||||||
optional: true
|
optional: true
|
||||||
- right:
|
- right:
|
||||||
rule: Expression
|
rule: Expression
|
||||||
|
optional: true
|
||||||
MultiplicativeOperator:
|
MultiplicativeOperator:
|
||||||
leaf_rules:
|
leaf_rules:
|
||||||
- Multiply
|
- Multiply
|
||||||
@ -665,6 +667,8 @@ PrefixExpression:
|
|||||||
- operators:
|
- operators:
|
||||||
rule: PrefixOperator
|
rule: PrefixOperator
|
||||||
vec: true
|
vec: true
|
||||||
|
- right:
|
||||||
|
rule: SuffixExpression
|
||||||
PrefixOperator:
|
PrefixOperator:
|
||||||
leaf_rules:
|
leaf_rules:
|
||||||
- Spread
|
- Spread
|
||||||
@ -812,7 +816,7 @@ BacktickString:
|
|||||||
BacktickInner:
|
BacktickInner:
|
||||||
produce:
|
produce:
|
||||||
kind: string
|
kind: string
|
||||||
from: string_inner
|
from: whole_pair
|
||||||
BooleanLiteral:
|
BooleanLiteral:
|
||||||
produce:
|
produce:
|
||||||
kind: boolean
|
kind: boolean
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user