use runmat_parser::{parse, Expr, Stmt};

#[test]
fn single_of_range_parses_as_function_call() {
    let program = parse("x = single(0:B-1);").expect("parse");
    assert_eq!(program.body.len(), 1);
    match &program.body[0] {
        Stmt::Assign(name, expr, _, _) => {
            assert_eq!(name, "x");
            match expr {
                Expr::FuncCall(fname, args, _) => {
                    assert_eq!(fname, "single");
                    assert_eq!(args.len(), 1);
                    assert!(matches!(&args[0], Expr::Range(_, _, _, _)));
                }
                other => panic!("expected FuncCall(single,...), got {other:?}"),
            }
        }
        other => panic!("expected Assign, got {other:?}"),
    }
}
