From bb5c25d87fbb7a378c092d7514142dcda345961d Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Sat, 6 Jan 2018 03:09:24 +0200 Subject: [PATCH] Write unit tests for the itunes_duration_extension parser. --- hammond-data/src/parser.rs | 62 +++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/hammond-data/src/parser.rs b/hammond-data/src/parser.rs index 0bfa5e9..9f9299b 100644 --- a/hammond-data/src/parser.rs +++ b/hammond-data/src/parser.rs @@ -123,10 +123,70 @@ fn parse_itunes_duration(item: &Item) -> Option { mod tests { use std::fs::File; use std::io::BufReader; - use rss::Channel; + use rss; use super::*; + #[test] + fn test_itunes_duration() { + use rss::extension::itunes::ITunesItemExtensionBuilder; + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("3370".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(3370)); + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("6:10".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(370)); + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("56:10".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(3370)); + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("1:56:10".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(6970)); + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("01:56:10".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(6970)); + } + #[test] fn test_new_podcast_intercepted() { let file = File::open("tests/feeds/Intercepted.xml").unwrap();