diff options
author | Paul Woolcock <paul@woolcock.us> | 2018-08-24 10:44:36 -0400 |
---|---|---|
committer | Paul Woolcock <paul@woolcock.us> | 2018-08-24 11:45:54 -0400 |
commit | 19ea7c74822d66cafdee2b48e33d6d18a6e5a303 (patch) | |
tree | 9c8dba098e8c4d8dd7788746510b52c5ed360bcc /src/errors.rs | |
parent | 5017104e63f72fced16b4547ffd6885a535997f6 (diff) |
Add some tests for the Error::from impls
Diffstat (limited to 'src/errors.rs')
-rw-r--r-- | src/errors.rs | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/errors.rs b/src/errors.rs index 893946a..75d8596 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -115,3 +115,72 @@ from! { #[cfg(feature = "toml")] TomlSerError, TomlSer, #[cfg(feature = "toml")] TomlDeError, TomlDe, } + +#[cfg(test)] +mod tests { + use super::*; + use std::io; + use reqwest; + use json; + + macro_rules! assert_is { + ($err:ident, $variant:pat) => { + assert!(match $err { + $variant => true, + _ => false, + }); + } + } + + #[test] + fn from_http_error() { + let err: HttpError = reqwest::get("not an actual URL").unwrap_err(); + let err: Error = Error::from(err); + assert_is!(err, Error::Http(..)); + } + + #[test] + fn from_io_error() { + let err: IoError = io::Error::new(io::ErrorKind::Other, "other error"); + let err: Error = Error::from(err); + assert_is!(err, Error::Io(..)); + } + + #[test] + fn from_serde_error() { + let err: SerdeError = json::from_str::<()>("not valid json").unwrap_err(); + let err: Error = Error::from(err); + assert_is!(err, Error::Serde(..)); + } + + #[test] + fn from_url_error() { + let err: UrlError = UrlError::EmptyHost; + let err: Error = Error::from(err); + assert_is!(err, Error::Url(..)); + } + + #[test] + fn from_api_error() { + let err: ApiError = ApiError { error: None, error_description: None }; + let err: Error = Error::from(err); + assert_is!(err, Error::Api(..)); + } + + #[cfg(feature = "toml")] + #[test] + fn from_toml_ser_error() { + let err: TomlSerError = TomlSerError::DateInvalid; + let err: Error = Error::from(err); + assert_is!(err, Error::TomlSer(..)); + } + + #[cfg(feature = "toml")] + #[test] + fn from_toml_de_error() { + use tomlcrate; + let err: TomlDeError = tomlcrate::from_str::<()>("not valid toml").unwrap_err(); + let err: Error = Error::from(err); + assert_is!(err, Error::TomlDe(..)); + } +} |