From a465a649445cf6fc56dd7a71c8b632452f7c7291 Mon Sep 17 00:00:00 2001 From: trivernis Date: Wed, 2 Sep 2020 11:45:39 +0200 Subject: [PATCH] Fix tests to run on stable Signed-off-by: trivernis --- Cargo.toml | 4 +- src/lib.rs | 10 - src/parsing/tree_parser.rs | 2 +- src/tokens/mappings.rs | 372 ++++++++++++++++++------------------- 4 files changed, 189 insertions(+), 199 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 09a3a33..ccdc31c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "asciimath-rs" description = "AsciiMath parser" repository = "https://github.com/trivernis/asciimath-rs" -version = "0.5.6" +version = "0.5.7" authors = ["trivernis "] edition = "2018" readme = "README.md" @@ -13,7 +13,7 @@ categories = ["mathematics", "parser-implementations"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -charred = "0.3.1" +charred = "0.3.3" maplit = "1.0.2" lazy_static = "1.4.0" htmlescape = "0.3.1" \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index a59be21..52ff275 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,3 @@ -#![feature(test)] -extern crate test; - #[macro_use] extern crate maplit; @@ -51,7 +48,6 @@ mod tests { use crate::tokens::{Function, Grouping, Misc, Operation, Relation, Text, Token}; use crate::utils::Boxed; use std::fs; - use test::Bencher; #[test] fn it_tokenizes_expressions1() { @@ -399,10 +395,4 @@ mod tests { ) .unwrap(); } - - #[bench] - fn bench_tokenizer(b: &mut Bencher) { - let expression = "sqrt 1 in NN implies 2^4 + sum_(k = 1)^3 - ((1),(2)) [[2, 3 + 3],[4, 5]] (((((((nesting)))))))"; - b.iter(|| parse(expression.to_string())); - } } diff --git a/src/parsing/tree_parser.rs b/src/parsing/tree_parser.rs index 58a1669..9ca0b25 100644 --- a/src/parsing/tree_parser.rs +++ b/src/parsing/tree_parser.rs @@ -460,7 +460,7 @@ impl TreeParser { self.step(); Some(Frac { top: previous.to_non_enclosed().boxed(), - bottom: self.parse_element().unwrap().to_non_enclosed().boxed(), + bottom: self.parse_element()?.to_non_enclosed().boxed(), }) } else { None diff --git a/src/tokens/mappings.rs b/src/tokens/mappings.rs index 1ac381f..16d7ad5 100644 --- a/src/tokens/mappings.rs +++ b/src/tokens/mappings.rs @@ -21,33 +21,33 @@ pub fn get_operation_mappings() -> Vec> { G_STAR => Operation::Star, }, hashmap! { - G_AST => Operation::Ast, - G_BOWTIE => Operation::Bowtie, - G_DIV => Operation::Div, - G_BIDWEDGE => Operation::BidWedge, - G_BIGVEE => Operation::BigVee, - G_BIGCAP => Operation::BigCap, - G_BIGCUP => Operation::BigCup, + G_AST => Operation::Ast, + G_BOWTIE => Operation::Bowtie, + G_DIV => Operation::Div, + G_BIDWEDGE => Operation::BidWedge, + G_BIGVEE => Operation::BigVee, + G_BIGCAP => Operation::BigCap, + G_BIGCUP => Operation::BigCup, }, hashmap! { - G_PLUS => Operation::Plus, - G_MINUS => Operation::Minus, - G_CDOT => Operation::CDot, - G_SLASH => Operation::Slash, + G_PLUS => Operation::Plus, + G_MINUS => Operation::Minus, + G_CDOT => Operation::CDot, + G_SLASH => Operation::Slash, G_BACKSLASH => Operation::Backslash, - G_TIMES => Operation::Times, - G_LTIMES => Operation::LTimes, - G_RTIMES => Operation::RTimes, - G_CIRC => Operation::Circ, - G_OPLUS => Operation::OPlus, - G_OTIMES => Operation::OTimes, - G_ODOT => Operation::ODot, - G_SUM => Operation::Sum, - G_PROD => Operation::Prod, - G_WEDGE => Operation::Wedge, - G_VEE => Operation::Vee, - G_CAP => Operation::Cap, - G_CUP => Operation::Cup, + G_TIMES => Operation::Times, + G_LTIMES => Operation::LTimes, + G_RTIMES => Operation::RTimes, + G_CIRC => Operation::Circ, + G_OPLUS => Operation::OPlus, + G_OTIMES => Operation::OTimes, + G_ODOT => Operation::ODot, + G_SUM => Operation::Sum, + G_PROD => Operation::Prod, + G_WEDGE => Operation::Wedge, + G_VEE => Operation::Vee, + G_CAP => Operation::Cap, + G_CUP => Operation::Cup, }, ] } @@ -55,47 +55,47 @@ pub fn get_operation_mappings() -> Vec> { pub fn get_misc_mappings() -> Vec> { vec![ hashmap! { - G_TRIANGLE => Misc::Triangle, + G_TRIANGLE => Misc::Triangle, }, hashmap! { - G_ANGLE => Misc::Angle, + G_ANGLE => Misc::Angle, }, hashmap! { - G_A_FRAC => Misc::AsciiFrac, - G_T_FRAC => Misc::LatexFrac, - G_POW => Misc::Pow, - G_SUB => Misc::Sub, - G_SQRT => Misc::Sqrt, - G_ROOT => Misc::Root, - G_INT => Misc::Int, - G_OINT => Misc::OInt, - G_DEL => Misc::Del, - G_GRAD => Misc::Grad, - G_PM => Misc::PlusMinus, - G_EMPTYSET => Misc::EmptySet, - G_INFTY => Misc::Infty, - G_ALEPH => Misc::Aleph, + G_A_FRAC => Misc::AsciiFrac, + G_T_FRAC => Misc::LatexFrac, + G_POW => Misc::Pow, + G_SUB => Misc::Sub, + G_SQRT => Misc::Sqrt, + G_ROOT => Misc::Root, + G_INT => Misc::Int, + G_OINT => Misc::OInt, + G_DEL => Misc::Del, + G_GRAD => Misc::Grad, + G_PM => Misc::PlusMinus, + G_EMPTYSET => Misc::EmptySet, + G_INFTY => Misc::Infty, + G_ALEPH => Misc::Aleph, G_THEREFORE => Misc::Therefore, - G_BECAUSE => Misc::Because, - G_ELDOTS => Misc::PLDots, - G_ECDOTS => Misc::PCDots, - G_VDOTS => Misc::VDots, - G_DDOTS => Misc::DDots, - G_EPIPES => Misc::EPipes, - G_QUAD => Misc::EQuad, - G_FROWN => Misc::Frown, - G_DIAMOND => Misc::Diamond, - G_SQUARE => Misc::Square, - G_LFLOOR => Misc::LFloor, - G_RFLOOR => Misc::RFloor, - G_LCEILING => Misc::LCeiling, - G_RCEILING => Misc::RCeiling, - G_COMPLEX => Misc::Complex, - G_NATURAL => Misc::Natural, - G_RATIONAL => Misc::Rational, - G_REAL => Misc::Real, - G_INTEGER => Misc::Integer, - G_T_TEX => Misc::LatexText, + G_BECAUSE => Misc::Because, + G_ELDOTS => Misc::PLDots, + G_ECDOTS => Misc::PCDots, + G_VDOTS => Misc::VDots, + G_DDOTS => Misc::DDots, + G_EPIPES => Misc::EPipes, + G_QUAD => Misc::EQuad, + G_FROWN => Misc::Frown, + G_DIAMOND => Misc::Diamond, + G_SQUARE => Misc::Square, + G_LFLOOR => Misc::LFloor, + G_RFLOOR => Misc::RFloor, + G_LCEILING => Misc::LCeiling, + G_RCEILING => Misc::RCeiling, + G_COMPLEX => Misc::Complex, + G_NATURAL => Misc::Natural, + G_RATIONAL => Misc::Rational, + G_REAL => Misc::Real, + G_INTEGER => Misc::Integer, + G_T_TEX => Misc::LatexText, }, ] } @@ -103,30 +103,30 @@ pub fn get_misc_mappings() -> Vec> { pub fn get_relation_mapping() -> Vec> { vec![ hashmap! { - G_SUBSETEQ => Relation::SubSetEq, - G_SUPSETEQ => Relation::SupSetEq, - G_LE => Relation::Le, - G_GE => Relation::Ge, - G_SUCCEQ => Relation::SuccEq, - G_PRECEQ => Relation::PrecEq, + G_SUBSETEQ => Relation::SubSetEq, + G_SUPSETEQ => Relation::SupSetEq, + G_LE => Relation::Le, + G_GE => Relation::Ge, + G_SUCCEQ => Relation::SuccEq, + G_PRECEQ => Relation::PrecEq, }, hashmap! { - G_SUCC => Relation::Succ, + G_SUCC => Relation::Succ, }, hashmap! { - G_EQ => Relation::Eq, - G_NE => Relation::Ne, - G_LT => Relation::Lt, - G_GT => Relation::Gt, - G_PREC => Relation::Prec, - G_IN => Relation::In, - G_NOTIN => Relation::NotIn, - G_SUBSET => Relation::SubSet, - G_SUPSET => Relation::SupSet, - G_EQUIV => Relation::Equiv, - G_CONG => Relation::Cong, - G_APPROX => Relation::Approx, - G_PROP => Relation::PropTo, + G_EQ => Relation::Eq, + G_NE => Relation::Ne, + G_LT => Relation::Lt, + G_GT => Relation::Gt, + G_PREC => Relation::Prec, + G_IN => Relation::In, + G_NOTIN => Relation::NotIn, + G_SUBSET => Relation::SubSet, + G_SUPSET => Relation::SupSet, + G_EQUIV => Relation::Equiv, + G_CONG => Relation::Cong, + G_APPROX => Relation::Approx, + G_PROP => Relation::PropTo, }, ] } @@ -134,20 +134,20 @@ pub fn get_relation_mapping() -> Vec> { pub fn get_logical_mappings() -> Vec> { vec![ hashmap! { - G_IFF => Logical::Iff, + G_IFF => Logical::Iff, }, hashmap! { - G_AND => Logical::And, - G_OR => Logical::Or, - G_NOT => Logical::Not, - G_IMPLIES => Logical::Implies, - G_IF => Logical::If, - G_FORALL => Logical::ForAll, - G_EXISTS => Logical::Exists, - G_BOT => Logical::Bot, - G_TOP => Logical::Top, - G_VDASH => Logical::VDash, - G_MODELS => Logical::Models, + G_AND => Logical::And, + G_OR => Logical::Or, + G_NOT => Logical::Not, + G_IMPLIES => Logical::Implies, + G_IF => Logical::If, + G_FORALL => Logical::ForAll, + G_EXISTS => Logical::Exists, + G_BOT => Logical::Bot, + G_TOP => Logical::Top, + G_VDASH => Logical::VDash, + G_MODELS => Logical::Models, }, ] } @@ -155,23 +155,23 @@ pub fn get_logical_mappings() -> Vec> { pub fn get_grouping_mappings() -> Vec> { vec![ hashmap! { - G_LANGLE => Grouping::LAngle, - G_RANGLE => Grouping::RAngle, - G_RXPAR => Grouping::RXPar, - G_LXPAR => Grouping::LXPar, - G_MATRIX_SEP => Grouping::MSep, + G_LANGLE => Grouping::LAngle, + G_RANGLE => Grouping::RAngle, + G_RXPAR => Grouping::RXPar, + G_LXPAR => Grouping::LXPar, + G_MATRIX_SEP => Grouping::MSep, }, hashmap! { - G_RPAREN => Grouping::RParen, - G_LPAREN => Grouping::LParen, - G_RBRACKET => Grouping::RBracket, - G_LBRACKET => Grouping::LBracket, - G_RBRACE => Grouping::RBrace, - G_LBRACE => Grouping::LBrace, - G_ABS => Grouping::Abs, - G_FLOOR => Grouping::Floor, - G_CEIL => Grouping::Ceil, - G_NORM => Grouping::Norm, + G_RPAREN => Grouping::RParen, + G_LPAREN => Grouping::LParen, + G_RBRACKET => Grouping::RBracket, + G_LBRACKET => Grouping::LBracket, + G_RBRACE => Grouping::RBrace, + G_LBRACE => Grouping::LBrace, + G_ABS => Grouping::Abs, + G_FLOOR => Grouping::Floor, + G_CEIL => Grouping::Ceil, + G_NORM => Grouping::Norm, }, ] } @@ -179,20 +179,20 @@ pub fn get_grouping_mappings() -> Vec> { pub fn get_arrow_mapping() -> Vec> { vec![ hashmap! { - G_TWOHEADRIGHTARROW => Arrow::TwoHeadRightArrow, + G_TWOHEADRIGHTARROW => Arrow::TwoHeadRightArrow, G_TWOHEADRIGHTARROWTAIL => Arrow::TwoHeadRightArrowTail }, hashmap! { - G_UPARROW => Arrow::UpArrow, - G_DOWNARROW => Arrow::DownArrow, - G_RIGHTARROW => Arrow::RightArrow, - G_TO => Arrow::To, - G_RIGHTARROWTAIL => Arrow::RightArrowTail, - G_MAPSTO => Arrow::MapsTo, - G_LEFTARROW => Arrow::LeftArrow, - G_LEFTRIGHTARROW => Arrow::LeftRightArrow, - G_BIGRIGHTARROW => Arrow::BigRightArrow, - G_BIGLEFTARROW => Arrow::BigLeftArrow, + G_UPARROW => Arrow::UpArrow, + G_DOWNARROW => Arrow::DownArrow, + G_RIGHTARROW => Arrow::RightArrow, + G_TO => Arrow::To, + G_RIGHTARROWTAIL => Arrow::RightArrowTail, + G_MAPSTO => Arrow::MapsTo, + G_LEFTARROW => Arrow::LeftArrow, + G_LEFTRIGHTARROW => Arrow::LeftRightArrow, + G_BIGRIGHTARROW => Arrow::BigRightArrow, + G_BIGLEFTARROW => Arrow::BigLeftArrow, G_BIGLEFTRIGHTARROW => Arrow::BigLeftRightArrow, }, ] @@ -200,58 +200,58 @@ pub fn get_arrow_mapping() -> Vec> { pub fn get_accent_mappings() -> Vec> { vec![hashmap! { - G_HAT => Accent::Hat, - G_UNDERLINE => Accent::Underline, - G_OVERLINE => Accent::Overline, - G_VEC => Accent::Vec, - G_DOT => Accent::Dot, - G_DDOT => Accent::DDot, - G_OVERSET => Accent::OverSet, - G_UNDERSET => Accent::UnderSet, - G_UNDERBRACE => Accent::UnderBrace, - G_OVERBRACE => Accent::OverBrace, - G_CANCEL => Accent::Cancel, + G_HAT => Accent::Hat, + G_UNDERLINE => Accent::Underline, + G_OVERLINE => Accent::Overline, + G_VEC => Accent::Vec, + G_DOT => Accent::Dot, + G_DDOT => Accent::DDot, + G_OVERSET => Accent::OverSet, + G_UNDERSET => Accent::UnderSet, + G_UNDERBRACE => Accent::UnderBrace, + G_OVERBRACE => Accent::OverBrace, + G_CANCEL => Accent::Cancel, }] } pub fn get_greek_mappings() -> Vec> { vec![hashmap! { - G_ALPHA => Greek::Alpha, - G_BETA => Greek::Beta, - G_GAMMA => Greek::Gamma, - G_BIGGAMMA => Greek::BigGamma, - G_DELTA => Greek::Delta, - G_BIGDELTA => Greek::BigDelta, - G_EPSILON => Greek::Epsilon, - G_VAREPSILON => Greek::VarEpsilon, - G_ZETA => Greek::Zeta, - G_ETA => Greek::Eta, - G_THETA => Greek::Theta, - G_BIGTHETA => Greek::BigTheta, - G_VARTHETA => Greek::VarTheta, - G_IOTA => Greek::Iota, - G_KAPPA => Greek::Kappa, - G_LAMBDA => Greek::Lambda, - G_BIGLAMBDA => Greek::BigLambda, - G_MU => Greek::Mu, - G_NU => Greek::Nu, - G_XI => Greek::Xi, - G_BIGXI => Greek::BigXi, - G_PI => Greek::Pi, - G_BIGPI => Greek::BigPi, - G_RHO => Greek::Rho, - G_SIGMA => Greek::Sigma, - G_BIGSIGMA => Greek::BigSigma, - G_TAU => Greek::Tau, - G_UPSILON => Greek::Upsilon, - G_PHI => Greek::Phi, - G_BIGPHI => Greek::BigPhi, - G_VARPHI => Greek::VarPhi, - G_CHI => Greek::Chi, - G_PSI => Greek::Psi, - G_BIGPSI => Greek::BigPsi, - G_OMEGA => Greek::Omega, - G_BIGOMEGA => Greek::BigOmega, + G_ALPHA => Greek::Alpha, + G_BETA => Greek::Beta, + G_GAMMA => Greek::Gamma, + G_BIGGAMMA => Greek::BigGamma, + G_DELTA => Greek::Delta, + G_BIGDELTA => Greek::BigDelta, + G_EPSILON => Greek::Epsilon, + G_VAREPSILON => Greek::VarEpsilon, + G_ZETA => Greek::Zeta, + G_ETA => Greek::Eta, + G_THETA => Greek::Theta, + G_BIGTHETA => Greek::BigTheta, + G_VARTHETA => Greek::VarTheta, + G_IOTA => Greek::Iota, + G_KAPPA => Greek::Kappa, + G_LAMBDA => Greek::Lambda, + G_BIGLAMBDA => Greek::BigLambda, + G_MU => Greek::Mu, + G_NU => Greek::Nu, + G_XI => Greek::Xi, + G_BIGXI => Greek::BigXi, + G_PI => Greek::Pi, + G_BIGPI => Greek::BigPi, + G_RHO => Greek::Rho, + G_SIGMA => Greek::Sigma, + G_BIGSIGMA => Greek::BigSigma, + G_TAU => Greek::Tau, + G_UPSILON => Greek::Upsilon, + G_PHI => Greek::Phi, + G_BIGPHI => Greek::BigPhi, + G_VARPHI => Greek::VarPhi, + G_CHI => Greek::Chi, + G_PSI => Greek::Psi, + G_BIGPSI => Greek::BigPsi, + G_OMEGA => Greek::Omega, + G_BIGOMEGA => Greek::BigOmega, }] } @@ -281,27 +281,27 @@ pub fn get_function_mappings() -> Vec> { F_COTH => Function::Coth, }, hashmap! { - F_SIN => Function::Sin, - F_COS => Function::Cos, - F_TAN => Function::Tan, - F_SEC => Function::Sec, - F_CSC => Function::Csc, - F_COT => Function::Cot, - F_ARCSIN => Function::ArcSin, - F_ARCCOS => Function::ArcCos, - F_ARCTAN => Function::ArcTan, - F_EXP => Function::Exp, - F_LOG => Function::Log, - F_LN => Function::Ln, - F_DET => Function::Det, - F_DIM => Function::Dim, - F_MOD => Function::Mod, - F_GCD => Function::Gcd, - F_LCM => Function::Lcm, - F_LUB => Function::Lub, - F_GLB => Function::Glb, - F_MIN => Function::Min, - F_MAX => Function::Max, + F_SIN => Function::Sin, + F_COS => Function::Cos, + F_TAN => Function::Tan, + F_SEC => Function::Sec, + F_CSC => Function::Csc, + F_COT => Function::Cot, + F_ARCSIN => Function::ArcSin, + F_ARCCOS => Function::ArcCos, + F_ARCTAN => Function::ArcTan, + F_EXP => Function::Exp, + F_LOG => Function::Log, + F_LN => Function::Ln, + F_DET => Function::Det, + F_DIM => Function::Dim, + F_MOD => Function::Mod, + F_GCD => Function::Gcd, + F_LCM => Function::Lcm, + F_LUB => Function::Lub, + F_GLB => Function::Glb, + F_MIN => Function::Min, + F_MAX => Function::Max, }, hashmap! { F_F => Function::F,