Tests added for ASTExpression literals

This commit is contained in:
2025-10-21 22:13:13 +02:00
parent df48d271e2
commit 3321e95bc7
10 changed files with 76 additions and 68 deletions

View File

@@ -1,16 +1,16 @@
#[test]
fn identifiers() {
use crate::expressions::IdentifierParser as IdentParser;
assert!(IdentParser::new().parse("a").is_ok());
assert!(IdentParser::new().parse("_").is_ok());
assert!(IdentParser::new().parse("a_a_a_").is_ok());
assert!(IdentParser::new().parse("_0").is_ok());
assert!(IdentParser::new().parse("_a").is_ok());
assert!(IdentParser::new().parse("__").is_ok());
assert!(IdentParser::new().parse("0").is_err());
assert!(IdentParser::new().parse("0123456").is_err());
assert!(IdentParser::new().parse("0aaaa").is_err());
}
//
//
// #[test]
// fn identifiers() {
// use crate::expressions::IdentifierParser as IdentParser;
// assert!(IdentParser::new().parse("a").is_ok());
// assert!(IdentParser::new().parse("_").is_ok());
// assert!(IdentParser::new().parse("a_a_a_").is_ok());
// assert!(IdentParser::new().parse("_0").is_ok());
// assert!(IdentParser::new().parse("_a").is_ok());
// assert!(IdentParser::new().parse("__").is_ok());
//
// assert!(IdentParser::new().parse("0").is_err());
// assert!(IdentParser::new().parse("0123456").is_err());
// assert!(IdentParser::new().parse("0aaaa").is_err());
// }

View File

@@ -1,6 +1,5 @@
use crate::literals::AtomParser as Parser;
use std::any::type_name_of_val;
use std::convert::identity;
use crate::ast::literal::Literal;
use crate::expressions::AtomParser as Parser;
#[test]
fn int_literals() {
@@ -28,7 +27,7 @@ fn test_float_dots() {
#[test]
fn test_float_exps() {
let parser = crate::literals::FloatParser::new();
let parser = crate::expressions::FloatParser::new();
let valid_float_exps: Vec<&str> = vec![
"1e1", "-1e1", "1e-1", "-1e-1", "1.1e1", "1.1e-1", "-1.1e1", "-1.1e-1", ".1e1", "-.1e1",
@@ -36,14 +35,46 @@ fn test_float_exps() {
"-.1E1", "-.1E-1",
];
let invalid_float_exps: Vec<&str> = vec!["AAAAAAAAAAAAAAA", "1.e1", "1e1.1", "1.1e1.1", "-1e1.1", "1e-1.1"];
let invalid_float_exps: Vec<&str> = vec![
"AAAAAAAAAAAAAAA",
"1.e1",
"1e1.1",
"1.1e1.1",
"-1e1.1",
"1e-1.1",
];
assert!(
valid_float_exps
.into_iter()
.all(|s| parser.parse(s).is_ok())
);
assert!(invalid_float_exps
.into_iter()
.all(|s| parser.parse(s).is_err()));
assert!(
invalid_float_exps
.into_iter()
.all(|s| parser.parse(s).is_err())
);
}
#[test]
fn test_atom_parser() {
use crate::ast::literal::Literal;
let parser = crate::expressions::AtomParser::new();
let parsed_int_atom = parser.parse("123");
assert!(matches!(parsed_int_atom, Ok(Literal::Int(_))));
let parsed_int_atom = parser.parse("-1.12345");
assert!(matches!(parsed_int_atom, Ok(Literal::Float(_))));
}
#[test]
fn test_expr_parser() {
let parser = crate::expressions::ASTExpressionParser::new();
let parsed_int_expr = parser.parse("123");
assert!(matches!(parsed_int_expr, Ok(Literal::Int(_))));
let parsed_int_expr = parser.parse("-4.20E-69");
assert!(matches!(parsed_int_expr, Ok(Literal::Float(_))));
}