use nom::{ IResult, Parser, }; #[derive(Debug,PartialEq)] pub enum Token { ParOpen, ParClose, Num(i32), Sym(String), Whitespace(String), } fn parse_token(s: &str) -> IResult<&str, Token> { todo!() } #[cfg(test)] mod private_parsing_tests { use super::{*, Token::*}; use crate::parse::util::*; #[test] fn test_parse_token() { assert_eq!(parse_token("()"), Ok((")", ParOpen))); assert_eq!(parse_token(")"), Ok(("", ParClose))); assert_eq!(parse_token(" \t\n"), Ok(("", whitespace(" \t\n")))); assert_eq!(parse_token("1 23"), Ok((" 23", Num(1)))); assert_eq!(parse_token("23"), Ok(("", Num(23)))); assert_eq!(parse_token("Nil a"), Ok((" a", sym("Nil")))); assert_eq!(parse_token("a"), Ok(("", sym("a")))); } }