From ce50ab5101a628cf87aac41c831ad50401c37b6d Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sun, 9 Sep 2018 08:58:14 -0700 Subject: [PATCH] [types] Add some tests for pairs Working on defining a pattern for naming tests so it is easier to see what is testing what. --- types/src/pair.rs | 40 +++++++++++++++++++++++++++++++++++++--- types/src/sym.rs | 2 +- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/types/src/pair.rs b/types/src/pair.rs index cb1412c..3927e69 100644 --- a/types/src/pair.rs +++ b/types/src/pair.rs @@ -4,8 +4,7 @@ use std::any::Any; use std::fmt; -use super::*; -use object::Object; +use object::{Obj, Object}; #[derive(Debug, PartialEq)] pub struct Pair { @@ -72,11 +71,46 @@ impl PartialEq for Pair { #[cfg(test)] mod tests { use super::Pair; + use object::Obj; + use sym::Sym; #[test] - fn empty_pairs_are_equal() { + fn eq_empty_pairs() { let a = Pair::empty(); let b = Pair::empty(); assert_eq!(a, b); } + + #[test] + fn display_empty_pair() { + let a = Pair::empty(); + let disp = format!("{}", a); + assert_eq!(disp, "(())"); + } + + #[test] + fn display_single_element_pair() { + let a = Pair::with_car(Obj::new(Sym::new("abc".to_string()))); + let disp = format!("{}", a); + assert_eq!(disp, "(abc)"); + } + + #[test] + fn display_dotted_pair() { + let car = Obj::new(Sym::new("abc".to_string())); + let cdr = Obj::new(Sym::new("def".to_string())); + let p = Pair::new(car, cdr); + let disp = format!("{}", p); + assert_eq!(disp, "(abc . def)"); + } + + #[test] + fn display_long_dotted_pair() { + let a = Obj::new(Sym::new("abc".to_string())); + let d = Obj::new(Sym::new("def".to_string())); + let g = Obj::new(Sym::new("ghi".to_string())); + let p = Pair::new(a, Obj::new(Pair::new(d, g))); + let disp = format!("{}", p); + assert_eq!(disp, "(abc def . ghi)"); + } } diff --git a/types/src/sym.rs b/types/src/sym.rs index c318e08..1310ccd 100644 --- a/types/src/sym.rs +++ b/types/src/sym.rs @@ -54,7 +54,7 @@ mod tests { use super::Sym; #[test] - fn syms_with_the_same_name_are_equal() { + fn eq_syms_with_same_name() { let a = Sym::with_str("abc"); let b = Sym::with_str("abc"); assert_eq!(a, b);