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
62
63
64
65
|
use document_tree::{
elements as e,
element_categories as c,
HasChildren,
};
use crate::parse;
fn ssubel_to_section(ssubel: &c::StructuralSubElement) -> &e::Section {
match ssubel {
c::StructuralSubElement::SubStructure(ref b) => match **b {
c::SubStructure::Section(ref s) => s,
ref c => panic!("Expected section, not {:?}", c),
},
ref c => panic!("Expected SubStructure, not {:?}", c),
}
}
const SECTIONS: &str = "\
Intro before first section title
Level 1
*******
-------
Level 2
-------
Level 3
=======
L1 again
********
L3 again, skipping L2
=====================
";
#[test]
fn convert_skipped_section() {
let doctree = parse(SECTIONS).unwrap();
let lvl0 = doctree.children();
assert_eq!(lvl0.len(), 3, "Should be a paragraph and 2 sections: {:?}", lvl0);
assert_eq!(lvl0[0], e::Paragraph::with_children(vec![
"Intro before first section title".to_owned().into()
]).into(), "The intro text should fit");
let lvl1a = ssubel_to_section(&lvl0[1]).children();
assert_eq!(lvl1a.len(), 2, "The 1st lvl1 section should have (a title and) a single lvl2 section as child: {:?}", lvl1a);
//TODO: test title lvl1a[0]
let lvl2 = ssubel_to_section(&lvl1a[1]).children();
assert_eq!(lvl2.len(), 2, "The lvl2 section should have (a title and) a single lvl3 section as child: {:?}", lvl2);
//TODO: test title lvl2[0]
let lvl3a = ssubel_to_section(&lvl2[1]).children();
assert_eq!(lvl3a.len(), 1, "The 1st lvl3 section should just a title: {:?}", lvl3a);
//TODO: test title lvl3a[0]
let lvl1b = ssubel_to_section(&lvl0[2]).children();
assert_eq!(lvl1b.len(), 2, "The 2nd lvl1 section should have (a title and) a single lvl2 section as child: {:?}", lvl1b);
//TODO: test title lvl1b[0]
let lvl3b = ssubel_to_section(&lvl1b[1]).children();
assert_eq!(lvl3b.len(), 1, "The 2nd lvl3 section should have just a title: {:?}", lvl3b);
//TODO: test title lvl3b[0]
}
|