From c1f76ed64f35aa5c811a9e61f0c1340711274596 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 28 Mar 2021 20:51:29 +0530 Subject: add Debug & PartialEq impls for LispExpr; add eval tests --- src/lisp/parse.rs | 53 +++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) (limited to 'src/lisp/parse.rs') diff --git a/src/lisp/parse.rs b/src/lisp/parse.rs index 7cca434..6a8de9f 100644 --- a/src/lisp/parse.rs +++ b/src/lisp/parse.rs @@ -210,32 +210,33 @@ mod tests { } #[test] - // fn parse_lisp_expr() { - // assert_eq!( - // parse("1.5").unwrap(), - // LispExpr::Number(LispNumber::Float(1.5)) - // ); - - // assert_eq!( - // parse(r#""hello""#).unwrap(), - // LispExpr::StringLit(r#""hello""#.into()) - // ); - - // assert_eq!(parse("foo").unwrap(), LispExpr::Ident("foo".into())); - - // let items = (1..=5) - // .map(LispNumber::Integer) - // .map(LispExpr::Number) - // .collect::>(); - // assert_eq!(parse("(1 2 3 4 5)").unwrap(), LispExpr::List(items)); - - // let foo = LispExpr::Ident("foo".into()); - // let bar = LispExpr::Comma(Box::new(LispExpr::Ident("bar".into())), 1); - // assert_eq!( - // parse("`(foo ,bar)").unwrap(), - // LispExpr::Quasiquote(Box::new(LispExpr::List(vec![foo, bar])), 1) - // ) - // } + fn parse_lisp_expr() { + assert_eq!( + parse("1.5").unwrap(), + LispExpr::Number(LispNumber::Float(1.5)) + ); + + assert_eq!( + parse(r#""hello""#).unwrap(), + LispExpr::StringLit("hello".into()) + ); + + assert_eq!(parse("foo").unwrap(), LispExpr::Ident("foo".into())); + + let items = (1..=5) + .map(LispNumber::Integer) + .map(LispExpr::Number) + .collect::>(); + assert_eq!(parse("(1 2 3 4 5)").unwrap(), LispExpr::List(items)); + + let foo = LispExpr::Ident("foo".into()); + let bar = LispExpr::Comma(Box::new(LispExpr::Ident("bar".into())), 1); + assert_eq!( + parse("`(foo ,bar)").unwrap(), + LispExpr::Quasiquote(Box::new(LispExpr::List(vec![foo, bar])), 1) + ) + } + #[should_panic] #[test] fn unbalanced_comma() { -- cgit v1.2.3