diff --git a/src/client.rs b/src/client.rs index 0585e8d..576947f 100644 --- a/src/client.rs +++ b/src/client.rs @@ -331,59 +331,7 @@ impl Client { #[cfg(test)] mod tests { use super::*; - use std::io::{Read, Result, Write, Error, ErrorKind}; - - struct MockStream { - read_buf: Vec, - read_pos: usize, - written_buf: Vec - } - - impl MockStream { - fn new(read_buf: Vec) -> MockStream { - MockStream{ - read_buf: read_buf, - read_pos: 0, - written_buf: Vec::new() - } - } - } - - impl Read for MockStream { - fn read(&mut self, buf: &mut[u8]) -> Result { - if self.read_pos >= self.read_buf.len() { - return Err(Error::new(ErrorKind::UnexpectedEof, "EOF")) - } - let write_len = min(buf.len(), self.read_buf.len() - self.read_pos); - let max_pos = self.read_pos + write_len; - for x in self.read_pos..max_pos { - buf[x - self.read_pos] = self.read_buf[x]; - } - self.read_pos += write_len; - Ok(write_len) - } - } - - impl Write for MockStream { - fn write(&mut self, buf: &[u8]) -> Result { - self.written_buf.extend_from_slice(buf); - Ok(buf.len()) - } - - fn flush(&mut self) -> Result<()> { - Ok(()) - } - } - - fn min(a: usize, b: usize) -> usize { - if a < b { - a - } else if b < a { - b - } else { - a - } - } + use super::super::mock_stream::MockStream; fn create_client_with_mock_stream(mock_stream: MockStream) -> Client { Client { diff --git a/src/lib.rs b/src/lib.rs index 372205b..a49f77a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,3 +7,6 @@ extern crate openssl; extern crate regex; pub mod client; + +#[cfg(test)] +mod mock_stream; diff --git a/src/mock_stream.rs b/src/mock_stream.rs new file mode 100644 index 0000000..da2af04 --- /dev/null +++ b/src/mock_stream.rs @@ -0,0 +1,53 @@ +use std::io::{Read, Result, Write, Error, ErrorKind}; + +pub struct MockStream { + read_buf: Vec, + read_pos: usize, + pub written_buf: Vec +} + +impl MockStream { + pub fn new(read_buf: Vec) -> MockStream { + MockStream{ + read_buf: read_buf, + read_pos: 0, + written_buf: Vec::new() + } + } +} + +impl Read for MockStream { + fn read(&mut self, buf: &mut[u8]) -> Result { + if self.read_pos >= self.read_buf.len() { + return Err(Error::new(ErrorKind::UnexpectedEof, "EOF")) + } + let write_len = min(buf.len(), self.read_buf.len() - self.read_pos); + let max_pos = self.read_pos + write_len; + for x in self.read_pos..max_pos { + buf[x - self.read_pos] = self.read_buf[x]; + } + self.read_pos += write_len; + Ok(write_len) + } +} + +impl Write for MockStream { + fn write(&mut self, buf: &[u8]) -> Result { + self.written_buf.extend_from_slice(buf); + Ok(buf.len()) + } + + fn flush(&mut self) -> Result<()> { + Ok(()) + } +} + +fn min(a: usize, b: usize) -> usize { + if a < b { + a + } else if b < a { + b + } else { + a + } +}