extendr-api 0.9.0

Safe and user friendly bindings to the R programming language.
Documentation
use extendr_api::prelude::*;
use extendr_ffi::ParseStatus;

#[test]
fn parse_reports_error_for_invalid_syntax() {
    test! {
        let err = parse("c(10 42,20)").unwrap_err();
        let msg = err.to_string();
        match err {
            Error::ParseError {
                status: ParseStatus::PARSE_ERROR,
                ..
            } => assert!(msg.contains("syntax error")),
            other => panic!("Unexpected error variant: {other:?}"),
        }
    }
}

#[test]
fn parse_reports_error_for_incomplete_input() {
    test! {
        let err = parse("c(10").unwrap_err();
        let msg = err.to_string();
        match err {
            Error::ParseError {
                status: ParseStatus::PARSE_INCOMPLETE,
                ..
            } => assert!(msg.contains("incomplete statement")),
            other => panic!("Unexpected error variant: {other:?}"),
        }
    }
}

#[test]
fn eval_string_returns_eval_error_for_missing_argument() {
    test! {
        let result = eval_string("c(10,,42,20)");
        assert!(matches!(result, Err(Error::EvalError(_))));
    }
}