From c3a2247fdd2563345ba4f36b627d524f51211218 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 22 Apr 2017 12:29:43 -0700 Subject: [PATCH] Clean up tests for bool, char, and the lib --- types/src/bool.rs | 26 +++++++++++------------- types/src/char.rs | 50 ++++++++++++++++------------------------------- types/src/lib.rs | 8 +++----- 3 files changed, 31 insertions(+), 53 deletions(-) diff --git a/types/src/bool.rs b/types/src/bool.rs index 4dc9702..6655df4 100644 --- a/types/src/bool.rs +++ b/types/src/bool.rs @@ -16,23 +16,19 @@ impl IsBool for Object { #[cfg(test)] mod tests { - use super::Bool; - use value::*; - - #[test] - fn equal_bools_are_equal() { - assert_eq!(Bool(true), Bool(true)); - assert_eq!(Bool(false), Bool(false)); - assert_ne!(Bool(true), Bool(false)); - - assert_eq!(Bool(true).as_value(), Bool(true).as_value()); - assert_ne!(Bool(true).as_value(), Bool(false).as_value()); - } + use object::Object; + use predicates::{IsBool, IsChar}; #[test] fn bools_are_bools() { - assert_eq!(Bool(false).is_bool(), true); - assert_eq!(Bool(false).is_char(), false); - assert_eq!(Bool(false).is_number(), false); + assert_eq!(Object::Bool(false).is_bool(), true); + assert_eq!(Object::Bool(false).is_char(), false); + } + + #[test] + fn equal_bools_are_equal() { + assert_eq!(Object::Bool(true), Object::Bool(true)); + assert_eq!(Object::Bool(false), Object::Bool(false)); + assert_ne!(Object::Bool(true), Object::Bool(false)); } } diff --git a/types/src/char.rs b/types/src/char.rs index 59750c4..647d798 100644 --- a/types/src/char.rs +++ b/types/src/char.rs @@ -2,47 +2,31 @@ * Eryn Wells */ -use std::any::Any; -use super::value::*; +use object::Object; +use predicates::IsChar; -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub struct Char(pub char); - -impl Value for Char { - fn as_value(&self) -> &Value { self } -} - -impl IsChar for Char { - fn is_char(&self) -> bool { true } -} - -impl IsBool for Char { } -impl IsNumber for Char { } - -impl ValueEq for Char { - fn eq(&self, other: &Value) -> bool { - other.as_any().downcast_ref::().map_or(false, |x| x == self) +impl IsChar for Object { + fn is_char(&self) -> bool { + match *self { + Object::Char(_) => true, + _ => false, + } } - - fn as_any(&self) -> &Any { self } } #[cfg(test)] mod tests { - use super::Char; - use value::*; - - #[test] - fn equal_chars_are_equal() { - assert_eq!(Char('a'), Char('a')); - assert_eq!(Char('a').as_value(), Char('a').as_value()); - assert_ne!(Char('a').as_value(), Char('b').as_value()); - } + use object::Object; + use predicates::{IsBool, IsChar}; #[test] fn chars_are_chars() { - assert_eq!(Char('a').is_char(), true); - assert_eq!(Char('a').is_bool(), false); - assert_eq!(Char('a').is_number(), false); + assert_eq!(Object::Char('a').is_char(), true); + assert_eq!(Object::Char('a').is_bool(), false); + } + + #[test] + fn equal_chars_are_equal() { + assert_eq!(Object::Char('a'), Object::Char('a')); } } diff --git a/types/src/lib.rs b/types/src/lib.rs index 18a543a..3ab93e5 100644 --- a/types/src/lib.rs +++ b/types/src/lib.rs @@ -1,6 +1,6 @@ //pub mod number; mod bool; -//mod char; +mod char; mod number; mod object; mod predicates; @@ -10,12 +10,10 @@ pub use predicates::*; #[cfg(test)] mod tests { - use bool::Bool; - use char::Char; - use value::*; + use super::Object; #[test] fn booleans_and_chars_are_not_equal() { - assert_ne!(Bool(true).as_value(), Char('a').as_value()); + assert_ne!(Object::Bool(true), Object::Char('a')); } }