extern crate markdown_toc; use markdown_toc::*; use std::str::FromStr; static TEST_DOC: &'static str = include_str!("test.md"); static OUTPUT: &'static str = include_str!("output"); #[test] fn test() { let content = String::from(TEST_DOC); let heads: Vec<_> = content .lines() .map(Heading::from_str) .filter_map(Result::ok) .collect(); let expected_vec: Vec<_> = OUTPUT.lines().collect(); let first_config = Config { bullet: "-".to_string(), indent: 2, ..Default::default() }; let second_config = Config { max_depth: Some(1), min_depth: 1, no_link: true, ..Default::default() }; let actual_vec: Vec<_> = heads .iter() .map(|h| format!("{}, {}", &h.title, &h.depth)) .chain(heads.iter().filter_map(|h| h.format(&first_config))) .chain(heads.iter().filter_map(|h| h.format(&second_config))) .collect(); assert_eq!(actual_vec.len(), expected_vec.len()); for (actual, expected) in actual_vec.into_iter().zip(expected_vec) { assert_eq!(actual, expected); } }