pub fn expect_pos_or_env<'a, Token, StepRes>(
    parser: Parsit<'a, Token>,
    res: Step<'a, StepRes>,
    expect: usize
)where
    StepRes: PartialEq + Debug,
    Token: Logos<'a, Source = str> + Debug + PartialEq,
    Token::Extras: Default,
Expand description

Asserts a step value with success state and the position is expected as well otherwise prints env

Example

use logos::Logos;
use parsit::test::parser_test::expect_pos_or_env;
use crate::parsit::test::parser_test::expect_pos;
use crate::parsit::test::parser_test::parsit;
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(|(l,r)|format!("{}+{}+",l,r));

expect_pos_or_env(p,step,2); // the next position to parse