diff --git a/src/parse/formulas.rs b/src/parse/formulas.rs index 30b5556..9367469 100644 --- a/src/parse/formulas.rs +++ b/src/parse/formulas.rs @@ -466,11 +466,17 @@ pub fn formula<'a>(i: &'a str, d: &Declarations) -> IResult<&'a str, crate::Form mod tests { use crate::parse::formulas::*; + use crate::parse::formulas as original; use crate::{Formula, Term}; fn formula(i: &str) -> Formula { - crate::parse::formula(i, &Declarations::new()).unwrap().1 + original::formula(i, &Declarations::new()).unwrap().1 + } + + fn formula_remainder(i: &str) -> &str + { + original::formula(i, &Declarations::new()).unwrap().0 } fn format_formula(i: &str) -> String @@ -488,42 +494,28 @@ mod tests #[test] fn parse_predicate() { - assert_eq!(predicate("s", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.name.clone())), - Ok(("", "s".to_string()))); - assert_eq!(predicate("s", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.arity)), - Ok(("", 0))); - assert_eq!(predicate("s ( )", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.name.clone())), - Ok(("", "s".to_string()))); - assert_eq!(predicate("s ( )", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.arity)), - Ok(("", 0))); - assert_eq!(predicate("s ( 1 , 2 , 3 )", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.name.clone())), - Ok(("", "s".to_string()))); - assert_eq!(predicate("s ( 1 , 2 , 3 )", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.arity)), - Ok(("", 3))); - assert_eq!(predicate("s ( 1 , 2 , 3 )", &Declarations::new()) - .map(|(i, mut x)| (i, x.arguments.remove(0))), - Ok(("", Box::new(Term::integer(1))))); - assert_eq!(predicate("s ( 1 , 2 , 3 )", &Declarations::new()) - .map(|(i, mut x)| (i, x.arguments.remove(2))), - Ok(("", Box::new(Term::integer(3))))); - assert_eq!(predicate("s ( ), rest", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.name.clone())), - Ok((", rest", "s".to_string()))); - assert_eq!(predicate("s ( ), rest", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.arity)), - Ok((", rest", 0))); - assert_eq!(predicate("s ( 1 , 2 , 3 ), rest", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.name.clone())), - Ok((", rest", "s".to_string()))); - assert_eq!(predicate("s ( 1 , 2 , 3 ), rest", &Declarations::new()) - .map(|(i, x)| (i, x.declaration.arity)), - Ok((", rest", 3))); + let predicate = |i| original::predicate(i, &Declarations::new()).unwrap().1; + let predicate_remainder = |i| original::predicate(i, &Declarations::new()).unwrap().0; + + assert_eq!(predicate("s").declaration.name, "s"); + assert_eq!(predicate("s").declaration.arity, 0); + assert_eq!(predicate_remainder("s"), ""); + assert_eq!(predicate("s ( )").declaration.name, "s"); + assert_eq!(predicate("s ( )").declaration.arity, 0); + assert_eq!(predicate_remainder("s ( )"), ""); + assert_eq!(predicate("s ( 1 , 2 , 3 )").declaration.name, "s"); + assert_eq!(predicate("s ( 1 , 2 , 3 )").declaration.arity, 3); + assert_eq!(*predicate("s ( 1 , 2 , 3 )").arguments.remove(0), Term::integer(1)); + assert_eq!(*predicate("s ( 1 , 2 , 3 )").arguments.remove(1), Term::integer(2)); + assert_eq!(*predicate("s ( 1 , 2 , 3 )").arguments.remove(2), Term::integer(3)); + assert_eq!(predicate_remainder("s ( 1 , 2 , 3 )"), ""); + assert_eq!(predicate_remainder("s ( 1 , 2 , 3 )"), ""); + assert_eq!(predicate("s ( ), rest").declaration.name, "s"); + assert_eq!(predicate("s ( ), rest").declaration.arity, 0); + assert_eq!(predicate_remainder("s ( ), rest"), ", rest"); + assert_eq!(predicate("s ( 1 , 2 , 3 ), rest").declaration.name, "s"); + assert_eq!(predicate("s ( 1 , 2 , 3 ), rest").declaration.arity, 3); + assert_eq!(predicate_remainder("s ( 1 , 2 , 3 ), rest"), ", rest"); } #[test] diff --git a/src/parse/terms.rs b/src/parse/terms.rs index 6ac885d..a9f3305 100644 --- a/src/parse/terms.rs +++ b/src/parse/terms.rs @@ -707,8 +707,8 @@ mod tests #[test] fn parse_function_primitive() { - let function_remainder = |i| original::function(i, &Declarations::new()).unwrap().0; let function = |i| original::function(i, &Declarations::new()).unwrap().1; + let function_remainder = |i| original::function(i, &Declarations::new()).unwrap().0; assert_eq!(function("s").declaration.name, "s"); assert_eq!(function("s").declaration.arity, 0); @@ -733,8 +733,8 @@ mod tests #[test] fn parse_variable_declaration() { - let variable_declaration_remainder = |i| variable_declaration(i).unwrap().0; - let variable_declaration = |i| variable_declaration(i).unwrap().1; + let variable_declaration = |i| original::variable_declaration(i).unwrap().1; + let variable_declaration_remainder = |i| original::variable_declaration(i).unwrap().0; assert_eq!(variable_declaration("X Rest").name, "X"); assert_eq!(variable_declaration_remainder("X Rest"), " Rest"); @@ -759,8 +759,8 @@ mod tests #[test] fn parse_variable_primitive() { - let variable_remainder = |i| original::variable(i, &Declarations::new()).unwrap().0; let variable = |i| original::variable(i, &Declarations::new()).unwrap().1; + let variable_remainder = |i| original::variable(i, &Declarations::new()).unwrap().0; assert_eq!(variable("X Rest").declaration.name, "X"); assert_eq!(variable_remainder("X Rest"), " Rest");