From eb0b4d9b50e1dc78c72a9dc93f5decd10f62e053 Mon Sep 17 00:00:00 2001 From: Miquel Ruiz Date: Mon, 11 Jul 2016 22:48:03 +0100 Subject: [PATCH] Support for UID FETCH & tests --- src/client.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/client.rs b/src/client.rs index 2a1e8ce..b547104 100644 --- a/src/client.rs +++ b/src/client.rs @@ -132,6 +132,10 @@ impl Client { self.run_command_and_read_response(&format!("FETCH {} {}", sequence_set, query).to_string()) } + pub fn uid_fetch(&mut self, uid_set: &str, query: &str) -> Result> { + self.run_command_and_read_response(&format!("UID FETCH {} {}", uid_set, query).to_string()) + } + /// Noop always succeeds, and it does nothing. pub fn noop(&mut self) -> Result<()> { self.run_command_and_check_ok("NOOP") @@ -388,13 +392,27 @@ mod tests { #[test] fn fetch() { + generic_fetch(false) + } + + #[test] + fn uid_fetch() { + generic_fetch(true) + } + + fn generic_fetch(uid: bool) { let response = b"a1 OK FETCH completed\r\n".to_vec(); let sequence_set = "1"; let query = "BODY[]"; - let command = format!("a1 FETCH {} {}\r\n", sequence_set, query); + let uid_cmd = if uid { " UID " } else { " " }; + let command = format!("a1{}FETCH {} {}\r\n", uid_cmd, sequence_set, query); let mock_stream = MockStream::new(response); let mut client = Client::new(mock_stream); - client.fetch(sequence_set, query).unwrap(); + if uid { + client.uid_fetch(sequence_set, query).unwrap(); + } else { + client.fetch(sequence_set, query).unwrap(); + } assert!(client.stream.written_buf == command.as_bytes().to_vec(), "Invalid fetch command"); }