summaryrefslogtreecommitdiffstats
path: root/src/errors.rs
diff options
context:
space:
mode:
authorPaul Woolcock <paul@woolcock.us>2018-08-24 10:44:36 -0400
committerPaul Woolcock <paul@woolcock.us>2018-08-24 11:45:54 -0400
commit19ea7c74822d66cafdee2b48e33d6d18a6e5a303 (patch)
tree9c8dba098e8c4d8dd7788746510b52c5ed360bcc /src/errors.rs
parent5017104e63f72fced16b4547ffd6885a535997f6 (diff)
Add some tests for the Error::from impls
Diffstat (limited to 'src/errors.rs')
-rw-r--r--src/errors.rs69
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(..));
+ }
+}