use crate::{ast::*, parser::parse_markdown};

#[test]
fn heading_v1() {
    let doc = parse_markdown("## a").unwrap();
    assert_eq!(
        doc,
        Document {
            blocks: vec![Block::Heading(Heading {
                kind: HeadingKind::Atx(2),
                content: vec![Inline::Text("a".to_owned())]
            })]
        }
    );
}

#[test]
#[should_panic]
fn heading_v1_no_space() {
    let doc = parse_markdown("##a").unwrap();
    assert_eq!(
        doc,
        Document {
            blocks: vec![Block::Heading(Heading {
                kind: HeadingKind::Atx(2),
                content: vec![Inline::Text("a".to_owned())]
            })]
        }
    );
}

#[test]
fn heading_v2() {
    let doc = parse_markdown("a\n==").unwrap();
    assert_eq!(
        doc,
        Document {
            blocks: vec![Block::Heading(Heading {
                kind: HeadingKind::Setext(SetextHeading::Level1),
                content: vec![Inline::Text("a".to_owned())]
            })]
        }
    );

    let doc = parse_markdown("a\n--").unwrap();
    assert_eq!(
        doc,
        Document {
            blocks: vec![Block::Heading(Heading {
                kind: HeadingKind::Setext(SetextHeading::Level2),
                content: vec![Inline::Text("a".to_owned())]
            })]
        }
    );
}
