use slash_lang::parser::lexer::{lex, Token};

#[test]
fn splits_on_whitespace_only() {
    let tokens = lex("/a  /b\n/c\targ").unwrap();
    assert_eq!(
        tokens,
        vec![
            Token::Command("/a".to_string()),
            Token::Command("/b".to_string()),
            Token::Command("/c".to_string()),
            Token::Word("arg".to_string()),
        ]
    );
}

#[test]
fn classifies_operators_and_redirections() {
    let tokens = lex("/a | /b |& /c && /d || /e > out >> log").unwrap();
    assert_eq!(
        tokens,
        vec![
            Token::Command("/a".to_string()),
            Token::Pipe,
            Token::Command("/b".to_string()),
            Token::PipeErr,
            Token::Command("/c".to_string()),
            Token::And,
            Token::Command("/d".to_string()),
            Token::Or,
            Token::Command("/e".to_string()),
            Token::Redirect,
            Token::Word("out".to_string()),
            Token::Append,
            Token::Word("log".to_string()),
        ]
    );
}
