44 lines
1.2 KiB
Rust
44 lines
1.2 KiB
Rust
use super::parse;
|
|
use super::parsed_statement::ParsedStatement;
|
|
use crate::parsing::lexer::lex_tokens::{LexToken, TokenType};
|
|
use crate::span::Span;
|
|
|
|
fn create_tokens(types: Vec<TokenType>) -> Vec<LexToken> {
|
|
let mut v = Vec::with_capacity(types.len());
|
|
for t in types {
|
|
v.push(LexToken {
|
|
token_type: t,
|
|
span: Span::new(0, 0),
|
|
});
|
|
}
|
|
v
|
|
}
|
|
|
|
#[test]
|
|
fn test_empty_namespace() {
|
|
let script = parse(create_tokens(vec![
|
|
TokenType::NamespaceKeyword,
|
|
TokenType::WhiteSpace,
|
|
TokenType::Identifier("foo".to_string()),
|
|
TokenType::WhiteSpace,
|
|
TokenType::OpenCurlyBracket,
|
|
TokenType::CloseCurlyBracket,
|
|
TokenType::EndOfFile,
|
|
]));
|
|
if let ParsedStatement::Script(inner) = script.as_ref() {
|
|
assert_eq!(1, inner.len());
|
|
if let ParsedStatement::Namespace(identifier, inner_script) = inner[0].as_ref() {
|
|
assert_eq!(identifier, "foo");
|
|
if let ParsedStatement::Script(inner) = inner_script.as_ref() {
|
|
assert_eq!(0, inner.len());
|
|
} else {
|
|
unreachable!();
|
|
}
|
|
} else {
|
|
unreachable!()
|
|
}
|
|
} else {
|
|
unreachable!();
|
|
}
|
|
}
|