aboutsummaryrefslogtreecommitdiffstats
path: root/parser/src/conversion/tests.rs
blob: 8fcb408d55939c04752e2cddccb42ae2f7ef2d5b (plain)
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
use document_tree::{element_categories as c, elements as e, 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]
}