#![allow(clippy::unwrap_used)]
#![allow(clippy::expect_used)]
use crate::formatter::lexer::{Compare, Lexer, Token};
#[test]
fn condition() {
let mut lexer = Lexer::new("[<100]");
let token = lexer.next_token();
assert!(matches!(token, Token::Condition(Compare::LessThan, 100.0)));
}
#[test]
fn condition_negative() {
let mut lexer = Lexer::new("[>-100]");
let token = lexer.next_token();
assert!(matches!(
token,
Token::Condition(Compare::GreaterThan, -100.0)
));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn condition_period() {
let mut lexer = Lexer::new("[<=.5]");
let token = lexer.next_token();
assert!(matches!(
token,
Token::Condition(Compare::LessOrEqualThan, 0.5)
));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn condition_scientific() {
let mut lexer = Lexer::new("[<=-1.5E2]");
let token = lexer.next_token();
assert!(matches!(
token,
Token::Condition(Compare::LessOrEqualThan, -150.0)
));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn condition_invalid() {
let mut lexer = Lexer::new("[<abc]");
let token = lexer.next_token();
assert!(matches!(token, Token::ILLEGAL));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn elapsed_time() {
let mut lexer = Lexer::new("[hh]:mm:ss");
let token = lexer.next_token();
assert!(matches!(token, Token::ElapsedHourPadded));
let token = lexer.next_token();
assert!(matches!(token, Token::Literal(':')));
let token = lexer.next_token();
assert!(matches!(token, Token::MonthPadded));
let token = lexer.next_token();
assert!(matches!(token, Token::Literal(':')));
let token = lexer.next_token();
assert!(matches!(token, Token::SecondPadded));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn elapsed_hour() {
let mut lexer = Lexer::new("[H]");
let token = lexer.next_token();
assert!(matches!(token, Token::ElapsedHour));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn elapsed_minute() {
let mut lexer = Lexer::new("[M]");
let token = lexer.next_token();
assert!(matches!(token, Token::ElapsedMinute));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn elapsed_second() {
let mut lexer = Lexer::new("[S]");
let token = lexer.next_token();
assert!(matches!(token, Token::ElapsedSecond));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn elapsed_minute_padded() {
let mut lexer = Lexer::new("[MM]");
let token = lexer.next_token();
assert!(matches!(token, Token::ElapsedMinutePadded));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn elapsed_second_padded() {
let mut lexer = Lexer::new("[SS]");
let token = lexer.next_token();
assert!(matches!(token, Token::ElapsedSecondPadded));
assert!(matches!(lexer.next_token(), Token::EOF));
}
#[test]
fn too_many_h() {
let mut lexer = Lexer::new("[HHH]");
let token = lexer.next_token();
assert!(matches!(token, Token::ILLEGAL));
assert!(matches!(lexer.next_token(), Token::EOF));
}