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) }