exowos/subject_source/tests/string_parse.rs
2025-03-15 10:50:05 +01:00

49 lines
1.1 KiB
Rust

use subject_source::string::parse::*;
use subject_source::vec::compute::*;
#[test]
pub fn parse_add() {
assert_eq!("+".parse(), Ok(Operation::Binary(Binary::Add)));
}
#[test]
pub fn parse_sub() {
assert_eq!("-".parse(), Ok(Operation::Binary(Binary::Sub)));
}
#[test]
pub fn parse_mul() {
assert_eq!("*".parse(), Ok(Operation::Binary(Binary::Mul)));
}
#[test]
pub fn parse_div() {
assert_eq!("/".parse(), Ok(Operation::Binary(Binary::Div)));
}
#[test]
pub fn parse_number() {
assert_eq!("3.14".parse(), Ok(Operation::Push(3.14)));
}
#[test]
pub fn parse_number_negative() {
assert_eq!("-3.14".parse(), Ok(Operation::Push(-3.14)));
}
#[test]
pub fn parse_bad_number() {
match "3.14aaa".parse::<Operation>() {
Err(ParseOperationError::Number(_)) => {}
_ => panic!("'3.14aaa' should raise a ParseOperationError::Number error"),
}
}
#[test]
pub fn parse_bad_operation() {
match "blabla".parse::<Operation>() {
Err(ParseOperationError::UnknownOperation) => {}
_ => panic!("'blabla' should raise a ParseOperationError::UnknownOperation error"),
}
}