1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#[cfg(test)]
mod toc {
use crate::*;
use crate::actions::deemphasise::DeEmphasise;
#[test]
fn collect_links() {
let ml = |t: &str| {
Link{ items: vec![EmOrText::Text(t.to_string())], ..Default::default() }
};
let mut doc = Doc {
navs: vec![
Nav {
links: vec![ml("nav0")],
subs: vec![
Nav {
links: vec![ml("nav1")],
..Default::default()
},
],
..Default::default()
},
],
items: vec![
DocItem::Section(Section {
items: vec![SectionItem::Paragraph(Paragraph {
items: vec![
ParagraphItem::Link(ml("par")),
ParagraphItem::List(List {
items: vec![Paragraph {
items: vec![ParagraphItem::Link(ml("list"))],
..Default::default()
}],
..Default::default()
}),
ParagraphItem::Table(Table {
rows: vec![TableRow {
items: vec![Paragraph {
items: vec![ParagraphItem::Link(ml("table"))],
..Default::default()
}],
..Default::default()
}],
..Default::default()
}),
],
..Default::default()
})],
..Default::default()
}),
],
..Default::default()
};
let mut iter = doc.links_mut(true).into_iter();
assert_eq!(&iter.next().unwrap().items.deemphasise(), "nav0");
assert_eq!(&iter.next().unwrap().items.deemphasise(), "nav1");
assert_eq!(&iter.next().unwrap().items.deemphasise(), "par");
assert_eq!(&iter.next().unwrap().items.deemphasise(), "list");
assert_eq!(&iter.next().unwrap().items.deemphasise(), "table");
}
}