mdl_monkey 1.0.0

A Rust implementation of the Monkey programming language from <https://interpreterbook.com/>.
Documentation
extern crate mdl_monkey;

use mdl_monkey::token::{Float, Integer, Radix, Token};

#[test]
fn token_display() {
    let tests = vec![
        (Token::Illegal('x'), "illegal(x)"),
        (Token::Eof, "EOF"),
        (
            Token::Identifier("string".to_string()),
            "identifier(string)",
        ),
        (
            Token::Integer(Integer {
                radix: Radix::Decimal,
                value: 101,
            }),
            "101",
        ),
        (
            Token::Integer(Integer {
                radix: Radix::Binary,
                value: 0b101,
            }),
            "0b101",
        ),
        (
            Token::Integer(Integer {
                radix: Radix::Octal,
                value: 0o101,
            }),
            "0o101",
        ),
        (
            Token::Integer(Integer {
                radix: Radix::Hexadecimal,
                value: 0x101,
            }),
            "0x101",
        ),
        (Token::Float(Float::new(1.23)), "1.23"),
        (Token::Assign, "="),
        (Token::Plus, "+"),
        (Token::Minus, "-"),
        (Token::Bang, "!"),
        (Token::Asterisk, "*"),
        (Token::Slash, "/"),
        (Token::Percent, "%"),
        (Token::Equal, "=="),
        (Token::NotEqual, "!="),
        (Token::LessThan, "<"),
        (Token::GreaterThan, ">"),
        (Token::Comma, ","),
        (Token::Colon, ":"),
        (Token::Semicolon, ";"),
        (Token::LeftParen, "("),
        (Token::RightParen, ")"),
        (Token::LeftBrace, "{"),
        (Token::RightBrace, "}"),
        (Token::Function, "fn"),
        (Token::Let, "let"),
        (Token::True, "true"),
        (Token::False, "false"),
        (Token::If, "if"),
        (Token::Else, "else"),
        (Token::Return, "return"),
    ];

    for test in tests {
        let (token, string) = test;

        assert_eq!(string, format!("{}", token));
    }
}