Fix tests and examples.
This commit is contained in:
parent
3f2331423c
commit
826e6d413b
5 changed files with 66 additions and 38 deletions
|
|
@ -42,7 +42,7 @@ fn main() {
|
|||
|
||||
match imap_session.fetch("2", "body[text]") {
|
||||
Ok(msgs) => {
|
||||
for msg in &msgs {
|
||||
for msg in msgs.iter() {
|
||||
print!("{:?}", msg);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
72
src/parse.rs
72
src/parse.rs
|
|
@ -411,22 +411,23 @@ mod tests {
|
|||
fn parse_names_test() {
|
||||
let lines = b"* LIST (\\HasNoChildren) \".\" \"INBOX\"\r\n";
|
||||
let (mut send, recv) = mpsc::channel();
|
||||
let names = parse_names(lines.to_vec(), &mut send).unwrap();
|
||||
let names = Names::parse(lines.to_vec(), &mut send).unwrap();
|
||||
assert!(recv.try_recv().is_err());
|
||||
assert_eq!(names.len(), 1);
|
||||
let first = names.iter().next().unwrap();
|
||||
assert_eq!(
|
||||
names[0].attributes(),
|
||||
first.attributes(),
|
||||
&[NameAttribute::from("\\HasNoChildren")]
|
||||
);
|
||||
assert_eq!(names[0].delimiter(), Some("."));
|
||||
assert_eq!(names[0].name(), "INBOX");
|
||||
assert_eq!(first.delimiter(), Some("."));
|
||||
assert_eq!(first.name(), "INBOX");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_fetches_empty() {
|
||||
let lines = b"";
|
||||
let (mut send, recv) = mpsc::channel();
|
||||
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
|
||||
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
|
||||
assert!(recv.try_recv().is_err());
|
||||
assert!(fetches.is_empty());
|
||||
}
|
||||
|
|
@ -437,19 +438,22 @@ mod tests {
|
|||
* 24 FETCH (FLAGS (\\Seen) UID 4827943)\r\n\
|
||||
* 25 FETCH (FLAGS (\\Seen))\r\n";
|
||||
let (mut send, recv) = mpsc::channel();
|
||||
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
|
||||
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
|
||||
assert!(recv.try_recv().is_err());
|
||||
assert_eq!(fetches.len(), 2);
|
||||
assert_eq!(fetches[0].message, 24);
|
||||
assert_eq!(fetches[0].flags(), &[Flag::Seen]);
|
||||
assert_eq!(fetches[0].uid, Some(4827943));
|
||||
assert_eq!(fetches[0].body(), None);
|
||||
assert_eq!(fetches[0].header(), None);
|
||||
assert_eq!(fetches[1].message, 25);
|
||||
assert_eq!(fetches[1].flags(), &[Flag::Seen]);
|
||||
assert_eq!(fetches[1].uid, None);
|
||||
assert_eq!(fetches[1].body(), None);
|
||||
assert_eq!(fetches[1].header(), None);
|
||||
let mut iter = fetches.iter();
|
||||
let first = iter.next().unwrap();
|
||||
assert_eq!(first.message, 24);
|
||||
assert_eq!(first.flags(), &[Flag::Seen]);
|
||||
assert_eq!(first.uid, Some(4827943));
|
||||
assert_eq!(first.body(), None);
|
||||
assert_eq!(first.header(), None);
|
||||
let second = iter.next().unwrap();
|
||||
assert_eq!(second.message, 25);
|
||||
assert_eq!(second.flags(), &[Flag::Seen]);
|
||||
assert_eq!(second.uid, None);
|
||||
assert_eq!(second.body(), None);
|
||||
assert_eq!(second.header(), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -459,11 +463,12 @@ mod tests {
|
|||
* 37 FETCH (UID 74)\r\n\
|
||||
* 1 RECENT\r\n";
|
||||
let (mut send, recv) = mpsc::channel();
|
||||
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
|
||||
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
|
||||
assert_eq!(recv.try_recv(), Ok(UnsolicitedResponse::Recent(1)));
|
||||
assert_eq!(fetches.len(), 1);
|
||||
assert_eq!(fetches[0].message, 37);
|
||||
assert_eq!(fetches[0].uid, Some(74));
|
||||
let first = fetches.iter().next().unwrap();
|
||||
assert_eq!(first.message, 37);
|
||||
assert_eq!(first.uid, Some(74));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -475,7 +480,7 @@ mod tests {
|
|||
* OK Searched 91% of the mailbox, ETA 0:01\r\n\
|
||||
* 37 FETCH (UID 74)\r\n";
|
||||
let (mut send, recv) = mpsc::channel();
|
||||
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
|
||||
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
|
||||
assert_eq!(
|
||||
recv.try_recv(),
|
||||
Ok(UnsolicitedResponse::Ok {
|
||||
|
|
@ -484,8 +489,9 @@ mod tests {
|
|||
})
|
||||
);
|
||||
assert_eq!(fetches.len(), 1);
|
||||
assert_eq!(fetches[0].message, 37);
|
||||
assert_eq!(fetches[0].uid, Some(74));
|
||||
let first = fetches.iter().next().unwrap();
|
||||
assert_eq!(first.message, 37);
|
||||
assert_eq!(first.uid, Some(74));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -494,17 +500,18 @@ mod tests {
|
|||
* LIST (\\HasNoChildren) \".\" \"INBOX\"\r\n\
|
||||
* 4 EXPUNGE\r\n";
|
||||
let (mut send, recv) = mpsc::channel();
|
||||
let names = parse_names(lines.to_vec(), &mut send).unwrap();
|
||||
let names = Names::parse(lines.to_vec(), &mut send).unwrap();
|
||||
|
||||
assert_eq!(recv.try_recv().unwrap(), UnsolicitedResponse::Expunge(4));
|
||||
|
||||
assert_eq!(names.len(), 1);
|
||||
let first = names.iter().next().unwrap();
|
||||
assert_eq!(
|
||||
names[0].attributes(),
|
||||
first.attributes(),
|
||||
&[NameAttribute::from("\\HasNoChildren")]
|
||||
);
|
||||
assert_eq!(names[0].delimiter(), Some("."));
|
||||
assert_eq!(names[0].name(), "INBOX");
|
||||
assert_eq!(first.delimiter(), Some("."));
|
||||
assert_eq!(first.name(), "INBOX");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -635,7 +642,7 @@ mod tests {
|
|||
let lines = b"* VANISHED (EARLIER) 3:8,12,50:60\r\n\
|
||||
* 49 FETCH (UID 117 FLAGS (\\Seen \\Answered) MODSEQ (90060115194045001))\r\n";
|
||||
|
||||
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
|
||||
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
|
||||
match recv.try_recv().unwrap() {
|
||||
UnsolicitedResponse::Vanished { earlier, uids } => {
|
||||
assert!(earlier);
|
||||
|
|
@ -651,10 +658,11 @@ mod tests {
|
|||
}
|
||||
assert!(recv.try_recv().is_err());
|
||||
assert_eq!(fetches.len(), 1);
|
||||
assert_eq!(fetches[0].message, 49);
|
||||
assert_eq!(fetches[0].flags(), &[Flag::Seen, Flag::Answered]);
|
||||
assert_eq!(fetches[0].uid, Some(117));
|
||||
assert_eq!(fetches[0].body(), None);
|
||||
assert_eq!(fetches[0].header(), None);
|
||||
let first = fetches.iter().next().unwrap();
|
||||
assert_eq!(first.message, 49);
|
||||
assert_eq!(first.flags(), &[Flag::Seen, Flag::Answered]);
|
||||
assert_eq!(first.uid, Some(117));
|
||||
assert_eq!(first.body(), None);
|
||||
assert_eq!(first.header(), None);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,16 @@ impl Fetches {
|
|||
pub fn iter(&self) -> Iter<'_, Fetch<'_>> {
|
||||
self.borrow_fetches().iter()
|
||||
}
|
||||
|
||||
/// Get the number of [`Fetch`]es in this container.
|
||||
pub fn len(&self) -> usize {
|
||||
self.borrow_fetches().len()
|
||||
}
|
||||
|
||||
/// Return true if there are no [`Fetch`]es in the container.
|
||||
pub fn is_empty(&self) -> bool {
|
||||
self.borrow_fetches().is_empty()
|
||||
}
|
||||
}
|
||||
|
||||
/// An IMAP [`FETCH` response](https://tools.ietf.org/html/rfc3501#section-7.4.2) that contains
|
||||
|
|
|
|||
|
|
@ -48,6 +48,16 @@ impl Names {
|
|||
pub fn iter(&self) -> Iter<'_, Name<'_>> {
|
||||
self.borrow_names().iter()
|
||||
}
|
||||
|
||||
/// Get the number of [`Name`]s in this container.
|
||||
pub fn len(&self) -> usize {
|
||||
self.borrow_names().len()
|
||||
}
|
||||
|
||||
/// Return true of there are no [`Name`]s in the container.
|
||||
pub fn is_empty(&self) -> bool {
|
||||
self.borrow_names().is_empty()
|
||||
}
|
||||
}
|
||||
|
||||
/// A name that matches a `LIST` or `LSUB` command.
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ fn inbox() {
|
|||
// let's see that we can also fetch the e-mails
|
||||
let fetch = c.fetch("1", "(ALL UID)").unwrap();
|
||||
assert_eq!(fetch.len(), 1);
|
||||
let fetch = &fetch[0];
|
||||
let fetch = fetch.iter().next().unwrap();
|
||||
assert_eq!(fetch.message, 1);
|
||||
assert_ne!(fetch.uid, None);
|
||||
assert_eq!(fetch.size, Some(138));
|
||||
|
|
@ -265,7 +265,7 @@ fn inbox_uid() {
|
|||
// let's see that we can also fetch the e-mail
|
||||
let fetch = c.uid_fetch(format!("{}", uid), "(ALL UID)").unwrap();
|
||||
assert_eq!(fetch.len(), 1);
|
||||
let fetch = &fetch[0];
|
||||
let fetch = fetch.iter().next().unwrap();
|
||||
assert_eq!(fetch.uid, Some(uid));
|
||||
let e = fetch.envelope().unwrap();
|
||||
assert_eq!(e.subject, Some(b"My first e-mail"[..].into()));
|
||||
|
|
@ -325,7 +325,7 @@ fn append() {
|
|||
// fetch the e-mail
|
||||
let fetch = c.uid_fetch(format!("{}", uid), "(ALL UID)").unwrap();
|
||||
assert_eq!(fetch.len(), 1);
|
||||
let fetch = &fetch[0];
|
||||
let fetch = fetch.iter().next().unwrap();
|
||||
assert_eq!(fetch.uid, Some(uid));
|
||||
let e = fetch.envelope().unwrap();
|
||||
assert_eq!(e.subject, Some(b"My second e-mail"[..].into()));
|
||||
|
|
@ -376,7 +376,7 @@ fn append_with_flags() {
|
|||
// fetch the e-mail
|
||||
let fetch = c.uid_fetch(format!("{}", uid), "(ALL UID)").unwrap();
|
||||
assert_eq!(fetch.len(), 1);
|
||||
let fetch = &fetch[0];
|
||||
let fetch = fetch.iter().next().unwrap();
|
||||
assert_eq!(fetch.uid, Some(uid));
|
||||
let e = fetch.envelope().unwrap();
|
||||
assert_eq!(e.subject, Some(b"My third e-mail"[..].into()));
|
||||
|
|
@ -436,7 +436,7 @@ fn append_with_flags_and_date() {
|
|||
// fetch the e-mail
|
||||
let fetch = c.uid_fetch(format!("{}", uid), "(ALL UID)").unwrap();
|
||||
assert_eq!(fetch.len(), 1);
|
||||
let fetch = &fetch[0];
|
||||
let fetch = fetch.iter().next().unwrap();
|
||||
assert_eq!(fetch.uid, Some(uid));
|
||||
assert_eq!(fetch.internal_date(), Some(date));
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue