use scarf_syntax::*;
#[macro_export]
macro_rules! check_lexer {
($input:expr, $expected:expr) => {{
let input = lex($input, "<test>")
.map(|a| a.0.unwrap())
.collect::<Vec<_>>();
assert_eq!(input, $expected)
}};
}
#[macro_export]
macro_rules! check_preprocessor {
($input:expr, $expected:expr) => {{
let input = lex($input, "<test>").tokens().collect::<Vec<_>>();
let mut state = PreprocessorState::new(vec![], vec![]);
let cache = PreprocessorCache::new();
let preprocess_result = preprocess(
&mut TokenIterator::new(input.into_iter()),
&mut state,
&cache,
);
match preprocess_result {
Ok(result) => {
assert_eq!(result, $expected);
assert_eq!(state.warnings.first(), None);
}
Err(err) => panic!("{:?}", err),
}
}};
}
#[macro_export]
macro_rules! apply_parser {
($input:literal, $parser:ident, $storage:expr) => {{
*$storage = lex($input, "<test>").tokens().collect::<Vec<_>>();
let mut tokens = Tokens {
input: TokenSlice::new(&$storage[..]),
state: None,
};
$parser(&mut tokens).unwrap()
}};
}
#[macro_export]
macro_rules! check_parser {
($input:literal, $parser:ident, $expected:expr) => {{
let input = lex($input, "<test>").tokens().collect::<Vec<_>>();
let mut tokens = Tokens {
input: TokenSlice::new(&input[..]),
state: None,
};
assert_eq!($parser(&mut tokens).unwrap(), $expected)
}};
}
pub fn test_metadata<'s>() -> Metadata<'s> {
Metadata::new(Span::default(), vec![])
}