ape_parser 0.1.7

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

#[test]
fn call_struct_1() {
    let left = get_expr(Expression::Call {
        id: 2,
        name: Box::new(Token {
            token: Ident,
            pos: (14, 18),
            lexeme: "Call".to_string(),
            value: None,
            line: 1,
        }),
        args: vec![Expression::Var {
            id: 1,
            name: Token {
                token: Ident,
                pos: (19, 24),
                lexeme: "value".to_string(),
                value: None,
                line: 1,
            },
        }],
        call_type: CallType::Struct,
    });
    let right = get_ast("let x: any = Call.value;");

    assert_eq!(left, right, "testing `let x: any = Call.value;`");
}

#[test]
fn call_enum_1() {
    let left = get_expr(Expression::Call {
        id: 2,
        name: Box::new(Token {
            token: Ident,
            pos: (14, 18),
            lexeme: "call".to_string(),
            value: None,
            line: 1,
        }),
        args: vec![Expression::Var {
            id: 1,
            name: Token {
                token: Ident,
                pos: (20, 24),
                lexeme: "Enum".to_string(),
                value: None,
                line: 1,
            },
        }],
        call_type: CallType::Enum,
    });
    let right = get_ast("let x: any = call::Enum;");

    assert_eq!(left, right, "testing `let x: any = call::Enum;`");
}

#[test]
fn call_func_3() {
    let left = get_expr(Expression::Call {
        id: 3,
        name: Box::new(Token {
            token: Ident,
            pos: (14, 18),
            lexeme: "call".to_string(),
            value: None,
            line: 1,
        }),
        args: vec![
            Expression::Value {
                id: 1,
                value: LiteralType::Boolean(true),
            },
            Expression::Value {
                id: 2,
                value: LiteralType::Boolean(false),
            },
        ],
        call_type: CallType::Func,
    });
    let right = get_ast("let x: any = call(true, false);");

    assert_eq!(left, right, "testing `let x: any = call(true, false);`");
}

#[test]
fn call_func_2() {
    let left = get_expr(Expression::Call {
        id: 2,
        name: Box::new(Token {
            token: Ident,
            pos: (14, 18),
            lexeme: "call".to_string(),
            value: None,
            line: 1,
        }),
        args: vec![Expression::Value {
            id: 1,
            value: LiteralType::Boolean(true),
        }],
        call_type: CallType::Func,
    });
    let right = get_ast("let x: any = call(true);");

    assert_eq!(left, right, "testing `let x: any = call(true);`");
}

#[test]
fn call_func_1() {
    let left = get_expr(Expression::Call {
        id: 1,
        name: Box::new(Token {
            token: Ident,
            pos: (14, 18),
            lexeme: "call".to_string(),
            value: None,
            line: 1,
        }),
        args: vec![],
        call_type: CallType::Func,
    });
    let right = get_ast("let x: any = call();");

    assert_eq!(left, right, "testing `let x: any = call();`");
}