yarpl 0.0.23

Yet Another Rust Parsing Library

#[allow(deprecated)]
#[allow(const_item_mutation)]
#[allow(unused_must_use)]
#[cfg(test)]


#[cfg(test)]
mod tests {

	use yarpl::*;

	type Letters = Many<Either<"abcdefghijklmnopqrstuvwxyz">>;
	type Digits = Many<Either<"0123456789">>;

	#[test]
	fn parse_letters() {

		let ref mut parser = Parser::from("asdf");

		assert!(parser.parse::<Letters>().is_ok());

	}

	#[test]
	fn parse_digits() {

		let ref mut parser = Parser::from("1234asdf");

		assert!(parser.parse::<Digits>().is_ok());
	}


	#[test]
	fn parse_literal() {
		
		type AAAA = Literal<"aaaa">;

		let ref mut parser = Parser::from("asdf    \naaaa");

		parser.disable_strict_mode();

		let result = parser.parse::<Literal<"safaffsda">>();
		let _ = parser.parse::<AAAA>();


		if result.is_err() {

			println!("{}", result.unwrap_err())

		}

	}

	#[test]
	fn parse_maybe() {
		
		let ref mut parser = Parser::from("asdf");
		let ref mut other_parser = parser.clone();

		assert!(parser.parse::<Maybe::<Literal<"asdf">>>().is_ok());
		assert!(other_parser.parse::<Maybe::<Literal<"yeah">>>().is_ok());

	}


	#[test]
	fn parse_type_alias() {
		
		type Newline = Literal::<"\n">;
		
		assert!(Parser::from("\n").parse::<Newline>().is_ok());
		
	}
	
	#[test]
	fn parse_either() {
		
		type Yeah = Either<"0123456789">;
		
		let ref mut parser = Parser::from("823813");
	
		assert!(parser.parse::<Yeah>().is_ok());
		
	} 
	
	
}