rs-args 0.3.1

A simple command line argument parser for Rust
Documentation
use crate::lexing::{ self, TokenKind };

#[test]
fn test_lexer_identifier() {
    let input = "asdf";
    let tokens = lexing::tokenise(String::from(input)).unwrap();

    assert_eq!(tokens.len(), 1);
    assert_eq!(tokens[0].kind, TokenKind::Identifier);
    assert_eq!(tokens[0].value, String::from("asdf"));
}

#[test]
fn test_lexer_number() {
    let input = "1234";
    let tokens = lexing::tokenise(String::from(input)).unwrap();

    assert_eq!(tokens.len(), 1);
    assert_eq!(tokens[0].kind, TokenKind::Number);
    assert_eq!(tokens[0].value, String::from("1234"));
}

#[test]
fn test_lexer_string() {
    let input = "\"Hello, World!\"";
    let tokens = lexing::tokenise(String::from(input)).unwrap();

    assert_eq!(tokens.len(), 1);
    assert_eq!(tokens[0].kind, TokenKind::String);
    assert_eq!(tokens[0].value, String::from("Hello, World!"));
}

#[test]
fn test_lexer_multiple() {
    let input = "1234 asdf \"Hello, World!\"";
    let tokens = lexing::tokenise(String::from(input)).unwrap();

    assert_eq!(tokens.len(), 3);
    assert_eq!(tokens[0].kind, TokenKind::Number);
    assert_eq!(tokens[0].value, String::from("1234"));
    assert_eq!(tokens[1].kind, TokenKind::Identifier);
    assert_eq!(tokens[1].value, String::from("asdf"));
    assert_eq!(tokens[2].kind, TokenKind::String);
    assert_eq!(tokens[2].value, String::from("Hello, World!"));
}

#[test]
#[should_panic(expected = "called `Result::unwrap()` on an `Err` value: InvalidDecimalPoint(2)")]
fn test_lexer_invalid_decimal() {
    let input = "1234.567.890";
    let tokens = lexing::tokenise(String::from(input)).unwrap();

    assert_eq!(tokens.len(), 1);
    assert_eq!(tokens[0].kind, TokenKind::Number);
    assert_eq!(tokens[0].value, String::from("1234.567.890"));
}

#[test]
#[should_panic(expected = "called `Result::unwrap()` on an `Err` value: InvalidDecimalPoint(2)")]
fn test_lexer_invalid_decimal_multiple() {
    let input = "1234.567.890 asdf";
    let tokens = lexing::tokenise(String::from(input)).unwrap();

    assert_eq!(tokens.len(), 2);
    assert_eq!(tokens[0].kind, TokenKind::Number);
    assert_eq!(tokens[0].value, String::from("1234.567.890"));
    assert_eq!(tokens[1].kind, TokenKind::Identifier);
    assert_eq!(tokens[1].value, String::from("asdf"));
}