ape_parser 0.1.7

syntax analysis for Aperture programming language
Documentation
use super::*;

#[test]
fn stmt_4() {
    let left = vec![Statement::If {
        cond: Expression::Value {
            id: 0,
            value: LiteralType::Boolean(true),
        },
        body: vec![Statement::Block { stmts: vec![] }],
        else_if_branches: vec![
            (
                Expression::Value {
                    id: 1,
                    value: LiteralType::Boolean(false),
                },
                vec![Statement::Block { stmts: vec![] }],
            ),
            (
                Expression::Value {
                    id: 2,
                    value: LiteralType::Number(1.0),
                },
                vec![Statement::Block { stmts: vec![] }],
            ),
        ],
        else_branch: None,
    }];
    let right = get_ast("if true {} elif false {} elif 0b1 {}");

    assert_eq!(
        left, right,
        "testing `if true {{}} elif false {{}} elif 0b1 {{}}`"
    );
}

#[test]
fn stmt_3() {
    let left = vec![Statement::If {
        cond: Expression::Value {
            id: 0,
            value: LiteralType::Boolean(true),
        },
        body: vec![Statement::Block { stmts: vec![] }],
        else_if_branches: vec![(
            Expression::Value {
                id: 1,
                value: LiteralType::Boolean(false),
            },
            vec![Statement::Block { stmts: vec![] }],
        )],
        else_branch: None,
    }];
    let right = get_ast("if true {} elif false {}");

    assert_eq!(left, right, "testing `if true {{}} elif false {{}}`");
}

#[test]
fn stmt_2() {
    let left = vec![Statement::If {
        cond: Expression::Value {
            id: 0,
            value: LiteralType::Boolean(true),
        },
        body: vec![Statement::Block { stmts: vec![] }],
        else_if_branches: vec![],
        else_branch: Some(vec![Statement::Block { stmts: vec![] }]),
    }];
    let right = get_ast("if true {} else {}");

    assert_eq!(left, right, "testing `if true {{}} else {{}}`");
}

#[test]
fn stmt_1() {
    let left = vec![Statement::If {
        cond: Expression::Value {
            id: 0,
            value: LiteralType::Boolean(true),
        },
        body: vec![Statement::Block { stmts: vec![] }],
        else_if_branches: vec![],
        else_branch: None,
    }];
    let right = get_ast("if true {}");

    assert_eq!(left, right, "testing `if true {{}}`");
}