#![allow(clippy::unwrap_used, clippy::expect_used)]
use multilinear_parser::parse_multilinear;
fn event_names(source: &str) -> Vec<String> {
let info = parse_multilinear(source.as_bytes()).expect("source should parse");
let mut names: Vec<String> = info.events.iter().map(|(_, path)| path.join(" ")).collect();
names.sort();
names
}
#[test]
fn namespace_parent_is_not_an_event() {
let names = event_names(
"mood: calm\n\
\n\
# Chapter\n\
\n\
## Intro\n\
\n\
mood: calm > tense\n\
\n\
## Fight\n\
\n\
mood: tense\n\
\n\
# Epilogue\n\
\n\
mood: tense > calm\n",
);
assert_eq!(names, ["Chapter Fight", "Chapter Intro", "Epilogue"]);
}
#[test]
fn namespace_parent_with_conditions_is_an_event() {
let names = event_names(
"mood: calm\n\
\n\
# Chapter\n\
\n\
mood: calm > tense\n\
\n\
## Intro\n\
\n\
mood: tense\n",
);
assert_eq!(names, ["Chapter", "Chapter Intro"]);
}
#[test]
fn lonely_header_stays_an_event() {
let names = event_names(
"mood: calm\n\
\n\
# Lonely\n\
\n\
# Epilogue\n\
\n\
mood: calm\n",
);
assert_eq!(names, ["Epilogue", "Lonely"]);
}