From 2120417f76fddf89e0f717f465ec31928d5de756 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 8 Sep 2018 16:09:44 -0700 Subject: [PATCH] [parser] Add test for longer dotted pair: (ab cd . ef) --- parser/tests/lists.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/parser/tests/lists.rs b/parser/tests/lists.rs index e030d3e..e990c5a 100644 --- a/parser/tests/lists.rs +++ b/parser/tests/lists.rs @@ -9,7 +9,6 @@ extern crate sibilparser; extern crate sibiltypes; use sibillexer::{Lex, Token}; -use sibillexer::Result as LexerResult; use sibilparser::Parser; use sibiltypes::{Obj, Pair, Sym}; @@ -45,3 +44,18 @@ fn single_dotted_pair() { assert_eq!(parser.next(), Some(Ok(ex_list))); assert_eq!(parser.next(), None); } + +#[test] +fn three_element_dotted_pair() { + let tokens = vec![Ok(Lex::new(Token::LeftParen, "(", 0, 0)), + Ok(Lex::new(Token::Id, "ab", 0, 0)), + Ok(Lex::new(Token::Id, "cd", 0, 0)), + Ok(Lex::new(Token::Dot, ".", 0, 0)), + Ok(Lex::new(Token::Id, "ef", 0, 0)), + Ok(Lex::new(Token::RightParen, ")", 0, 0))].into_iter(); + let mut parser = Parser::new(tokens); + let ex_list = Obj::new(Pair::new(Obj::new(Sym::with_str("ab")), Obj::new( + Pair::new(Obj::new(Sym::with_str("cd")), Obj::new(Sym::with_str("ef")))))); + assert_eq!(parser.next(), Some(Ok(ex_list))); + assert_eq!(parser.next(), None); +}