Merge pull request #538 from hyperium/error-cov
test(error): increasing test coverage of error module
This commit is contained in:
50
src/error.rs
50
src/error.rs
@@ -53,11 +53,11 @@ impl StdError for Error {
|
||||
fn description(&self) -> &str {
|
||||
match *self {
|
||||
Method => "Invalid Method specified",
|
||||
Uri(_) => "Invalid Request URI specified",
|
||||
Version => "Invalid HTTP version specified",
|
||||
Header => "Invalid Header provided",
|
||||
TooLarge => "Message head is too large",
|
||||
Status => "Invalid Status provided",
|
||||
Uri(ref e) => e.description(),
|
||||
Io(ref e) => e.description(),
|
||||
Ssl(ref e) => e.description(),
|
||||
}
|
||||
@@ -107,3 +107,51 @@ impl From<httparse::Error> for Error {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::error::Error as StdError;
|
||||
use std::io;
|
||||
use httparse;
|
||||
use openssl::ssl::error::SslError;
|
||||
use url;
|
||||
use super::Error;
|
||||
use super::Error::*;
|
||||
|
||||
#[test]
|
||||
fn test_cause() {
|
||||
let orig = io::Error::new(io::ErrorKind::Other, "other");
|
||||
let desc = orig.description().to_owned();
|
||||
let e = Io(orig);
|
||||
assert_eq!(e.cause().unwrap().description(), desc);
|
||||
}
|
||||
|
||||
macro_rules! from {
|
||||
($from:expr => $error:pat) => {
|
||||
match Error::from($from) {
|
||||
$error => (),
|
||||
_ => panic!("{:?}", $from)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_from() {
|
||||
|
||||
from!(io::Error::new(io::ErrorKind::Other, "other") => Io(..));
|
||||
from!(url::ParseError::EmptyHost => Uri(..));
|
||||
|
||||
from!(SslError::StreamError(io::Error::new(io::ErrorKind::Other, "ssl")) => Io(..));
|
||||
from!(SslError::SslSessionClosed => Ssl(..));
|
||||
|
||||
|
||||
from!(httparse::Error::HeaderName => Header);
|
||||
from!(httparse::Error::HeaderName => Header);
|
||||
from!(httparse::Error::HeaderValue => Header);
|
||||
from!(httparse::Error::NewLine => Header);
|
||||
from!(httparse::Error::Status => Status);
|
||||
from!(httparse::Error::Token => Header);
|
||||
from!(httparse::Error::TooManyHeaders => TooLarge);
|
||||
from!(httparse::Error::Version => Version);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user