Function parsit::test::parser_test::expect

source ·
pub fn expect<T>(res: Step<'_, T>, expect: T)where
    T: PartialEq + Debug,
Expand description

Asserts a step value with a given one

Example

use logos::Logos;
use parsit::test::parser_test::expect;
use crate::parsit::test::parser_test::*;
use crate::parsit::token;
use crate::parsit::parser::Parsit;
use crate::parsit::step::Step;

#[derive(Logos, Debug, PartialEq)]
pub enum T<'a> {
    #[regex(r"[a-zA-Z-]+")]
    Word(&'a str),

    #[token(",")]
    Comma,
    #[token(".")]
    Dot,

    #[token("!")]
    Bang,
    #[token("?")]
    Question,

    #[regex(r"[ \t\r\n]+", logos::skip)]
    Whitespace,
}
let p = parsit("abc!");
let bang = |pos:usize| token!(p.token(pos) => T::Bang => "!");
let word = |pos:usize| token!(p.token(pos) => T::Word(v) => *v);
let step =
    word(0)
        .then_or_val_zip(bang, "")
        .map(|(a,b)| format!("{}{}",a,b));

expect(step,"abc!".to_string());