diff --git a/caret/src/lib.rs b/caret/src/lib.rs index 57318696c..ed2f203b4 100644 --- a/caret/src/lib.rs +++ b/caret/src/lib.rs @@ -219,7 +219,7 @@ macro_rules! caret_enum { /// An error produced from type derived from type. These errors can /// only occur when trying to convert to a type made with caret_enum! -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum Error { /// Tried to convert to an enumeration type from an integer that /// didn't represent a member of that enumeration. diff --git a/caret/tests/example.rs b/caret/tests/example.rs index 4dad87e55..de3b5db4b 100644 --- a/caret/tests/example.rs +++ b/caret/tests/example.rs @@ -1,4 +1,4 @@ -use caret::caret_enum; +use caret::{caret_enum, Error}; use std::convert::TryInto; caret_enum! { @@ -28,6 +28,12 @@ fn test_int_ops() { assert_eq!(Demo::from_int(2), None); let t: Result = 6.try_into(); assert!(t.is_err()); + let err = t.unwrap_err(); + assert_eq!(err, Error::InvalidInteger); + assert_eq!( + format!("{}", err), + "Integer was not member of this enumeration" + ); } #[test] @@ -47,4 +53,10 @@ fn test_str_ops() { assert_eq!(t, Demo::Dee); let t: Result = "Foo".parse(); assert!(t.is_err()); + let err = t.unwrap_err(); + assert_eq!(err, Error::InvalidString); + assert_eq!( + format!("{}", err), + "String was not member of this enumeration" + ); }