[types] Add some tests for pairs

Working on defining a pattern for naming tests so it is easier to see what is testing what.
This commit is contained in:
Eryn Wells 2018-09-09 08:58:14 -07:00
parent 107bb394b7
commit ce50ab5101
2 changed files with 38 additions and 4 deletions

View file

@ -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<Obj> 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)");
}
}

View file

@ -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);