Newer
Older
use crate::lexer::ScriptTokenType;
use crate::pratt::parser::{Scanner, ScannerError, ScannerResult};
use test_case::test_case;
#[test_case("1 + 2" => Ok(ScriptTokenType::Integer(1)) ; "expects integer")]
#[test_case("print 1 + 2" => Ok(ScriptTokenType::Print) ; "expects print")]
#[test_case("\"Foo\"" => matches Ok(ScriptTokenType::OwnedString(_)) ; "expects string")]
#[test_case("" => Ok(ScriptTokenType::Eof) ; "expects eof")]
fn next_token(source: &'static str) -> Result<ScriptTokenType<'static>, ScannerError> {
let mut scanner = Scanner::new(source);
scanner.scan_token().map(|t| t.token)
}