Skip to content

Commit 826e6d4

Browse files
committed
Fix tests and examples.
1 parent 3f23314 commit 826e6d4

File tree

5 files changed

+66
-38
lines changed

5 files changed

+66
-38
lines changed

examples/gmail_oauth2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fn main() {
4242

4343
match imap_session.fetch("2", "body[text]") {
4444
Ok(msgs) => {
45-
for msg in &msgs {
45+
for msg in msgs.iter() {
4646
print!("{:?}", msg);
4747
}
4848
}

src/parse.rs

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -411,22 +411,23 @@ mod tests {
411411
fn parse_names_test() {
412412
let lines = b"* LIST (\\HasNoChildren) \".\" \"INBOX\"\r\n";
413413
let (mut send, recv) = mpsc::channel();
414-
let names = parse_names(lines.to_vec(), &mut send).unwrap();
414+
let names = Names::parse(lines.to_vec(), &mut send).unwrap();
415415
assert!(recv.try_recv().is_err());
416416
assert_eq!(names.len(), 1);
417+
let first = names.iter().next().unwrap();
417418
assert_eq!(
418-
names[0].attributes(),
419+
first.attributes(),
419420
&[NameAttribute::from("\\HasNoChildren")]
420421
);
421-
assert_eq!(names[0].delimiter(), Some("."));
422-
assert_eq!(names[0].name(), "INBOX");
422+
assert_eq!(first.delimiter(), Some("."));
423+
assert_eq!(first.name(), "INBOX");
423424
}
424425

425426
#[test]
426427
fn parse_fetches_empty() {
427428
let lines = b"";
428429
let (mut send, recv) = mpsc::channel();
429-
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
430+
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
430431
assert!(recv.try_recv().is_err());
431432
assert!(fetches.is_empty());
432433
}
@@ -437,19 +438,22 @@ mod tests {
437438
* 24 FETCH (FLAGS (\\Seen) UID 4827943)\r\n\
438439
* 25 FETCH (FLAGS (\\Seen))\r\n";
439440
let (mut send, recv) = mpsc::channel();
440-
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
441+
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
441442
assert!(recv.try_recv().is_err());
442443
assert_eq!(fetches.len(), 2);
443-
assert_eq!(fetches[0].message, 24);
444-
assert_eq!(fetches[0].flags(), &[Flag::Seen]);
445-
assert_eq!(fetches[0].uid, Some(4827943));
446-
assert_eq!(fetches[0].body(), None);
447-
assert_eq!(fetches[0].header(), None);
448-
assert_eq!(fetches[1].message, 25);
449-
assert_eq!(fetches[1].flags(), &[Flag::Seen]);
450-
assert_eq!(fetches[1].uid, None);
451-
assert_eq!(fetches[1].body(), None);
452-
assert_eq!(fetches[1].header(), None);
444+
let mut iter = fetches.iter();
445+
let first = iter.next().unwrap();
446+
assert_eq!(first.message, 24);
447+
assert_eq!(first.flags(), &[Flag::Seen]);
448+
assert_eq!(first.uid, Some(4827943));
449+
assert_eq!(first.body(), None);
450+
assert_eq!(first.header(), None);
451+
let second = iter.next().unwrap();
452+
assert_eq!(second.message, 25);
453+
assert_eq!(second.flags(), &[Flag::Seen]);
454+
assert_eq!(second.uid, None);
455+
assert_eq!(second.body(), None);
456+
assert_eq!(second.header(), None);
453457
}
454458

455459
#[test]
@@ -459,11 +463,12 @@ mod tests {
459463
* 37 FETCH (UID 74)\r\n\
460464
* 1 RECENT\r\n";
461465
let (mut send, recv) = mpsc::channel();
462-
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
466+
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
463467
assert_eq!(recv.try_recv(), Ok(UnsolicitedResponse::Recent(1)));
464468
assert_eq!(fetches.len(), 1);
465-
assert_eq!(fetches[0].message, 37);
466-
assert_eq!(fetches[0].uid, Some(74));
469+
let first = fetches.iter().next().unwrap();
470+
assert_eq!(first.message, 37);
471+
assert_eq!(first.uid, Some(74));
467472
}
468473

469474
#[test]
@@ -475,7 +480,7 @@ mod tests {
475480
* OK Searched 91% of the mailbox, ETA 0:01\r\n\
476481
* 37 FETCH (UID 74)\r\n";
477482
let (mut send, recv) = mpsc::channel();
478-
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
483+
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
479484
assert_eq!(
480485
recv.try_recv(),
481486
Ok(UnsolicitedResponse::Ok {
@@ -484,8 +489,9 @@ mod tests {
484489
})
485490
);
486491
assert_eq!(fetches.len(), 1);
487-
assert_eq!(fetches[0].message, 37);
488-
assert_eq!(fetches[0].uid, Some(74));
492+
let first = fetches.iter().next().unwrap();
493+
assert_eq!(first.message, 37);
494+
assert_eq!(first.uid, Some(74));
489495
}
490496

491497
#[test]
@@ -494,17 +500,18 @@ mod tests {
494500
* LIST (\\HasNoChildren) \".\" \"INBOX\"\r\n\
495501
* 4 EXPUNGE\r\n";
496502
let (mut send, recv) = mpsc::channel();
497-
let names = parse_names(lines.to_vec(), &mut send).unwrap();
503+
let names = Names::parse(lines.to_vec(), &mut send).unwrap();
498504

499505
assert_eq!(recv.try_recv().unwrap(), UnsolicitedResponse::Expunge(4));
500506

501507
assert_eq!(names.len(), 1);
508+
let first = names.iter().next().unwrap();
502509
assert_eq!(
503-
names[0].attributes(),
510+
first.attributes(),
504511
&[NameAttribute::from("\\HasNoChildren")]
505512
);
506-
assert_eq!(names[0].delimiter(), Some("."));
507-
assert_eq!(names[0].name(), "INBOX");
513+
assert_eq!(first.delimiter(), Some("."));
514+
assert_eq!(first.name(), "INBOX");
508515
}
509516

510517
#[test]
@@ -635,7 +642,7 @@ mod tests {
635642
let lines = b"* VANISHED (EARLIER) 3:8,12,50:60\r\n\
636643
* 49 FETCH (UID 117 FLAGS (\\Seen \\Answered) MODSEQ (90060115194045001))\r\n";
637644

638-
let fetches = parse_fetches(lines.to_vec(), &mut send).unwrap();
645+
let fetches = Fetches::parse(lines.to_vec(), &mut send).unwrap();
639646
match recv.try_recv().unwrap() {
640647
UnsolicitedResponse::Vanished { earlier, uids } => {
641648
assert!(earlier);
@@ -651,10 +658,11 @@ mod tests {
651658
}
652659
assert!(recv.try_recv().is_err());
653660
assert_eq!(fetches.len(), 1);
654-
assert_eq!(fetches[0].message, 49);
655-
assert_eq!(fetches[0].flags(), &[Flag::Seen, Flag::Answered]);
656-
assert_eq!(fetches[0].uid, Some(117));
657-
assert_eq!(fetches[0].body(), None);
658-
assert_eq!(fetches[0].header(), None);
661+
let first = fetches.iter().next().unwrap();
662+
assert_eq!(first.message, 49);
663+
assert_eq!(first.flags(), &[Flag::Seen, Flag::Answered]);
664+
assert_eq!(first.uid, Some(117));
665+
assert_eq!(first.body(), None);
666+
assert_eq!(first.header(), None);
659667
}
660668
}

src/types/fetch.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ impl Fetches {
7171
pub fn iter(&self) -> Iter<'_, Fetch<'_>> {
7272
self.borrow_fetches().iter()
7373
}
74+
75+
/// Get the number of [`Fetch`]es in this container.
76+
pub fn len(&self) -> usize {
77+
self.borrow_fetches().len()
78+
}
79+
80+
/// Return true if there are no [`Fetch`]es in the container.
81+
pub fn is_empty(&self) -> bool {
82+
self.borrow_fetches().is_empty()
83+
}
7484
}
7585

7686
/// An IMAP [`FETCH` response](https://tools.ietf.org/html/rfc3501#section-7.4.2) that contains

src/types/name.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,16 @@ impl Names {
4848
pub fn iter(&self) -> Iter<'_, Name<'_>> {
4949
self.borrow_names().iter()
5050
}
51+
52+
/// Get the number of [`Name`]s in this container.
53+
pub fn len(&self) -> usize {
54+
self.borrow_names().len()
55+
}
56+
57+
/// Return true of there are no [`Name`]s in the container.
58+
pub fn is_empty(&self) -> bool {
59+
self.borrow_names().is_empty()
60+
}
5161
}
5262

5363
/// A name that matches a `LIST` or `LSUB` command.

tests/imap_integration.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ fn inbox() {
147147
// let's see that we can also fetch the e-mails
148148
let fetch = c.fetch("1", "(ALL UID)").unwrap();
149149
assert_eq!(fetch.len(), 1);
150-
let fetch = &fetch[0];
150+
let fetch = fetch.iter().next().unwrap();
151151
assert_eq!(fetch.message, 1);
152152
assert_ne!(fetch.uid, None);
153153
assert_eq!(fetch.size, Some(138));
@@ -265,7 +265,7 @@ fn inbox_uid() {
265265
// let's see that we can also fetch the e-mail
266266
let fetch = c.uid_fetch(format!("{}", uid), "(ALL UID)").unwrap();
267267
assert_eq!(fetch.len(), 1);
268-
let fetch = &fetch[0];
268+
let fetch = fetch.iter().next().unwrap();
269269
assert_eq!(fetch.uid, Some(uid));
270270
let e = fetch.envelope().unwrap();
271271
assert_eq!(e.subject, Some(b"My first e-mail"[..].into()));
@@ -325,7 +325,7 @@ fn append() {
325325
// fetch the e-mail
326326
let fetch = c.uid_fetch(format!("{}", uid), "(ALL UID)").unwrap();
327327
assert_eq!(fetch.len(), 1);
328-
let fetch = &fetch[0];
328+
let fetch = fetch.iter().next().unwrap();
329329
assert_eq!(fetch.uid, Some(uid));
330330
let e = fetch.envelope().unwrap();
331331
assert_eq!(e.subject, Some(b"My second e-mail"[..].into()));
@@ -376,7 +376,7 @@ fn append_with_flags() {
376376
// fetch the e-mail
377377
let fetch = c.uid_fetch(format!("{}", uid), "(ALL UID)").unwrap();
378378
assert_eq!(fetch.len(), 1);
379-
let fetch = &fetch[0];
379+
let fetch = fetch.iter().next().unwrap();
380380
assert_eq!(fetch.uid, Some(uid));
381381
let e = fetch.envelope().unwrap();
382382
assert_eq!(e.subject, Some(b"My third e-mail"[..].into()));
@@ -436,7 +436,7 @@ fn append_with_flags_and_date() {
436436
// fetch the e-mail
437437
let fetch = c.uid_fetch(format!("{}", uid), "(ALL UID)").unwrap();
438438
assert_eq!(fetch.len(), 1);
439-
let fetch = &fetch[0];
439+
let fetch = fetch.iter().next().unwrap();
440440
assert_eq!(fetch.uid, Some(uid));
441441
assert_eq!(fetch.internal_date(), Some(date));
442442

0 commit comments

Comments
 (0)